IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Explication sur les fréquences


Sujet :

Algorithmes et structures de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 27
    Points : 20
    Points
    20
    Par défaut Explication sur les fréquences
    Bonjour à tous,

    je suis tombé sur un algo pas très compliqué, mais j'ai du mal à comprendre l'explication de fréquence, voici l'ago:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    public static int count(int[] a) {
            int n = a.length;
            int count = 0;
            for (int i = 0; i < n; i++) {
    1]           for (int j = i+1; j < n; j++) {
    2]              for (int k = j+1; k < n; k++) {
    3]                   if (a[i] + a[j] + a[k] == 0) {
                            count++;
                        }
                    }
                }
            }
            return count;
        }
    et ils expliquent que les fréquences de calcul pour les 1], 2], 3] ème lignes sont:
    1] N
    2] N^2 / 2 - N/2
    3] N^3/6 - N^2/2 + N/3


    Je me demande pourquoi N^2 est divisé par 2, le N^3 par 6 et N par 3
    Ensuite pourquoi c'est N^3/6 - N^2/2 et pas N^3/6 + N^2/2 alors que c'est +N/3 ?


    Merci beaucoup :-)

    Adrien

  2. #2
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 054
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 054
    Points : 9 394
    Points
    9 394
    Par défaut
    On va regarder le comptage qui donne N²/2-N/2

    En fait, ce n'est pas vraiment une question d'algorithme, mais une question de maths.

    Recherche 'Somme des n premiers entiers', et tu tomberas assez vite sur la formule S(n) = n(n+1)/2. Dans notre exercice, on ne calcule pas tout à fait la somme des n premiers entiers, mais la somme des n-1 premiers entiers. Ce qui donne (n-1)n/2, ou encore n²/2-n/2.

    Et comment on tombe sur cette somme des n-1 premiers entiers ?
    Quand i vaut 0, j prend toutes les valeurs entre 1 et n-1, donc n-1 valeurs possibbles.
    Puis i vaut 1, j a alors n-2 valeurs possibles,
    Et ainsi de suite.
    Le nombre de passages dans cette boucle est donc (n-1)+(n-2)+ ... +2+1 : somme des n-1 premiers entiers.

    Pour le second calcul, c'est un peu plus compliqué.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  3. #3
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Bonjour

    Tu utilises 3 fois le mot "fréquence", mais je ne comprends pas ce que c'est. À mon avis, le terme est impropre.
    De la même façon, j'imagine que le grand N de ton texte est le petit n de ton code.
    Et la variable count n'a rien à voir avec la fonction count. Joyeuses Pâques à tous.



    Lorsque je lis le code, je vois un tableau d'entiers "a" et on tire 3 indices parmi N, pour faire la somme des valeurs du tableau à ces indices, indépendamment de l'ordre et sans répétition : c'est donc une combinaison.

    Formule mathématique
    Le reste, ce sont des simplifications.

    Libre à toi de calculer les étapes intermédiaires en tirant 1 parmi N, et 2 parmi N.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

Discussions similaires

  1. [NTFS]explication sur les type de droits
    Par arnolem dans le forum Sécurité
    Réponses: 6
    Dernier message: 19/04/2006, 12h52
  2. Besoin d'explications sur les charset
    Par EGPMS dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 03/02/2006, 15h38
  3. [RegEx] preg_replace : explications sur les caractères spéciaux
    Par Anduriel dans le forum Langage
    Réponses: 6
    Dernier message: 05/10/2005, 21h35
  4. Question sur les fréquences de RAM
    Par zakfa dans le forum Composants
    Réponses: 18
    Dernier message: 03/02/2005, 11h23
  5. recherches des cours ou des explications sur les algorithmes
    Par Marcus2211 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 19/05/2002, 22h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo