Для каждого $$k = 0, 1, 2, \ldots$$
(рис 7.1) Чтобы убедиться в существовании биномиального леса из $$n$$ узлов, представим $$n$$ в двоичной системе счисления (разложим по степеням двойки) $$n = a_0 2^0 + a_1 2^1 + \ldots +a_s 2^s$$, где $$a_k \in \{0, 1\}$$. Для каждого $$k = 0, 1, 2 \dts s$$, такого, что $$a_k = 1$$, в искомый лес включаем дерево $$B_k$$.
Поскольку количество детей у узлов варьируется в широких пределах, ссылка
на детей осуществляется через левого ребенка, а остальные дети образуют
Доступ к куче осуществляется ссылкой на самое левое поддерево. Корни
деревьев, из которых составлена куча, оказываются организованными
с помощью поля $${\rm sibling}$$ в так называемый корневой
Если дерево $$B_i$$ очередной высоты $$i$$ присутствует лишь в одной из исходных очередей, то перемещаем его в результирующую очередь. Если оно присутствует в одной из исходных очередей и уже есть в результирующей очереди, то объединяем эти деревья в одно $$B_{i+1}$$, которое вставляем в $$H$$. Если $$B_i$$ присутствует во всех трех очередях, то сливаем два из них в $$B_{i+1}$$ и вставляем в $$H$$, а третье дерево $$B_i$$ просто перемещаем в $$H$$. Трудоемкость — $$O(\log n)$$.
Название рассматриваемых куч связано с использованием чисел Фибоначчи при
анализе трудоемкости выполнения операций. В отличие от
Например, алгоритм, обрабатывающий граф, может вызывать процедуру
уменьшения ключа для каждого ребра графа. Для
К сожалению, скрытые константы в асимптотических оценках трудоемкости велики и использование фибоначчиевых куч редко оказывается целесообразным: обычные двоичные ( $$d$$ -ичные) кучи на практике эффективнее. С практической точки зрения желательно придумать структуру данных с теми же асимптотическими оценками, но с меньшими константами. Такие кучи будут рассмотрены в следующих разделах.
При отсутствии операций уменьшения ключа и удаления элемента фибоначчиевы кучи имели бы ту же структуру, что и биномиальные. Но в общем случае фибоначчиевы деревья обладают большей гибкостью, чем биномиальные. Из них можно удалять некоторые узлы, откладывая перестройку дерева до удобного случая.
(рис 7.2) Двусторонние циклические списки удобны по двум причинам. Во-первых, из такого списка можно удалить любой узел за время $$O(1)$$. Во-вторых, два таких списка можно соединить в один за время $$O(1)$$.
Помимо указанной информации, каждый узел имеет поле $${\rm degree}[x]$$, где хранится его степень (число детей), а также поле $${\rm mark} [x]$$. В этом поле хранится булевское значение. Смысл его таков: $${\rm mark}[x]$$ истинно, если узел $$x$$ потерял ребенка после того, как он в последний раз сделался чьим-либо потомком. Позже будет ясно, как и когда это поле используется.
Корни деревьев, составляющих фибоначчиеву кучу, также связаны с помощью
указателей $${\rm left}$$ и $${\rm right}$$ в двусторонний
Доступ к куче $$H$$ производится ссылкой $${\rm minH}$$ на узел с минимальным ключом. Кроме того, общее число узлов задается атрибутом $$n[H]$$.
В каждый момент времени в памяти может храниться несколько куч; общий потенциал по определению равен сумме потенциалов всех этих куч. В дальнейшем мы выберем единицу измерения потенциала так, чтобы единичного изменения потенциала хватало для оплаты $$O(1)$$ операций (формально говоря, мы умножим потенциал на подходящую константу). В начальном состоянии нет ни одной кучи и потенциал равен $$0$$. Как и положено, потенциал всегда неотрицателен.
Мы не будем углубляться в анализ трудоемкости операций с фибоначчиевыми
кучами, отсылая читателя к соответствующей литературе [7],
[19]
скажем только, что $$D(n) = O(\log n)$$ и все операции, кроме
Фибоначчиевы кучи ввел М.Фредман и Р.Тарьян [17]. В их статье описаны
также приложения фибоначчиевых куч к задачам о кратчайших путях из одной
вершины, о кратчайших путях для всех пар вершин,
о
Впоследствии Д.Дрисколл и Р.Тарьян [16]
разработали структуру данных,
называемую $${\rm relaxed heaps}$$, как замену для фибоначчиевых куч. Есть две
разновидности такой структуры данных. Одна из них дает те же оценки
учетной стоимости, что и фибоначчиевы кучи. Другая — позволяет выполнять
операцию $${\rm DecreaseKey}$$ за время $$O(1)$$ в худшем случае,
а операции $${\rm ExtractMin}$$ и
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.