Est-il un standard de Java mise en œuvre d'un tas de Fibonacci?
Je regardais les différents types de tas de structures de données.
Le tas de Fibonacci semble avoir le meilleur pire des cas, la complexité de (1) l'insertion d'une, (2) la suppression et (2) de trouver le minimum de l'élément.
J'ai constaté qu'en Java il existe une classe PriorityQueue
qui est un équilibre tas binaire. Mais pourquoi ils n'utilisent pas un tas de Fibonacci?
Aussi, est-il de la mise en œuvre d'un tas de Fibonacci dans java.util
?
Merci!
- java collections offrent la plus courante des structures de données. Je suppose tas de Fibonacci est plus spécialisé, ou peut-être que c'est à l'aide de plus de mémoire.
- quel est le problème avec le tas de Fibonacci de toute façon? o.o
Vous devez vous connecter pour publier un commentaire.
Non, le standard de Java API collections ne contiennent pas la mise en œuvre d'un tas de Fibonacci. Je ne suis pas sûr pourquoi, mais je crois que c'est parce que tandis que les tas de Fibonacci sont asymptotiquement grand dans la méthode de l'amortissement sens, ils ont d'énormes facteurs constants dans la pratique. Les collections cadre aussi ne pas avoir un tas binomial, ce qui serait un autre bon tas d'inclure.
Totalement éhontée auto-plug, j'ai une mise en œuvre d'un tas de Fibonacci en Java sur mon site web personnel. Je ne suis pas sûr de savoir comment elle sera utile, mais si vous êtes curieux de voir comment il fonctionne, je pense que ça pourrait être un bon point de départ.
Espérons que cette aide!
Probablement parce que ces tas beaucoup plus de frais généraux par l'entrée de clés binaires.
Non, mais
mais regarder dans ce joli blog à ce sujet et à propos de
les problèmes de fibonacci impl peut avoir. Dans ce post, beaucoup d'autres Java implémentation sont référencés.
Je pense que la principale raison est parce que le tas de Fibonacci ne peut que l'aider dans le cas où vous avez beaucoup plus de decreaseKey opération connecté à un extractMin opération. Par exemple, lorsque vous l'utilisez avec l'algorithme de Dijkstra.
Il n'y a pas de mise en œuvre en Java.util, mais j'ai fait quelques expériences sur ce sujet à l'aide de programmes open-source existants versions du tas de Fibonacci. Vous pouvez le trouver sur mon blog ou sur le projet de dépôt GitHub.