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 éprouvé
    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
    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 éclairé
    Avatar de Higgins
    Inscrit en
    Juillet 2002
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 530
    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.

  3. #3
    Membre émérite 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
    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 Expert Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    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.

  5. #5
    Membre éprouvé
    Inscrit en
    Août 2004
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 113
    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 Expert Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 54

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

    Etonnant, non??

  7. #7
    Membre expérimenté
    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
    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 Expert Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    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"

+ 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