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é] Encore une question de complexité


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut [Complexité] Encore une question de complexité
    Bonjour à tous..

    Je reviens vous voir pour un problème d'établissement de complexité théoique... Je m'y perds et je ne sais pas comment la nommer..

    Alors voilà le problème : soit un algo ayant 2 variables N et m, comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for ( i = 0 ; i < m ; i++ )
      {
         ..
         for ( j = 0 ; j < f(N) ; j++ )
             ...
      }
    f(N) est croissant avec N (du style log, ou log^i, mais avec une partie bien moins pentue que le log au départ, presque linéaire), mais f(N)/N est décroissant avec N, et se comporte grosso-modo comme 1/N.


    Comment dois-je exprimer la compleité : O ( m X )

    Mon problème est formaliser le X..

    Alors j'ai un peu la tête à l'envers et je vous demande votre aide avisée


    Je pensais un truc comme O ( m log^i N), (où log^i est le log itéré), mais je n'arrive pas à le tracer correctement sur un graphique pour en faire la preuve..

  2. #2
    Membre Expert
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Par défaut re
    Bonjour.

    Si f(N) ~ a/N alors la complexité de ton algo est en O(a.m/N).

    On est bien d'accord que lorsque tu dis que f se comptorte grosso modo comme 1/N, cela signifie que f(N)*N tend vers a ?

    Cdlt,


    edit : (je pense que j'ai mal compris ton message)

  3. #3
    Expert confirmé

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par prgasp77 Voir le message
    On est bien d'accord que lorsque tu dis que f se comptorte grosso modo comme 1/N, cela signifie que f(N)*N tend vers a ?
    oui, tout à fait..

    Cependant ;

    Citation Envoyé par prgasp77 Voir le message
    Si f(N) ~ a/N alors la complexité de ton algo est en O(a.m/N).
    est faux, puisque f(N) augmente avec N, ce qui est contredit par cette expression..

    en fait, on a :

    O ( m f(N) )

    où f(N) augmente avec N, mais f(N)/N diminue.

    Dans l'algo, je peux mesurer f(N). Je connais N et je constate ces résultats, que j'avais intuitevement trouvés : plus N augmente, plus la proportion de N que j'utilise est petite.. Le nombre effectif est cependant croissant, bien que tendant aysmptotiquement vers une limite..

    Donc la complexité sera quelque chose comme O (m g(N)) où g est une fonction croissante mais décroissante en valeur relative : c'est pour ça que je pensais à log^i N ..

  4. #4
    Membre Expert
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Par défaut
    Au temps pour moi. Et est-il possible d'avoir l'expression de f (si elle est exprimable) ou un graphe ou une table de valeurs ? Je serais heureux de chercher avec toi une expression g qui soit utilisable.

    Cdlt,

  5. #5
    Expert confirmé

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Alors voilà des graphes (l'expression n'est pas estimable suivant une équation : c'est un nombre de points sélectionnés dans un ensemble, suivant une borne sur les coordonées)

    Les 3 premiers repésentent seulement le f(N) en fonction de N, suivant diverses échelles (linéaire-linéaire pour le premier, log en X pour le seond, log des 2 axes pour le 3ième)

    Le dernier représente le f(N)/N, en échelle LOGARITHMIQUE sur les 2 axes. La courbe verte est le 1/N
    Images attachées Images attachées     

  6. #6
    Membre Expert
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Par défaut
    À voir tes graphes je me dis que tu as atteins les limites de la notation en grand o. Il s'agit en effet d'une complexité asymptotique ; qui ne s'intéresse qu'au comportement vers l'infini. Hors il semble que f soit approximable par une fonction linéaire par morceau.

    Par définition, la notation en grand o ne peut être représentative que pour le dernier morceau de f, s'il existe. Il te sera toujours possible de trouver une fonction g qui a un comportement proche de f, mais alors g sera équivalente audit dernier morceau de f, s'il existe.

    La question est donc, ce dernier morceau existe-t-il ? Si non, alors le problème reste valide (on peut trouver g tel que la complexité de ton algo O(m g(N)) soit pertinente. Si oui, alors je dirais que tu cours après une chimère .

    Je n'ai pas la moindre idée de comment déterminer si f se comporte affinement à partir d'un certain N. Serait-il possible de s'intéresser à la répartition des points à partir desquels est défini f ?

  7. #7
    Membre Expert Avatar de davcha
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 258
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    l'expression n'est pas estimable suivant une équation : c'est un nombre de points sélectionnés dans un ensemble, suivant une borne sur les coordonées
    Mais ces points ont une distribution qui suit une loi, non ?...

Discussions similaires

  1. Encore une question sur les Sous-Forums
    Par Swoög dans le forum Evolutions du club
    Réponses: 12
    Dernier message: 27/05/2006, 02h17
  2. Encore une question sur les ListBox !!
    Par SebRs dans le forum Windows
    Réponses: 3
    Dernier message: 09/05/2006, 15h29
  3. Encore une question, pour retrouver 2 valeur d'une table
    Par danje dans le forum Langage SQL
    Réponses: 5
    Dernier message: 15/09/2005, 00h11
  4. Encore une question licence
    Par Neilos dans le forum C++Builder
    Réponses: 4
    Dernier message: 27/01/2005, 09h48
  5. Encore une question sur malloc
    Par IG88 dans le forum C
    Réponses: 5
    Dernier message: 23/06/2004, 15h35

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