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

Mathématiques Discussion :

Calcul Complexité Algorithme


Sujet :

Mathématiques

  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    538
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 538
    Points : 262
    Points
    262
    Par défaut Calcul Complexité Algorithme
    BOnjour,

    J'ai besoin d'aide pour calculer la complexité de mon algorithme :

    Soit n, p et m des entiers.
    Soit H un graphe composé de n+1 sommets notés (0, 1, 2, ..., n).

    Voila le code minimal :

    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
    16
    17
    18
     
    L0 = [0, 0, ..., 0] // De taille 'p'
    Poser L0 sur le nœud 0;
    Pour i = 0 à n faire
        Pour j = i + 1 à n faire
            Pour chaque label Li du nœud i faire
                Pour t = 1 à p faire
                    Si Li[t] + 1 <= m
                        Lnew = Li; Lnew[t] += 1;
                        Pour chaque label Lj du noeud j faire
                            // Appliquer un algorithme en o(m)
                        fait
                        Poser Lnew sur le noeud j;
                    fsi
                fait
            fait
        fait
    fait
    Merci.

  2. #2
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Pour I = constante à N faire
      X
    fait
    
    Ce code fait, au maximum, N fois l'opération "X".
    Il a donc une complexité en o( N*Complexité(X) )

    Si on applique ce principe a ton code, on obtient une complexité en o( n*n*size(label)*p*size(label)*m )
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #3
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    538
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 538
    Points : 262
    Points
    262
    Par défaut
    D'accord mais le nombre de label sur un noeud dépend de m et n. On doit pouvoir le calculer. De plus il y a un test "Si". Du coup les deux dernières boucles ne doit pas être prit en compte à chaque fois.

  4. #4
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par CliffeCSTL Voir le message
    D'accord mais le nombre de label sur un noeud dépend de m et n. On doit pouvoir le calculer.
    On ne cherche pas a le calculer, mais a le majorer. Combien peut-il y avoir de labels, au maximum du maximum ? N ?

    De plus il y a un test "Si". Du coup les deux dernières boucles ne doit pas être prit en compte à chaque fois.
    idem. On cherche un majorant. Le cas le plus défavorable c'est lorsqu'on passe toujours dans le "Si".
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  5. #5
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    538
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 538
    Points : 262
    Points
    262
    Par défaut
    Je suis pas d'accord. Le cas ou on passe tjr dans le "Si" n'existe pas. Je cherche à donner le résultat exacte.

    J'ai déjà donné l'algo dans le pire des cas.

  6. #6
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par CliffeCSTL Voir le message
    Je suis pas d'accord. Le cas ou on passe tjr dans le "Si" n'existe pas. Je cherche à donner le résultat exacte.
    Il n'y a pas de "résultat exact" en complexité. Juste des ordres de grandeur, servant a classer un algo par rapport à un autre.

    Le quickSort est en o(N^100). Il est au aussi en o(N^2). Et le plus souvent, sous certaines contraintes usuelles, en o(N.Log(N)). Le MergeSort est lui toujours en o(N.Log(N)). Pourtant, dans les faits, il est généralement moins rapide que le QuickSort.

    Tout ce qu'on peut dire, c'est que ces deux algos ont une compléxité moyenne équivalente. Et c'est à cela que sert le calcul de compléxité.

    Si tu veux avoir un "résultat exact", il faut une implémentation, des sets de données et faire un benchmark.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  7. #7
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    538
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 538
    Points : 262
    Points
    262
    Par défaut


    Si j'ai un algo du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Pour i = 1 à N faire
        Si i = 1 alors
            // Algo en o(m)
        fsi
    fait
    La complexité pour toi est en o(N*m) ? pour moi c'est du o(m) ...

  8. #8
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par CliffeCSTL Voir le message
    La complexité pour toi est en o(N*m) ? pour moi c'est du o(m) ...
    La complexité s'exprime en fonction de la taille des données d'entrée.

    Le tri d'un tableau de taille N se fait en o(N.log N) comparaisons avec un MergeSort.


    Si l'algorithme requiert des paramètres additionnels pour s'exécuter, ceux-ci peuvent être utilisés comme paramètres dans la formulation de la complexité

    La recherche du k-ième plus grand élément d'un tableau de taille N se fait en o(k.N) comparaisons avec un SelectionSort.


    Bien sur, c'est a toi de décider quels sont les paramètres d'entrée et quelles sont les "constantes" dans ton algo. Le pseudo-code de ton premier post ne m'a pas permis de différencier les 2.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  9. #9
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    538
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 538
    Points : 262
    Points
    262
    Par défaut
    p et m constantes.

    J'ai mis ça : o(n^2p^{2m+1}m) mais j'aime pas trop.

  10. #10
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par CliffeCSTL Voir le message
    p et m constantes.

    J'ai mis ça : o(n^2p^{2m+1}m) mais j'aime pas trop.
    moi j'avais o( n*n*size(label)*p*size(label)*m ).

    En considérant qu'au pire cas, on a autant de labels que de noeuds (size(label)< =n), ca donne: o( n^4 . p . m )
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

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

Discussions similaires

  1. Calculer la complexité d'un algorithme
    Par soussou80 dans le forum Algorithmes et structures de données
    Réponses: 34
    Dernier message: 02/11/2014, 19h53
  2. Calcul Complexité au pire des cas
    Par kays86 dans le forum Mathématiques
    Réponses: 0
    Dernier message: 19/11/2013, 11h28
  3. Complexité algorithme de Viterbi
    Par bhsoussou dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 01/01/2013, 22h44
  4. calcul de la complexité d'un algorithme de Djikstra
    Par asmaaya10 dans le forum Algorithmes et structures de données
    Réponses: 0
    Dernier message: 12/04/2010, 16h05

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