J'ai déjà testé l'arbre van Emde-Boas une fois. Je l'ai comparé avec un arbre AA, une table de hachage et un tableau de bits.
Les tests effectuent des size
insertions avec des nombres aléatoires dans l'intervalle [0, bound]
, puis des size
recherches, puis des size
suppressions, puis de nouvelles size
recherches. Les suppressions sont également effectuées sur des nombres aléatoires, vous devez donc d'abord déterminer s'ils sont dans la structure.
Voici les résultats ( size
= 2000000, bound
= 10000000) en quelques secondes:
AATreeLookup - O(n log n)
Inserting... 3.3652452
Searching... 5.2280724
Deleting... 7.3457427
Searching... 9.1462039
HashLookup - O(n) expected
Inserting... 0.3369505
Searching... 0.6223035
Deleting... 0.9062163
Searching... 1.1718223
VanEmdeBoasTree - O(n log log n)
Inserting... 0.7007531
Searching... 1.1775800
Deleting... 1.7257065
Searching... 2.2147703
ArrayLookup - O(n)
Inserting... 0.0681897
Searching... 0.1720300
Deleting... 0.2387776
Searching... 0.3413800
Comme vous pouvez le voir, les arbres van Emde-Boas sont environ deux fois plus lents que les cartes de hachage, dix fois plus lents que les tableaux de bits et 5 fois plus rapides que les arbres de recherche binaires.
Bien sûr, ce qui précède a besoin d'une clause de non-responsabilité: les tests sont artificiels, vous pouvez éventuellement améliorer le code ou utiliser un langage différent avec un compilateur dont la sortie est plus rapide, et ainsi de suite.
Cet avertissement est au cœur de la raison pour laquelle nous utilisons l'analyse asymptotique dans la conception d'algorithmes: comme vous n'avez aucune idée de ce que sont les constantes et que les constantes peuvent changer en fonction de facteurs environnementaux, le mieux que nous pouvons faire est une analyse asymptotique.
Maintenant, dans le cas de lognloglogn232log232=32log32=5