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'un algorithme


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2015
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Niger

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2015
    Messages : 58
    Par défaut Complexité d'un algorithme
    Bonjour à tous.
    J'ai 3 algos dont j'aimerais déterminer la complexité donc je viens vers vous pour y arriver.

    Algo 1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    t = 0
    i = 0
    while i × i < N do
    t = t + i
    i = i + 1
    return t
    Selon moi l'algo optimise au maximum le nombre d'itérations à effectuer donc du coup je déduit que la complexité est O(logN) mais je ne suis pas sûr de moi.

    Algo 2 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    t = 0
    i = 1
    while log<sub>2</sub>i < N do
    t = t + i
    i = i + 1
    return t
    Là comme log2i = 0 la condition est toujours vérifiée donc boucle infinie ce qui m'amène à supposer que la complexité est O(infini) à moins que N soit négatif ce qui ne peut jamais être le cas en algorithmique.Là aussi je ne suis pas sûr de moi.

    Algo 3 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    t = 0
    for i allant de 1 `a n do
    j = 1
    while log<sub>2</sub>j < i do
    t = t + j
    j = j + 1
    return t
    Dans ce 3ème algo je vois 2 boucles imbriquées et il me semble que la 2ème est infinie mais je n'arrive pas à me faire une idée de sa complexité.

    D'avance merci pour vos éclaircissement.

  2. #2
    Membre Expert
    Homme Profil pro
    sans emploi
    Inscrit en
    Janvier 2014
    Messages
    539
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2014
    Messages : 539
    Par défaut
    Citation Envoyé par Ja Rasta Voir le message
    Algo 1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    t = 0
    i = 0
    while i × i < N do
    t = t + i
    i = i + 1
    return t
    Selon moi l'algo optimise au maximum le nombre d'itérations à effectuer donc du coup je déduit que la complexité est O(logN) mais je ne suis pas sûr de moi.
    Bonjour,
    Il faut bien indenter même quand c'est du pseudo-code, je vais partir du principe que tu cherches la compléxité temporelle, que l'algo est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    t = 0
    i = 0
    while i × i < N do
        t = t + i
        i = i + 1
    return t
    et aussi que toutes les opérations (assignation, opérations arithmétiques, etc …) se font en temps constant.
    La complexité d'une ligne est la complexité de l'opération effectuée sur cette ligne.
    La complexité d'une boucle est la complexité de l'intérieur de la boucle multiplié par le nombre de tours de boucle.
    Les lignes 1,2 et 6 sont en temps constant, tout comme les lignes 4 et 5. Mais les lignes 4 et 5 sont dans une boucle qui fait √N tours (à prouver évidemment mais bon … on incrémente i de 1 jusqu'à atteindre √N).
    La complexité temporelle de cet algo (sous les hypothèses que j'ai faites) est donc en O(√N), elle est même en 𝛩(√N).

    Citation Envoyé par Ja Rasta Voir le message
    Algo 2 :
    ...

    Algo 3 :
    ...

    D'avance merci pour vos éclaircissement.
    Je te laisse refaire les deux autres

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2015
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Niger

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2015
    Messages : 58
    Par défaut
    Salut,

    Citation Envoyé par picodev Voir le message
    La complexité temporelle de cet algo (sous les hypothèses que j'ai faites) est donc en O(√N), elle est même en 𝛩(√N).
    S'il vous plaît pouvez-vous m'expliquer la différence entre O(√N) et 𝛩(√N)?et si possible avec un exemple à l'appui puisque j'ai des problèmes avec ces annotations

    Citation Envoyé par dorinf
    (j'ai remplacé le symbole inférieur < par inférieur ou égal <= car sinon j'ai une erreur dans mes formules latex, mais il faut lire des <).
    Est-ce que ça veut dire que j'ai bien raison avec le signe < nous sommes à une exécution sans fin et que la complexité peut bien être O(infini)?

    Merci d'avance!!!

  4. #4
    Membre Expert
    Homme Profil pro
    sans emploi
    Inscrit en
    Janvier 2014
    Messages
    539
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2014
    Messages : 539
    Par défaut
    Citation Envoyé par Ja Rasta Voir le message
    S'il vous plaît pouvez-vous m'expliquer la différence entre O(√N) et 𝛩(√N)?et si possible avec un exemple à l'appui puisque j'ai des problèmes avec ces annotations
    Voit ça comme un encadrement :
    O → signifie que la complexité est bornée «au-dessus» = au pire ça ne pouura pas être plus
    𝛩 → signifie que la complexité est bornée «au-dessus» et «en-dessous» = c'est exactement
    𝛺 →signifie que la complexité est bornée «en-dessous» = au mieux ça ne pourra pas être moins

    Citation Envoyé par Ja Rasta Voir le message
    Est-ce que ça veut dire que j'ai bien raison avec le signe < nous sommes à une exécution sans fin et que la complexité peut bien être O(infini)?

    Merci d'avance!!!
    O(∞) ça n'existe pas. Tes algos terminent, essaye de les dérouler à la main pour visualiser combien d'opérations tu effectues.
    Les deux autres algo sont en O(2ⁿ) pour te donner une indication.

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2015
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Niger

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2015
    Messages : 58
    Par défaut
    Merci beaucoup.ça m'a vraiment aidé.

  6. #6
    Expert confirmé

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 761
    Billets dans le blog
    21
    Par défaut
    Bonjour,

    Pour l'algo 1, je dirais que la complexité est en Formule mathématique, puisque la condition de boucle est i²<n et que i est incrémenté de 1 à chaque fois.

    Pour l'algo 2, je dirais que la complexité est en Formule mathématique, puisque la condition Formule mathématique peut s'écrire Formule mathématique et que i est toujours incrémenté de 1. (j'ai remplacé le symbole inférieur < par inférieur ou égal <= car sinon j'ai une erreur dans mes formules latex, mais il faut lire des <).

    Pour l'algo 3, au pire la complexité est en Formule mathématique, mais il est sans doute possible de raffiner un peu...

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

Discussions similaires

  1. Complexité de l'algorithme de multiplication matricielle de strassen
    Par judge06 dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 09/07/2007, 07h27
  2. Complexité de l'algorithme de multiplication de Karatsuba
    Par judge06 dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 27/03/2007, 12h02
  3. Complexité de l'algorithme de Tri Fusion
    Par judge06 dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 26/03/2007, 22h04
  4. [Complexité d'un algorithme] Triangle de Sierpinski
    Par Opérateur dans le forum Algorithmes et structures de données
    Réponses: 18
    Dernier message: 18/12/2006, 15h25
  5. complexité d'un algorithme par un...algorithme??
    Par afrikha dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 02/11/2005, 00h59

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