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é d'une boucle potentiellement infinie


Sujet :

Algorithmes et structures de données

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2003
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 36
    Points : 44
    Points
    44
    Par défaut Complexité d'une boucle potentiellement infinie
    Bonjour,
    J'ai une hésitation concernant la complexité d'une boucle dont ne sait pas quand elle s'arrêtera bien que probablement elle n'est pas infinie même si théoriquement rien ne l'interdit...

    Produire au hasard valeur entre 1 et 10
    Tant que valeur > 5
    Produire au hasard valeur entre 1 et 10
    Fin tant que


    Quelle serait la complexité de la boucle tant que puisqu'à priori rien n'interdit à la boucle d'être infinie même si en pratique ce n'est sans doute jamais le cas.
    Merci pour d'éventuels éclaircissements.

  2. #2
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 481
    Points
    3 481
    Par défaut
    je dirais ( 1 / n² )
    Mais j'ai ptet tort...
    K

  3. #3
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Sachant que la complexité est calculée dans le pire des cas, il est évident qu'ici elle est en O(infini)
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  4. #4
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    C'est quoi n ?
    D'un point de vue algorithmique, on en peut pas borner son temps d'exécution. D'un point de vue statistique, on peu donner une borne sup du temps d'exécution à x%.

  5. #5
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 481
    Points
    3 481
    Par défaut
    1) je suis nul en math
    2) je me suis dit que la chance que la condition soit vraie était divisée par 2 à chaque répétition de la boucle, d'où mon (1/n²) qui apparement était une ânerie ( bâtée )

    Promis je relierais des cours de complexité d'algorithmes...
    K

  6. #6
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    On peut calculer la complexité en moyenne, et ici elle est très visiblement :
    somme( n/2^n, n = 1 à +inf ) qui converge absolument.

    --
    Jedaï

  7. #7
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 481
    Points
    3 481
    Par défaut
    Quelqu'un aurait un lien sur le net pour se mettre à jour dans le domaine des calculs de complexité d'algorithmes ?
    K

  8. #8
    Membre confirmé
    Profil pro
    Directeur Scientifique
    Inscrit en
    Avril 2005
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur Scientifique

    Informations forums :
    Inscription : Avril 2005
    Messages : 419
    Points : 554
    Points
    554
    Par défaut
    Lorsqu'on a affaire à des algorithmes randomisés, on s'intéresse souvent à l'espérance du temps de calcul. On peut soit en calculer une estimation, soit en donner une borne supérieure.

    En général, l'estimation se fait en fonction de la taille des données fournies en entrée. Dans ton algo, il n'y a pas d'entrée, il est difficile d'exprimer une complexité en fonction de cette entrée. En revanche, on peut facile estimer l'espérance du nombre d'itérations de la boucle: c'est la loi de Poisson. Oups, je corrige, ce n'est pas la loi de Poisson mais bien la somme de la série n/2^n, comme dit ci-dessus! Cela donne 2.

  9. #9
    Membre éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    Citation Envoyé par sjrd
    Sachant que la complexité est calculée dans le pire des cas, il est évident qu'ici elle est en O(infini)
    No, car la génération aléatoire n'est que pseudo. Il faut voir quel est le cycle du générateur considéré.

    De plus, il n'y a pas de complexité à calculer dans cette algo qui ne dépend pas de paramêtres.... (statique vs dynamique)
    Nemerle, mathématicopilier de bars, membre du triumvirat du CSTM, 3/4 centre

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 417
    Points : 372
    Points
    372
    Par défaut
    Le mot 'complexité' m'a l'air tout à fait inapproprié ici. Il me semble que la seule chose qu'on puisse mesurer dans le cas de l'exemple est la probabilité d'arrêt après n tirages et encore en supposant, d'abord que les 10 valeurs sont équiprobables (système non biaisés) et deuxièmement que les tirages sont indépendant les uns des autres. Dans ce cas la probabilité d'arrêt après le n-ieme tirage est de 1 - (1/2^n).

  11. #11
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Pas mieux

  12. #12
    Membre du Club
    Inscrit en
    Septembre 2003
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 36
    Points : 44
    Points
    44
    Par défaut
    Merci, j'ai trouvé une solution dans un bouquin, il s'agit bien de calculer l'espèrance pour un algo randomisé :o

  13. #13
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    il y a ici une limite absolue
    c'est la mémoire disponible
    pour représenter le nombre obtenu .5^n jai besoin d'un système de notation
    ce nombre dépend du système de numération utilisé
    quand j'aurais saturé ma mémoire et mon disque je ne pourrais plus calculer la proba suivante faute de pouvoir la discrimer dans mon système
    de notation
    faute de proba dénombrable, je ne puis rien faire sauf racheter de la mémoire
    Elle est pas belle la vie ?

  14. #14
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Random : Il n'y a pas de limite dû au matériel (à part son vieillissement), son algorithme est en mémoire constante.

    --
    Jedaï

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

Discussions similaires

  1. Réponses: 18
    Dernier message: 26/04/2006, 11h39
  2. Une boucle infinie crontab
    Par tsing dans le forum Administration système
    Réponses: 10
    Dernier message: 10/04/2006, 10h28
  3. Select qui fais une boucle infinie
    Par MaitrePylos dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 28/03/2006, 17h29
  4. Réponses: 10
    Dernier message: 24/12/2005, 15h35
  5. [FTP] comment corriger une boucle infinie ?
    Par sofybj dans le forum Langage
    Réponses: 8
    Dernier message: 08/11/2005, 14h49

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