Meilleur BST auto-équilibrage pour une insertion rapide d'un grand nombre de nœuds

voix
8

Je suis en mesure de trouver des détails sur plusieurs autoéquilibré BSTs par plusieurs sources, mais je ne l' ai pas trouvé de bonnes descriptions des détails que l' on est préférable d'utiliser dans différentes situations (ou si elle n'a pas d' importance).

Je veux un BSTqui est optimal pour le stockage de plus de dix millions de nœuds. L'ordre d'insertion des noeuds est essentiellement aléatoire, et je jamais besoin de supprimer des nœuds, donc le temps d'insertion est la seule chose qui aurait besoin d'être optimisé.

J'ai l'intention de l'utiliser pour stocker les états de jeu qu'ils ont visités précédemment dans un jeu de puzzle, afin que je puisse vérifier rapidement si une configuration précédente a déjà été rencontrée.

Créé 05/08/2008 à 16:40
source utilisateur
Dans d'autres langues...                            


4 réponses

voix
3

Pourquoi utiliser un BSTtout? D'après votre description d' un dictionnaire ne fonctionnera tout aussi bien, sinon mieux.

La seule raison d'utiliser un BSTserait si vous voulez lister le contenu du récipient en ordre. Il ne semble pas certainement comme vous voulez le faire, dans ce cas , optez pour la table de hachage. O(1)l' insertion et la recherche, pas de soucis au sujet de la suppression, ce qui pourrait être mieux?

Créé 29/08/2008 à 01:10
source utilisateur

voix
3

Rouge-noir est meilleur que AVL pour les applications d'insertion lourds. Si vous prévoyez consultation relativement uniforme, puis rouge-noir est le chemin à parcourir. Si vous prévoyez une consultation où les éléments plus récemment vues sont plus susceptibles d'être vu à nouveau relativement déséquilibrée, vous voulez utiliser des arbres ébrasés .

Créé 05/08/2008 à 16:59
source utilisateur

voix
0

Les deux autoéquilibré BSTs je suis plus familier avec sont rouge-noir et AVL, donc je ne peux pas dire avec certitude si d'autres solutions sont mieux, mais je me souviens bien , rouge-noir a une insertion plus rapide et la récupération plus lente par rapport à AVL.

Donc, si l'insertion est une priorité plus élevée que la récupération, rouge-noir peut être une meilleure solution.

Créé 05/08/2008 à 16:50
source utilisateur

voix
-2

[Tables de hachage ont] O (1) insertion et recherche

Je pense que cela est faux.

Tout d'abord, si vous limitez la keyspace être finie, vous pouvez stocker les éléments d'un tableau et faire une O (1) de balayage linéaire. Ou vous pourriez shufflesort le tableau puis effectuez un balayage linéaire en O (1) heure prévue. Lorsque des choses est finie, substance est facilement O (1).

Alors que votre table de hachage stocke une chaîne de bits arbitraire; il n'a pas grande importance, tant qu'il ya un jeu de clés infini, dont chacun est fini. Ensuite, vous devez lire tous les bits d'une entrée de requête et d'insertion, sinon j'insérer y0 dans un hachage vide et requête sur y1, où y0 et y1 diffèrent à une seule position de bit que vous ne regardez pas.

Mais disons que les longueurs de clé ne sont pas un paramètre. Si votre insertion et de recherche prendre O (1), le hash particulier prend O (1) le temps, ce qui signifie que vous ne regardez une quantité finie de sortie de la fonction de hachage ( à partir de laquelle il est susceptible d' être une seule sortie finie, accordée ).

Cela signifie que, avec des seaux finiment beaucoup, il doit y avoir un ensemble infini de chaînes qui ont tous la même valeur de hachage. Supposons que j'insérer beaucoup, par exemple ω (1), de ceux-ci, et commencer à interroger. Cela signifie que votre table de hachage doit se rabattre sur un autre mécanisme d'insertion / de recherche O (1) pour répondre à mes questions. Lequel et pourquoi ne pas simplement l'utiliser directement?

Créé 01/02/2009 à 13:49
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more