Binary Haufen

Linear-Datenstrukturen
  • Array
  • Deque
  • Heap
  • Verknüpfte Liste
  • Schwanz
  • Stapel

Ein binärer Heap ist eine Datenstruktur in der Informatik verwendet, genauer gesagt, ein Vektor oder eine Liste, die Heap-Eigenschaft erfüllt. Eine binäre Haufen zu sehen ist, zur Vereinfachung der Darstellung als ein nahezu vollständiger binärer Baum. Es ist vor allem für die Sammlung von Datensammlungen, wie Wörterbüchern für die Darstellung von Prioritätswarteschlangen verwendet werden, und. Da j, Index zu einem Knoten des Haufens definieren wir j Vater des Knotens in der Position j / 2, links des Knotens in der Position j j * 2 und Son Recht des Knotens in der Position j j * 2 + 1 Sohn. Sie können dann die Funktionen Vater, FiglioSX, FiglioDX, die jeweils den Index des Vaters zurückkehren zu definieren, verließ der Sohn und rechte Kind des j. Sie werden oft als Makros oder Inline-Funktionen implementiert. Es gibt zwei Arten von Heap: Heap und Min-Max-Heap. Die Entscheidung, eine Art von Heap statt des anderen zu verwenden ist durch die Art der Nutzung, die es bestimmt ist gegeben.

Heap Bedingungen: j Index bestimmten Ort ev Heap der Unterkunft angesehen

  • min-Heap, wenn v & lt; v
  • max-Heap, wenn v & gt; v

Von hier aus folgt daraus, dass ein min-heap hat immer kleinere Element an der Wurzel, während ein max-Heap hat immer das größte Element an der Wurzel. Beachten Sie, dass es keine Ordnung unter den Geschwister eines Knotens und / oder Cousins.

In jedem Knoten ist ein Paar, wobei k die Schlüsselwert mit Punkt x verbunden. In Wörterbüchern, im Gegensatz zu den Karten, jede Taste kann mit mehreren Einträgen zugeordnet werden.
Diese Baumarten haben die folgenden Eigenschaften: jeder Elternknoten hat eine Moll-Tonart, um seine beiden Kinder.
Dies stellt sicher, dass sie eine Reise, die von einem Knoten v des Baumes in der Baumstruktur auf den Blättern beginnt und ab, Kreuzung Knoten mit Schlüssel Anbau des letzten Blatt besucht.

In dem Bild auf der linken Seite ist es möglich, zu beobachten, was beschrieben wird, zusätzlich kann man sagen, dass als letzte Element, das am weitesten rechts in der Ebene der Blätter liegt definiert. Im Beispiel dauert es den Wert 15. Dies bestimmten Knoten nimmt eine wesentliche Rolle in den Verfahren für die Entfernung des Schlüssels und ein Minimum in der Einfügung eines neuen Schlüssels aufweist.

Definition

U ist eine Reihe von Elementen und P a total geordnet. Ein Haufen von Elementen zu U gehören, ist ein Element der U *, die die Operationen unterstützt:

- Eingang: Geben Sie ,, passt Heap H, das Element und die Priorität p, nach dem Einlegen der Satz erhält die Heap-Eigenschaft.

- Entfernen

- Lese

Priority Queues

Ein klassisches Problem in der Informatik ist eine Art der Datenwarteschlangen, die eine Priorität. Diese Art von Problem wird durch die Verwendung verkettete Listen und binären Bäumen gelöst.

Verknüpfte Liste Priorität

Umsetzung durch verkettete Listen, die Eingabe haben Sie eine Menge von Elementen, und Sie erhalten eine Liste zu erhalten. Zum Beispiel, wenn der Eingang hat man

 Sie erhalten eine Liste, wie zu bekommen:

Die Position in der Liste angibt, aber es die Priorität der einzelnen Elemente ist. Die Kosten für die Verwaltung der verknüpften Liste ist aus diesem Grund, den Sie für die Lösung via binären Baum entscheiden zu hoch.

Binären Baum mit Priorität

Bei dieser Art von Ausführung enthält jeder Knoten sowohl das Element als die Priorität der Position. Ein Baum wird Haufen angeordnet, wenn der Wert für jeden Knoten in dem gleichen Knoten angetroffen größer oder gleich dem Wert ist, den Kindern des Knotens erfüllt ist. wobei v der Sohn.

Wenn ein Baum Heap bestellt, enthält die Wurzel des Elements mit größerem Wert.

Heap bestellt vollständiger binärer Baum

