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 :

Recherche dans une liste non trié


Sujet :

Algorithmes et structures de données

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    849
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 849
    Points : 295
    Points
    295
    Par défaut Recherche dans une liste non trié
    Quel est le meilleur algorithme utilisé pour faire la recherche d'un élèment dans une liste non trié ?

  2. #2
    Membre confirmé
    Avatar de Higgins
    Inscrit en
    Juillet 2002
    Messages
    520
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 520
    Points : 543
    Points
    543
    Par défaut
    Dans une liste non triée, tu es obligé de la parcourir entièrement puis qu'aucun élément ne te permet d'être sûr que l'objet recherché n'existe pas plus loin.
    7 fois à terre, 8 fois debout

  3. #3
    Membre éclairé Avatar de nako
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2003
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2003
    Messages : 577
    Points : 663
    Points
    663
    Par défaut
    bon la liste n'est pas triée ...
    tu n'as pas d'infos supplémentaires sur ta liste ?
    si non, alors tu prends un à un les éléments de ta liste et tu t'arrêtes quand tu as trouvé l'élément cherché ...
    je vois que ça.

  4. #4
    Membre éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    Si ta question veut dire quel est le meilleur algo pour trouver statistiquement le plus vite possible un element dans un paquet, la réponse est.... aléatoirement (sisi, c'est vrai).

    Maintenant, l'aléatoirement n'est bien sur pas acceptable (le risque de passer 100 ans avant de trouver ), et donc fais-le séquentiellement.

    Mais l'aléatoire reste le meilleur algo.
    Nemerle, mathématicopilier de bars, membre du triumvirat du CSTM, 3/4 centre

  5. #5
    Membre habitué
    Inscrit en
    Août 2004
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 113
    Points : 127
    Points
    127
    Par défaut
    Dans une structure séquentielle, tu ne peux que faire un parcours séquentiel.

    La recherche d'un élément parmi n : 0(n)

    Si tu as plusieurs recherches à faire :
    rechercher m éléments dans une liste ne n éléments : O(m*n)

    Dès que tu as quelques recherches à faire, tu peux :
    créer un vecteur de pointeurs sur chaque élément de la liste : O(n)
    trier le vecteur (quick sort) : O(n*log(n))
    faire les m recherches : O(m*log(n))
    => O(n) + O((n+m)*log(n))
    => ce qui est en log(n) est négligeable : O(n)

  6. #6
    Membre éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    alex00>> tu viens de prouver qu'une recherche séquentielle à une complexité linéaire!!

    Etonnant, non??
    Nemerle, mathématicopilier de bars, membre du triumvirat du CSTM, 3/4 centre

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Août 2003
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 247
    Points : 276
    Points
    276
    Par défaut
    Citation Envoyé par Nemerle
    Mais l'aléatoire reste le meilleur algo.

    Le meilleur algo théorique. Un tel algo nécessite une source de nombres aléatoires parfaite. Chacun sait qu'une telle source est très dure à obtenir en informatique.

    Ensuite, la liste étant non triée, on peut conjecturer qu'elle est ranger aléatoirement. Si tel est effectivement le cas, alors la recherche peut se faire linéairement en gardant un temps moyen constant tout comme avec l'algo aléatoire cité ci-dessus.

    En revanche si la liste n'est pas ranger aléatoirement, alors l'algo aléatoire redevient théoriquement le meillleur dans le sens où son temps moyen de recherche est constant.

    L'algo aléatoire peut être amélioré et devenir réellement intéressant si on ne tire pas les nombres en jetant un dé, mais en piochant de cartes. C'est-à-dire en empèchant de tirer plusieurs fois le même nombre.

  8. #8
    Membre éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    et il suffit d'implémenter un générateur super-astronomique de type mersenne twister par exemple pour obtenir des nombres aléatoires "satisfaisant"
    Nemerle, mathématicopilier de bars, membre du triumvirat du CSTM, 3/4 centre

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/02/2007, 16h53
  2. [VBA-Excel] Effectuer une recherche dans une liste view
    Par Miles Raymond dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/11/2006, 17h21
  3. Imposer une methode Equals pour une recherche dans une List
    Par petozak dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 03/10/2006, 10h41
  4. Réponses: 2
    Dernier message: 07/07/2006, 10h00
  5. Réponses: 2
    Dernier message: 10/10/2005, 02h25

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