Все ли деревья в Фибоначчи наворочены биномиальными деревьями? - PullRequest
1 голос
/ 13 февраля 2012

Может ли куча Фибоначчи содержать дерево, которое не является биномиальным деревом?Если так, как это случилось бы?Можете привести пример?

1 Ответ

0 голосов
/ 13 февраля 2012

Да, это может случиться. Интуитивно понятно, что причина в том, что в куче Фибоначчи операция уменьшения ключа может работать, вырезая поддерево из более крупного дерева, что приводит к двум деревьям, которые (потенциально) не являются биномиальными деревьями. Это отличается от биномиальной кучи, где ключ уменьшения работает, выполняя операцию всплытия от узла, ключ которого был уменьшен полностью до корня.

Чтобы увидеть конкретный пример, давайте вставим пять элементов в кучу Фибоначчи, скажем, 1, 3, 5, 7 и 9. Это дает кучу

1 - 3 - 5 - 7 - 9

Теперь, давайте сделаем dequeue-min, которая извлекает 1. Теперь мы пытаемся сжать все оставшиеся элементы вместе, что объединяет деревья следующим образом:

    3
   /|
  5 7
    |
    9

Теперь предположим, что мы выполняем операцию уменьшения ключа, чтобы уменьшить ключ с 9 до 6. Для этого мы вырезаем 9 из его родителя и объединяем его в список деревьев вверху, что дает * 1009. *

   3 - 6
  /|
 5 7

И теперь дерево с 3 в его корне содержит только 3 элемента, так что оно больше не является биномиальным деревом.

Надеюсь, это поможет!

...