¿Por qué no hay implementación de montón de Fibonacci en la API Java estándar?

  1. Los montones de Fibonacci son asintóticamente más rápidos que los montones binarios y binomiales, pero esto no significa necesariamente que sean más rápidos en la práctica. La complejidad adicional de los montones de Fibonacci probablemente los hará más lentos para operaciones en montones más pequeños. Además, la operación de eliminación tiene la peor complejidad del peor de los casos.
  2. Muchas aplicaciones simplemente no necesitan el beneficio adicional de un montón de Fibonacci y agregarlo aumenta el tamaño de la biblioteca estándar de Java para todos. Si su aplicación realmente necesita una, hay implementaciones de bibliotecas no estándar.
  3. Las personas que trabajan en la biblioteca estándar tienen otras prioridades en las que trabajar. La biblioteca estándar de Java ya es muy grande y espero que lleve bastante esfuerzo mantenerla. Cada clase que escriben se suma a esta carga.

Para agregar al punto # 3 de la respuesta de Tim Wilson a ¿Por qué no hay implementación de montón de Fibonacci en la API Java estándar? – PriorityQueue vino junto con JSR 166 Concurrency Utilities .

Esto se basa en el trabajo concurrente de Java del Dr. Doug Lea, que se remonta a 1998: http://gee.cs.oswego.edu/dl/clas

Sé que no hay un montón de Fibonacci en la API estándar de Java, pero hay algunos de código abierto. Hice un experimento utilizando la cola de prioridad basada en el montón de Fibonacci para el algoritmo de Dijkstra. Puede ver cómo funcionan estas implementaciones de código abierto durante la ejecución del algoritmo. Aquí está el enlace para mi publicación de blog “Experimentando con el algoritmo de Dijkstra” y para la página GitHub del experimento “gabormakrai / dijkstra-performance”.