„Datenstrukturen und Netzwerkalgorithmen“ von Tarjan heißt es in der heapify Funktion in leftiest heaps, wie folgend:Komplexität von heapify auf einer linken Haufen Warteschlange
heap function heapify (list q);
do |q| ≥ 2 → := q[3..] & meld (q(1), q(2)) od;
return if q = [ ] → null | q != [ ] → q(1) fi
end heapify;
q
wird die Warteschlange von Halden würden wir gemeinsam heapify mögen. meld(h1, h2)
ist eine Funktion zum Zusammenführen von zwei Heaps und Wiederherstellen der Heap-Eigenschaft. meld(h1, h2)
hat die Komplexität O (logn), wobei n die Gesamtzahl der Knoten in beiden Heaps ist. Dies macht die Komplexität für einen Durchgang durch die Warteschlange, wie folgend:
die plausibel ist. Was ich nicht bekommen, ist die Zeit für die gesamte heapify wie es ist:
k
hier ist die Anzahl der Originalhaufen und n
die Gesamtzahl der Elemente, die sie enthalten. Darüber hinaus gibt es zwei vorher erwähnt Constraints:
Kann jemand mir helfen, zu verstehen, wie die Gl. 2 ist abgeleitet? (., Wie man die linke Ausdruck der Gleichheit in Gleichung interpretiert 2)
Mit abgeleitet Sie meinen, warum die Gleichheit in Gl. (2) hält? – blazs
Nein, eigentlich wie Sie zu dem Ausdruck auf der linken Seite der Gleichheit in Gl. 2. (Der Rest ist nur fallen konstante Faktoren, die ich vermute) – zunder