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 :

Etude de complexité: les bases ?


Sujet :

Algorithmes et structures de données

  1. #1
    Membre averti

    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 418
    Points : 328
    Points
    328
    Par défaut Etude de complexité: les bases ?
    Bonjour à tous.

    Je dois faire l'étude de complexité de mon application (ou plutôt, d'une partie de l'algo), mais je n'y connais pas grand chose.

    Je me suis un peu documenté sur le sujet, mais il reste de grande zones d'ombres :
    - les O, o, petit et grand oméga : représentent-ils des informations complémentaires, ou différents cas de complexité ?
    - quelles "opérations fondamentales" prendre en compte ?


    En effet, la base de l'algo est simple : c'est une itération sur les noeuds d'un arbre. A chaque noeud, je fais quelques opérations.
    Mais dans les documents que j'ai lus, les exemples traités utilisent des types de données et d'opérations "simples". Les opérations fondamentales sont des comparaisons de valeurs, des calculs simples et des affectations de valeurs.. Mais quand on travaille sur des objets plus "complexes", ce type d'opérations arrivent dès l'instanciation de l'un d'eux, avant même qu'on les manipule !!
    Donc en terme de complexité
    int i <- 10
    et
    ObjetComp obj <- new ObjetComp(p1, p2);
    ne peuvent pas être équivalents.

    Faut-il alors définir l'instanciation d'un objet comme l'ensemble des opérations de plus bas niveau qu'il exige ? De même pour chaque fonctions ?

  2. #2
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    644
    Détails du profil
    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 644
    Points : 754
    Points
    754
    Par défaut
    les O, o, petit et grand oméga
    voir notations de Landau

    par exemple
    http://perso.orange.fr/megamaths/oral1/cfon0006.pdf

  3. #3
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par marchand_de_sable
    Faut-il alors définir l'instanciation d'un objet comme l'ensemble des opérations de plus bas niveau qu'il exige ? De même pour chaque fonctions ?
    Oui.

  4. #4
    Membre averti

    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 418
    Points : 328
    Points
    328
    Par défaut

    Ca va pas être une partie de plaisir...

    Du coup, je reformule ma 2ème question, ce n'est pas "qelles opérations fondamentales prendre en compte", mais plutôt "quelles sont les opérations de plus bas niveau" ?
    Par exemple :
    a <- (b+c)/d
    c'est 1, 2 ou 3 opérations ? (1 calcul ? 1 addition + 1 division ? 1 addition + 1 division + 1 affectation ?)

  5. #5
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par marchand_de_sable
    a <- (b+c)/d
    c'est 1, 2 ou 3 opérations ? (1 calcul ? 1 addition + 1 division ? 1 addition + 1 division + 1 affectation ?)
    C'est un nombre constant d'operations (du moins tant que b, c et d ne designent pas des entiers non bornes, des matrices ou autres choses qui feraient que le temps pour calculer a pourrait varier de maniere non bornee), c'est tout ce qui compte quand on parle de complexite.

  6. #6
    Membre averti

    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 418
    Points : 328
    Points
    328
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet
    tout ce qui compte quand on parle de complexite.
    J'ai encor bien du mal à faire la part des choses...

    Mais ça vient petit à petit...

    Sinon, autre question : quand des instructions dépendent d'une condition (dans un "si" ou un "tant que"), j'ai vu qu'on pouvait (devait ?) calculer les coûts min et max. Mais quand plusieurs conditions sont imbriquées, les valeurs trouvées risquent de ne plus avoir de lien avec les valeurs en pratique (par exemple, si on trouve des bornes min et max à 0 et + l'infini, on n'est pas bien avancé...)...Que doit-on faire dans ces cas-là ?

    Et un dernier petit renseignement pour la route : tous les documents que j'ai trouvé ne parlent que de complexité en temps, mais rien sur la complexité en espace. Vous n'auriez pas des infos là-dessus ?

  7. #7
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par marchand_de_sable
    J'ai encor bien du mal à faire la part des choses...

    Mais ça vient petit à petit...

    Sinon, autre question : quand des instructions dépendent d'une condition (dans un "si" ou un "tant que"), j'ai vu qu'on pouvait (devait ?) calculer les coûts min et max. Mais quand plusieurs conditions sont imbriquées, les valeurs trouvées risquent de ne plus avoir de lien avec les valeurs en pratique (par exemple, si on trouve des bornes min et max à 0 et + l'infini, on n'est pas bien avancé...)...Que doit-on faire dans ces cas-là ?

    Et un dernier petit renseignement pour la route : je n'est p

    0 est une constante comme une autre

    Quand le code dans les branches n'a pas une duree d'execution constante, il y a plusieurs approches. Prendre le pire des cas. Reussir a connaitre la repartition statistique et donc a avoir une duree d'execution "en moyenne".

  8. #8
    Membre averti

    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 418
    Points : 328
    Points
    328
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet
    0 est une constante comme une autre
    + l'infini aussi ?
    Citation Envoyé par Jean-Marc.Bourguet
    Quand le code dans les branches n'a pas une duree d'execution constante, il y a plusieurs approches. Prendre le pire des cas. Reussir a connaitre la repartition statistique et donc a avoir une duree d'execution "en moyenne".
    C'est ce que j'avais vu...
    Mais là encor, ça va être difficile de déterminer une répartition statistique qui soit représentative (je veux dire par là, qui ne soit pas dépendante d'un domaine spécifique dans lequel peut tourner mon appli...)

    En tout cas, merci pour vos réponses.
    Je vais essayer d'avancer avec tout ça.

    Pour la complexité en espace, des infos ?

    Encor merci.
    A+

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

Discussions similaires

  1. connaitre les bases qui existes
    Par nycagi dans le forum Administration
    Réponses: 13
    Dernier message: 08/06/2004, 12h29
  2. Les Bases de Données! tout un monde!!
    Par kikimnet dans le forum Bases de données
    Réponses: 3
    Dernier message: 29/04/2004, 18h26
  3. Lister les bases
    Par Neuromancien2 dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 26/01/2004, 09h12
  4. Réponses: 1
    Dernier message: 01/08/2002, 21h09

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