Es ist ein binärer Baum, Haufen geordnet, in dem alle Schichten mit Ausnahme der letzten, die abgeschlossen ist von links nach rechts gesättigt. Diese Art von Bäumen in der Programmierung wird oft durch die Verwendung von Vektoren realisiert, welche eine Anzahl N von Zellen: Die erste leer bleibt, während in der Position i = 1 ist in der Wurzel gespeichert. Seitdem ist ein Knoten in der Lage, irgendwelche Kinder in Zellen zweiter und 2i + 1.

Bau von einem Haufen

Bei der Konstruktion von einem Haufen haben wir zwei verschiedene Techniken, eines mit einem Top-down-Ansatz und das andere mit einem Bottom-up-Ansatz.

Darstellung von oben nach unten

Angesichts der Eingangsvektor der folgenden muss mit dem Bau einer binären Baum Haufen geordnet

Im Hinblick auf die Analyse der Komplexität kann es zwei Serien gefunden werden. Im besten Fall gibt es nur eine Suchmaschine für das Element, das geben muss und kein Austausch erhalten wird und eine Komplexität, dh im schlimmsten Fall Wert, der jeder Einsatz, um zurück an die Wurzel zurückgeführt werden, da es die maximale Element ist. Die Anzahl der Vergleiche, die durchgeführt werden, die gleich der Höhe des Baumes, die für insgesamt n Knoten sagen, dann haben Sie eine Komplexität haben

Der Aufbau von unten nach oben

In einem vollständigen binären Baum, der keine Knoten verfügt, haben Sie Blätter. Er geht von der Mitte des Feldes, das der Haufen zu bauen und zu überprüfen, dass jeder Knoten einen Haufen geordnet enthält. In einem Baum der Höhe k, ich muss zu verwalten.

Du fängst an, den ersten Knoten, der kein Blatt wird es auf der Ebene k-1 gefunden werden prüfen. Auf dieser Ebene werden Sie Knoten zu finden. Jeder Check, ob ein Knoten einen Haufen unten bestellt enthält verwendet 1 Konfrontation zwischen den beiden Brüdern und einer Auseinandersetzung mit seinem Vater für insgesamt 2 Vergleiche. Eine Ebene k -1 Vergleiche.

Mit Blick auf die Ebene k - 2 werden dann vorgenommen Verallgemeinerung auf Stufe k - i durchführen wird, dh

Die Eingabe eines Wertes

Wir werden einen Überblick über die wichtigsten Methoden, die mit einer Prioritäts-Warteschlange oder eine Datenstruktur, in der jederzeit mit einer Priorität auf Einträge, die ein Teil davon sind in Verbindung gebracht werden assoziiert sind zu diskutieren. Zunächst analysieren wir die Insert-Methode, durch die, wie der Name schon sagt, ist Teil eines neuen Knoten in der Struktur:

in dem Algorithmus wird eine Technik namens Schiebe heap-Heap sprudelt, oder, als Index des Arrays wird überprüft, ob die Eigenschaften des Baums sind für i und für seinen Vater überprüft, definiert als die niedrigeren i / 2.

Wurzelersatz

Es passiert oft, in einem Haufen Struktur, um root-Ersatz mit einem neuen Element durchzuführen. Sobald das Element ist ein Ersatz vorkommen, dass der Haufen wird nicht mehr nachbestellt werden. Aus diesem Grund betreibt sie das downheap, Prüfen auf einem niedrigeren Niveau, die das kleinste Element, um die Position des Wurzel gefördert werden soll. Dieser Vorgang ist rekursiv und ermöglicht es Ihnen, den Heap in den Zustand der geordneten Struktur wiederherzustellen.

Stornierung der Wurzel

Ein Betrieb einer klassischen Struktur Haufen ist die Absage der Wurzel. Dieser Vorgang kann zu Problemen führen, die Struktur der Halde zu halten. Die einfachste Methode ist, um den Wert in der Wurzel mit dem Minimalwert dieser Haufen gelöscht ersetzen. Zunächst wird der Wert in der Wurzel des Haufens wird mit dem letzten Wert des Arrays mit dem Heap, dass der Wert am weitesten rechts in der letzten Ebene des Baums abgeschlossen ist assoziiert ersetzt. An dieser Stelle macht es mit einem Top-down-Ansatz, um die Wiederherstellung der Struktur mit einem Haufen Betrieb downheap Schiebe den Wert an der Wurzel entlang der gesamten binären Baum hinzugefügt.

  0   0
Vorherige Artikel Equilio
Nächster Artikel Die Eagles Steppe

In Verbindung Stehende Artikel

Kommentare - 0

Keine Kommentare

Fügen Sie einen Kommentar

smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile
Zeichen übrig: 3000
captcha