Потенциальная функция двоичного извлечения кучи max O (1)

10

Мне нужна помощь в определении потенциальной функции для максимальной кучи, так что извлечение max завершается за время амортизации . Я должен добавить, что у меня нет хорошего понимания потенциального метода.О(1)

Я знаю, что функция вставки должна «платить» больше, чтобы уменьшить стоимость извлечения, и это должно быть в отношении высоты кучи (если дает высоту куча должна быть вставка или )журнал(N)2журнал(N)ΣКзнак равно1N2журнал(К)

андрей
источник

Ответы:

13

Попробуйте следующее:

Вес элемента i в куче H - это его глубина в соответствующем двоичном дереве. Таким образом, элемент в корне имеет нулевой вес, два его ребенка имеют вес 1 и так далее. Вы определяете как потенциальную функциювесяяЧАС

Φ(ЧАС)знак равноΣяЧАС2веся,

Давайте теперь проанализируем операции с кучей. Для вставки вы добавляете новый элемент, добавьте глубину не более log ( n ) . Это увеличивает потенциал, 2 д , и может быть сделано в O ( 1 ) времени. Затем вы «всплываете» новый элемент кучи, чтобы обеспечить свойство кучи. Это занимает O ( log n ) времени и оставляет Φ ( H ) без изменений. Таким образом, затраты на вставку составляют O ( log ( n ) + Δ ( Φ (dжурнал(N)2dО(1)О(журналN)Φ(ЧАС) .О(журнал(N)+Δ(Φ(ЧАС)))знак равноО(журналN)

Теперь рассмотрим экстракт Мин . Вы вынимаете корень и заменяете его последним элементом в куче. Это уменьшает потенциал на , таким образом, вы можете позволить себе восстановить свойство кучи, и поэтому амортизированные затраты теперь составляют O ( 1 ) .2журнал(N)О(1)

Если у вас есть общий вопрос о потенциальной функции, вы должны поставить его как другой вопрос.

A.Schulz
источник
Я уверен, что вы правы, но я не понял вставку. Почему без изменений? Извините , если ответ очевиден , но не могли бы Вы расширить Д ? Я не могу понять, почему у вас там отрицательное числоΔ(Φ(ЧАС)))Δ
Андрей
относится к разности потенциалов - до и после вставки. В случае вставки не более 2 log ( n ) . Когда вы меняете два элемента в куче (всплывающее или всплывающее), один вес получает +1, а другой получает -1 изменение, поэтому потенциал (сумма всех весов) остается неизменным. Δ(Φ(ЧАС))2журнал(N)
А.Шульц
Как ремонт O (1)? Какая польза от потенциальной функции при восстановлении кучи? Не могли бы вы уточнить
Сохаиб
О(журналN)О(1)
@ A.Schulz Таким образом, это, по сути, означает, что, учитывая, что операция извлечения выполняется n раз, так как каждый раз потенциальная функция уменьшается на 2 лога (может увеличиваться или не увеличиваться одинаково при восстановлении). Общая сложность такой вещи будет постоянной, поскольку в конечном итоге в дереве не будет ни одного узла. Я прав?
Сохаиб