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 :

Complexité des boucles imbriquées


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Inscrit en
    Août 2009
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 52
    Par défaut Complexité des boucles imbriquées
    Bonjour,

    Je voudrais comprendre la complexité de:

    Pour i = n à 1 pas i div 2
    Pour j = 0 à i
    x = x+1

    et celle de:

    Tant que (n<>0)
    n=n div 10

    Pourriez-vous me donner une explication.

    Merci d'avance

  2. #2
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 226
    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 226
    Par défaut
    Tentons une explication. C'est un chapitre que je n'aime pas, je trouve qu'on donne trop d'importance à ce chapitre, qu'on l'aborde généralement en début de cursus, alors que c'est intéressant uniquement quand on devient vraiment un programmeur très avancé.
    La complexité d'un algorithme, c'est un indicateur qui dit comment va se comporter un programme quand les tailles des données manipulées augmentent.
    Commençons par le 2ème algorithme.
    Combien d'étapes de calcul y-a-t-il quand n vaut 10 millions ? Combien y en a-t-il quand n est plus grand, et vaut 100 millions, puis 1 milliard ?
    Jusque là, c'est facile.
    Est-ce que tu vois une formule mathématique qui donne ce nombre d'étapes à partir de n ? (là, faut être un peu plus matheux)

    Pour le 1er exercice, c'est le 1er calcul qui est un peu plus compliquée.
    Quand n vaut 1 Million, combien y a-t-il d'étapes,
    Pareil, quand n vaut 10 millions, ou 100 millions, combien y-a-t-il d'étapes ? (= combien de fois on passe par l'instruction qui est au coeur de la boucle )
    Et ensuite, il nous faut une formule mathématique qui donne ce nombre d'étapes, en fonction de n.

    On veut juste une formule approximative. Un ordre de grandeur. Quand n est grand, n² ou n²+5n par exemple, c'est pareil, on garde n² uniquement. 1000Milliards, ou 1000Milliards+5millions, on considère que c'est pareil, et on oublie les 5Millions.

  3. #3
    Membre Expert

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 643
    Par défaut Lent mais sûr
    Bonjour,

    En complément, il ne faut pas hésiter à prendre une feuille de papier et écrire les différentes étapes. L'alternative étant de faire tourner le programme chronomètre en main (dématérialisé bien sûr) sur des ordres de grandeurs élevés ce qui peut s'avérer assez trompeur ou long.

    Prenons par exemple le premier exercice. On regarde la boucle la plus externe étape par étape sans trop s'intéresser aux précisions de calcul (comme si n div 2 <=> n / 2). A chaque étape i passe à i - i/2 (boucle décroissante) soit i/2 :
    1: i = n, 2: i = n/2, 3: i = n/4,... t: i = n/2t, ... tmax=log2(n)]: n/2tmax=1. Le nombre d'étapes est tmax.
    Ensuite on regarde la boucle interne qui a i + 1 itérations pour chaque valeur de i. Le nombre total d'itérations est donc la somme des valeurs de i + tmax (on peut négliger ce dernier terme). En se rappelant que la série 1+1/2 + 1/4 + 1/8... converge vers 2 on trouve facilement la solution.

    Bon, je ne vais pas faire tout l'exercice

    Salutations

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Améliorer le temps d'exécution des boucles imbriquées
    Par alexmam15 dans le forum Débuter
    Réponses: 14
    Dernier message: 22/02/2011, 15h25
  2. [XL-2003] Positionnement de plusieurs If dans des boucles imbriquées
    Par kokoVBA dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 30/07/2009, 15h41
  3. [XL-2003] comment ecrire en vba des boucles imbriquées?
    Par doudou8mc dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/07/2009, 15h15
  4. macros utilisant des boucles imbriquées et sql :
    Par nostress dans le forum Macro
    Réponses: 10
    Dernier message: 22/05/2008, 17h08
  5. problème de syntaxe dans des boucles imbriquées
    Par deglingo37 dans le forum Access
    Réponses: 2
    Dernier message: 01/09/2006, 14h46

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