Есть ли в Haskell очередь приоритетов на основе кучи Фибоначчи?
Есть ли в Haskell очередь кучи / приоритета Фибоначчи? (Или даже асимптотически лучше?) В этом вопросе я нашел список различных реализаций очередей с приоритетами, но не смог найти, удовлетворяет ли какая-либо из них амортизированному времени выполнения кучи Фибоначчи:
- Минимум поиска составляет O(1) амортизированное время.
- Операции вставки, уменьшения ключа и слияния (объединения) являются амортизированным временем O(1).
- Операции удаления и удаления составляют минимум O(log n) амортизированного времени.
Смотрите сравнение теоретических оценок.
1 ответ
Решение
Не куча Фибоначчи, но такая же хорошая: куча Эдварда Кметта, основанная на постоянном варианте Бродала / Окасаки.