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 :

Rappels de complexité


Sujet :

Algorithmes et structures de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 87
    Points : 46
    Points
    46
    Par défaut Rappels de complexité
    Bonjour,
    je ne savais vraiment pas ou poster ce sujet

    Bref j'ai un algorithme, d'une certaine complexité C :
    C = f(a)

    Théoriquement je calcule f en quelques points :
    C1 = f(100)
    C2 = f(1000)
    C3 = f(10000)
    C4 = f(100000)

    Et lorsque je fais les rapports entre ces résultats, je tombe sur :
    (C1 / C2) = (C2 / C3) = (C3 / C4) = 5

    Est ce que je peux dire que mon algorithme est linéaire ?
    Pourtant ma fonction f est quelque chose du genre : 50*log(log(A+..)) ?
    Est ce bien linéaire ? pourquoi pas logarithmique ?

    Ensuite, j'implémente mon algorithme, je calcule le temps d'execution et j'ai pour les memes entrées que précédemment (100,1000,10000,100000):

    (T1 / T2) = (T2 / T3) = (C3 / C4) = 5

    Bon j'en déduit que j'ai bien programmé mon algorithme,

    Pour etre clair, ce que je souhaite faire c'est vérifier que mon implémentation concorde bien avec la complexité théorique attendu.

    Dans ce cas ca semble le cas, mais si j'avais quelque chose comme :
    (T1 / T2) = (T2 / T3) = (C3 / C4) = 15

    Est ce que ca serait le cas également ? C'est linéaire, que je sois tombé sur la meme proportion, le meme facteur 5, est ce un coup de chance ?


    Si quelqu'un pouvait m'éclairer

    merci

  2. #2
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    Est ce bien linéaire ?
    Non pas tout à fait.

    pourquoi pas logarithmique ?
    Ca l'est puisque tu donnes la formule.

    Tu tombes sur des constantes parce qu'il existe au moins une courbe (et c'est là le pb) qui passe par ces points. Tu ne peux pas déduire une complexité à partir de si peu.

  3. #3
    Membre régulier
    Inscrit en
    Septembre 2007
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 114
    Points : 120
    Points
    120
    Par défaut
    Question idiote : Comment a tu trouver ta formule? Normalement on écrit un algo et on calcul sa complexité. On ne décide pas de la complexité d'un algo, pour ensuite testé si ce dernier la vérifie ou pas. non?

  4. #4
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut!
    C = f(a)
    Que représente pour toi la fonction f ?
    C1 = f(100)
    C2 = f(1000)
    C3 = f(10000)
    C4 = f(100000)
    Comment détermines-tu C1, C2, C3 et C4?

    Jean-Marc Blanc
    Calcul numérique de processus industriels
    Formation, conseil, développement

    Point n'est besoin d'espérer pour entreprendre, ni de réussir pour persévérer. (Guillaume le Taiseux)

  5. #5
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Tout d'abord, le type de complexité d'un algorithme donne un ordre de grandeur, pas une valeur précise. Du coup, essayer d'inférer un type de complexité par observation d'un petit échantillon de résultats n'est pas très fiable.

    Ensuite, il semble que tu t'intéresses à la complexité en temps d'une fonction f. Du coup, ce que l'on mesure, c'est souvent le nombre de lecture/écriture fait en mémoire ou sur disque, le nombre de comparaisons, etc. Bref, le nombre d'opérations couteuses en temps CPU ou I/O. En revanche, on ne s'intéresse pas du tout au résultat produit par la fonction en elle même.

    Or, toi, tu sembles considérer que la complexité de ta fonction EST le résultat de ladite fonction Que cette fonction réalise 50*log(log(A+..)) ou calcule une factorielle ou que sais-je d'autre n'a pas d'importance. La question est de savoir combien d'opérations couteuses en temps sont réalisées en rapport avec à la taille de la donnée en entrée. C'est seulement ce rapport qui te donne la complexité algorithmique.
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

Discussions similaires

  1. [IMPORTANT] Rappel des règles
    Par Community Management dans le forum C++
    Réponses: 4
    Dernier message: 11/12/2006, 23h11
  2. [IMPORTANT] Rappel des règles
    Par Geronimo dans le forum Outils pour C & C++
    Réponses: 3
    Dernier message: 21/08/2005, 09h05
  3. ASP rappeller une page
    Par pete007 dans le forum ASP
    Réponses: 2
    Dernier message: 02/04/2004, 15h41
  4. [debutant][JNI]Stocker des objet pour les rappeler plus tard
    Par Celenor dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 28/03/2004, 01h28
  5. Complexités
    Par victorracine dans le forum Algorithmes et structures de données
    Réponses: 29
    Dernier message: 07/09/2002, 16h13

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