Mögliche Funktion binärer Heap-Extrakt max O (1)


10

Ich brauche Hilfe bei der Ermittlung der möglichen Funktion für einen maximalen Heap, damit der Extrakt max in der amortisierten Zeit von ist. Ich sollte hinzufügen, dass ich die mögliche Methode nicht gut verstehe.O(1)

Ich weiß, dass die Einfügefunktion mehr "zahlen" sollte, um die Kosten der Extraktion zu senken, und dies muss in Bezug auf die Höhe des Haufens erfolgen (wenn die Höhe des Heap sollte die Einfügung 2 \ log (n) oder \ sum_ {k = 1} ^ n 2 \ log (k) sein )log(n)2log(n)k=1n2log(k)

Antworten:


12

Versuche Folgendes:

Das Gewicht wi eines Elements i im Heap H ist seine Tiefe im entsprechenden Binärbaum. Das Element in der Wurzel hat also das Gewicht Null, seine beiden Kinder haben das Gewicht 1 und so weiter. Die definieren Sie als mögliche Funktion

Φ(H)=iH2wi.

Lassen Sie uns nun die Heap-Operationen analysieren. Zum Einfügen fügen Sie ein neues Element hinzu und fügen höchstens die Tiefe . Dies erhöht das Potential um und kann in -Zeit erfolgen. Dann "sprudeln" Sie das neue Heap-Element, um die Heap-Eigenschaft sicherzustellen. Dies dauert und lässt unverändert. Somit betragen die Kosten für das Einfügen .dlog(n)2dO(1)O(logn)Φ(H)O(log(n)+Δ(Φ(H)))=O(logn)

Betrachten Sie nun den extractMin . Sie nehmen die Wurzel heraus und ersetzen sie durch das letzte Element im Heap. Dies verringert das Potenzial um , sodass Sie es sich leisten können, die Heap-Eigenschaft zu reparieren, und daher betragen die amortisierten Kosten jetzt .2log(n)O(1)

Wenn Sie eine allgemeine Frage zur möglichen Funktion haben, sollten Sie diese als eine andere Frage stellen.


Ich bin sicher, dass Sie richtig sind, aber ich habe die Einfügung nicht verstanden. Warum bleibt unverändert? Entschuldigung, wenn die Antwort offensichtlich ist, aber könnten Sie bitte ? Ich kann nicht sehen, warum Sie dort eine negative Zahl haben würdenΔ(Φ(H)))Δ
andrei

Δ(Φ(H)) bezieht sich auf die Potentialdifferenz - vor und nach dem Einsatz. Es ist im Insert-Fall höchstens . Wenn Sie zwei Elemente im Haufen austauschen (Bubble-Up oder Bubble-Down), erhält ein Gewicht +1 und das andere -1 Änderung, sodass das Potenzial (die Summe aller Gewichte) gleich bleibt. 2log(n)
A.Schulz

Wie ist Reparatur O (1)? Was ist die Verwendung der möglichen Funktion bei der Reparatur des Haufens? Könnten Sie bitte klarstellen
Sohaib

@ Sohaib: Die Reparatur benötigt Zeit, aber amortisierte Zeit unter Verwendung der oben genannten möglichen Funktion. Es gibt keine andere Verwendung der potenziellen Funktion als die Analyse der fortgeführten Anschaffungskosten. O(logn)O(1)
A.Schulz

@ A.Schulz Dies bedeutet im Wesentlichen, dass die Extraktionsoperation n-mal ausgeführt wird, da die potenzielle Funktion jedes Mal um 2logn abnimmt (kann bei Reparatur gleichermaßen zunehmen oder nicht). Die Gesamtkomplexität für so etwas wäre eine konstante Zeit, da es schließlich keinen Knoten im Baum geben würde. Habe ich recht?
Sohaib
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.