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 :

GrabBag data structure


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de SpiceGuid
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 704
    Par défaut GrabBag data structure
    J'ai trouvé cette description d'un TAD que je ne connaissais pas:

    The data structure GrabBag is similar to a stack or a queue, but instead of the first or last element being removed on a pop or dequeue, a random element is removed on a grab. Grabbags are very useful for simulating random draws without repetition, like drawing cards from a deck or numbers in a bingo game. Consider the following ADT:

    • Insert(item e): e is inserted into the grabbag
    • Grab(): if the grabbag is not empty, return a random element from the bag
    • Size(): return how many items are in the grabbag
    • List(): return a list of all items in the grabbag
    En cherchant j'ai trouvé plusieurs implantations sub-optimales en temps (trop de random) et en espace (les noeuds portent trop d'information).
    Ma question :
    • c'est seulement un exercice pour étudiant ?
    • ou bien c'est un TAD intéressant qui mérite une implantation optimale (pas très difficile à réaliser)

  2. #2
    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 : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Ca permet de garantir a tout moment que la liste est en désordre. Mais Je ne vois pas trop l'intérêt de cette structure dans la vie courante, car généralement on cherche quelque chose de déterministe (FIFO/LIFO/...).
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #3
    Membre Expert
    Avatar de SpiceGuid
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 704
    Par défaut
    Grabbags are very useful for simulating random draws without repetition, like drawing cards from a deck or numbers in a bingo game.
    En relisant je comprends que c'est pour extraire un arrangement ou une combinaison.
    Ça ne fait donc rien de bien nouveau (on a déjà 1000 questions à ce sujet sur ce forum), ce qui est nouveau c'est la formulation, au lieu d'être un algorithme implémentable ça devient un TAD plus abstrait.

  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 : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par SpiceGuid Voir le message
    En relisant je comprends que c'est pour extraire un arrangement ou une combinaison.
    Ça ne fait donc rien de bien nouveau (on a déjà 1000 questions à ce sujet sur ce forum), ce qui est nouveau c'est la formulation, au lieu d'être un algorithme implémentable ça devient un TAD plus abstrait.
    hum... oui et non.

    L'implémentation habituelle c'est, a un moment, de "mélanger" un TAD ordonné. Là il s'agit d'avoir en permanence un tas désordonné.

    L'implémentation habituelle permet difficilement de gérer le parallélisme Insert()/Grab(), sauf a mélanger continuellement le TAD
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

Discussions similaires

  1. JDSL (Java Data Structures Library)
    Par khayyam90 dans le forum Codes sources à télécharger
    Réponses: 0
    Dernier message: 30/12/2010, 16h56
  2. [livre]:Purely Functional Data Structures
    Par Djug dans le forum Algorithmes et structures de données
    Réponses: 0
    Dernier message: 02/08/2010, 12h58

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