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 :

exemple complexités linéaires


Sujet :

Algorithmes et structures de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 15
    Points : 20
    Points
    20
    Par défaut exemple complexités linéaires
    bien le salut a vous
    voila je suis sur un cour d'algo et je n'arrive pas a assimilé ce que c'est qu'un exemple de compléxité linéaires?
    quelqu'un peut-il me l'expliqué svp?
    amicalement adel

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    pour tout i de 0 à N
       result = result + i
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  3. #3
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    pour tout i de 0 à N
       result = result + i
    Alors je vais faire mon chiant, mais pour moi, cet algo est de complexité exponentielle et non linéaire.

    On dit qu'une complexité est linéaire si la complexité est en O(t) ou t est la taille de l'entrée. Comme la taille d'un entier n est en t= log(n), la complexité est donc O(n) = O(exp(t)), et donc exponentielle par rapport à la taille de l'entrée.



    En revanche, l'algo suivant est de complexité linéaire car l'entrée est un tableau de taille n :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Entrée : tableau de taille n
     
    Pour i= 0 à taille(tableau)
       ....
    Je ne répondrai à aucune question technique en privé

  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 millie Voir le message
    On dit qu'une complexité est linéaire si la complexité est en O(t) ou t est la taille de l'entrée.
    ???

    Je ne vois pas pourquoi "entrée" serait forcément synonyme de "longueur" d'un tableau ou d'un champ de bits
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  5. #5
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    ???

    Je ne vois pas pourquoi "entrée" serait forcément synonyme de "longueur" d'un tableau ou d'un champ de bits
    Je veux dire que quand on parle de complexité polynomiale, linéaire, exponentielle, c'est toujours par rapport à la taille de l'entrée (ou de l'instance ou de la donnée).

    Après, on parle de complexité suivant ce qu'on veut.
    L'exemple de souviron est linéaire par rapport à n. Mais n'est pas à proprement parler linéaire tout court.

    Bon, c'est nase, mais dire que l'algorithme est de complexité polynomiale (classe P) est différent de dire qu'il est de complexité polynomiale par rapport à n (enfin, classe P, c'est pour les problèmes et non les algorithmes)

    Toute façon, c'est l'heure de l'apéro
    Je ne répondrai à aucune question technique en privé

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par millie Voir le message
    Toute façon, c'est l'heure de l'apéro
    je pense que ça devrait être du café, plutôt...


    Citation Envoyé par millie Voir le message
    Alors je vais faire mon chiant, mais pour moi, cet algo est de complexité exponentielle et non linéaire.
    ....



    Soit le code :

    Citation Envoyé par souviron34 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    pour tout i de 0 à N
       result = result + i
    et le code :

    Citation Envoyé par millie Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Entrée : tableau de taille n
     
    Pour i= 0 à taille(tableau)
       ....
    Si je dis que mon tableau est de taille N , et que je veux en faire la somme, je pars de ton code , et je remplace tes points de suspension par s=tab[n]+s... et j'arrive au mien, avec la même complexité.... linéaire..
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  7. #7
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Pour le PO :
    voici un algo qui calcule la somme des éléments d'un tableau T de N éléménts (tableau qui commence à l'indice 0) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    resultat := 0
    Pour i = 0 à N-1
      resultat = resultat + T[i]
    Fin Pour
    où T[i] est donc le (i+1)-ème élément du tableau.

    Linéaire car le temps nécessaire pour calculer ceci est une fonction de la taille du tableau (et non pas du carré de la taille du tableau, de l'exponentielle de la taille du tableau, ...) : si l'on multiplie par 2 la taille du tableau, l'algorithme mettra 2 fois le temps qu'il mettait dans le cas précédent.

  8. #8
    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!
    si l'on multiplie par 2 la taille du tableau, l'algorithme mettra 2 fois le temps qu'il mettait dans le cas précédent.
    Théoriquement ...
    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)

  9. #9
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Citation Envoyé par FR119492 Voir le message
    Salut!

    Théoriquement ...
    Jean-Marc Blanc
    Oui oui, biensûr. J'ai hésité à rajouter "grossièrement" dans ma phrase.

  10. #10
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    avec la même complexité.... linéaire..
    Quand on parle d'algorithme de complexité linéaire. Et pas de complexité linéaire en fonction de quelque chose, c'est qu'on parle par rapport à la taille de l'entrée. Car parler de complexité linéaire tout court n'aurait pas de sens si ce n'était pas en fonction de quelque chose.

    Tout comme la classe P correspond à l'ensemble des problèmes que l'on peut résoudre par un algorithme de complexité polynomiale par rapport à la taille de l'entrée.

    D'un côté, on a en entrée un entier n de taille log2(n) et de l'autre un tableau de taille n. Donc la complexité par rapport à la taille de l'entrée est différente. Mais les 2 complexités sont linéaires en fonction de n.
    Je ne répondrai à aucune question technique en privé

  11. #11
    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 millie Voir le message
    Quand on parle d'algorithme de complexité linéaire. Et pas de complexité linéaire en fonction de quelque chose, c'est qu'on parle par rapport à la taille de l'entrée. Car parler de complexité linéaire tout court n'aurait pas de sens si ce n'était pas en fonction de quelque chose.
    Certes. C'est un peu tiré par les cheveux quand même.

    La notation usuelle de la complexité linéaire étant O(n), il n'y a pas d'ambiguïté sur l'entrée "n" dont on parle.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  12. #12
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    J'ai précisé :

    je vais faire mon chiant
    Je ne répondrai à aucune question technique en privé

  13. #13
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    certes..

    Mais le PO pose une question banale, la réponse devrait être simple..

    Et elle l'est..

    Je sais bien que Jussieu a eu le prix Ignobel de Physique il y a peu pour avoir étudié pourquoi les spaghettis se cassaient plus qu'en 2 quand on les pliaient, mais ce n'est pas une raison pour faire dériver un sujet simple en une abracadabrantesque élucubration sur le sens du mot "complexité"...
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 55
    Points : 61
    Points
    61
    Par défaut
    Bonjour,

    alors si on chipote comme ca (meme si sur le fond je suis d'accord avec millie pour dire qu'une complexité lineaire ne veut rien dire si on ne dit pas en quel parametre), on devrait plutot dire que la complexité d'une somme de 2 entiers x et y est en O(log2(max{x,y})). Dans notre cas, result vaut au maximum n(n+1)/2 donc l'operation a l'interieur de la boucle se fait en O(log2(n^2)) ce qui equivaut en O(log2(n)). Cette operation se faisant n fois, on a au final que l'algo est en O(n*log2(n)). Donc l'algo est quasi-lineaire en le nombre n. Mais il est evident que l'on considere souvent les operations de bases comme se faisant en temps constant d'ou le fait que l'on dit que c'est lineaire en n tout court.

    Et puis apres il faut alors aussi chipoter sur : est ce que l'on est sur une machine de turing deterministe ou non-deterministe ? Car un algo en O(exp(n)) sur une MTD devient O(n) sur une MTND.

    Si on devait tout preciser lorsque l'on parle de complexité... ca deviendrait lourd.

  15. #15
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Ca fait 2 fois que vous parlez de PO. C'est quoi ?
    Je ne répondrai à aucune question technique en privé

  16. #16
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Posteur Original, celui qui a créer ce sujet quoi

Discussions similaires

  1. Réponses: 3
    Dernier message: 30/06/2017, 11h04
  2. Réponses: 1
    Dernier message: 28/12/2012, 16h09
  3. exemple de complexité en moyenne
    Par bazoga dans le forum Algorithmes et structures de données
    Réponses: 19
    Dernier message: 19/05/2011, 15h45
  4. recherche exemple simple pour corba en c++
    Par Pinggui dans le forum CORBA
    Réponses: 4
    Dernier message: 06/05/2002, 11h29

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