Prioritätswarteschlange in der Datenstruktur: Alles, was Sie wissen müssen

Veröffentlicht: 2021-04-07

Inhaltsverzeichnis

Einführung

Prioritätswarteschlangen in Datenstrukturen sind eine wichtige Form von ADTs (Abstract Data Types). Jedem Element ist eine Priorität zugeordnet, die als Merkmal für deren Definition und Anordnung dient.

ADTS ist ein Teil der Data Science-Domäne, in der Datenstrukturen als Anordnungsmuster zum Speichern von Informationen und zum Verwalten von Vorgängen wie Zugriff, Hinzufügen, Suchen und Ändern von Datenwerten verwendet werden. Die Methoden, die für diese Anordnung von Daten verwendet werden, bestimmen die Art und Weise, wie sie organisiert sind. Datenstrukturen bestimmen auch die Richtung des Datenflusses und die Beziehungen, die innerhalb der Elemente des Systems geteilt werden.

Experten schätzen, dass bis zum Jahr 2025 die gesamten globalen Daten 175 Zettabyte überschreiten könnten. Um solche großen Datenmengen zu verwalten, werden Datenstrukturen verwendet, um große Datenbanken und Indizierungszwecke effizient zu handhaben. Während der Programmierphasen werden verschiedene Arten von Datenstrukturen wie Stacks, Queues, Arrays, Heaps usw. verwendet. Stapel und Warteschlangen sind eine lineare Form von Datenstrukturen, da die Daten sequentiell nacheinander gespeichert werden. Sie haben keine Verzweigungen und jedes Element/jeder Datenwert muss in einer geraden Linie angeordnet sein.

Anordnung von Stapeln und Warteschlangen

Ein Stapel folgt einem LIFO-Ansatz (Last In First Out) für die Speicheranordnung, während eine Warteschlange einer FIFO-Anordnung (First In First Out) folgt. Dies ist ein wichtiger Faktor zur Unterscheidung dieser beiden linearen Datenstrukturen. Ihre Anwendungen werden basierend auf ihrem LIFO/FIFO-Ansatz entschieden, da sie von ihrer einzigartigen Rechennutzung abhängen.

Um mehr über Data Science und Beispiele für Datenstrukturen zu erfahren, melden Sie sich für das PG Diploma in Big Data an, das von upGrad.com gehostet wird .

Für eine Warteschlange legt FIFO fest, dass beim Hinzufügen mehrerer Elemente zum System das erste hinzugefügte Element das erste ist, auf das zugegriffen/entfernt wird.

5 grundlegende Operationen, die in einer Warteschlange ausgeführt werden können

1. Enqueue: Diese Operation wird ausgeführt, wenn wir der Warteschlange ein Element hinzufügen möchten.

2. Dequeue: Dieser Operator wird verwendet, um ein Element aus der Warteschlange zu entfernen.

3. IsEmpty: Mit dieser Operation wird geprüft, ob die Queue leer ist und kein weiteres Dequeue möglich ist.

4. IsFull: Dieser Operator prüft, ob die Warteschlange voll ist und keine weiteren Enqueue-Hinzufügungen verarbeiten kann.

5. Peek: Der Peek-Operator ruft einfach den erwarteten Datenwert/das erwartete Element aus der Warteschlange ab/zeigt es an, ohne es aus seiner zugewiesenen Sequenz zu entfernen.

Erfahren Sie in diesem informativen Blog von upGrad.com , warum Data Science wichtig ist und einen Mehrwert für das Unternehmen darstellt.

Prioritätswarteschlange in der Datenstruktur

Prioritätswarteschlangen haben eine zusätzliche Priorität, die jedem ihrer Elemente zugeordnet ist. Sie folgen keinen FIFO-Ansätzen wie herkömmliche Warteschlangen. Stattdessen wird eine Prioritätswarteschlange in der Datenstruktur so angeordnet, dass Elemente mit "hoher Priorität" vor ihren Gegenstücken mit "niedriger Priorität" bedient werden.

Der Wert des Elements wird oft berücksichtigt, während ihm der Prioritätswert zugewiesen wird. Die Prioritätswarteschlange unterscheidet sich von einer herkömmlichen Warteschlange dadurch, dass das Element mit der höchsten Priorität zuerst abgerufen wird, wenn wir versuchen, das nächste Element aus der Warteschlange zu entfernen.

Eine weitere Voraussetzung für Prioritätswarteschlangen ist, dass die in diese Warteschlangen eingegebenen Daten sequentiell geordnet sein müssen. Das bedeutet, dass die einzelnen Datenelemente so miteinander vergleichbar sein müssen, dass ihre Anordnung kleiner nach größer oder größer nach kleiner aneinandergereiht werden kann. Dies ist notwendig, um die Elemente der Warteschlange mit den relativen Prioritäten basierend auf einem Vergleich miteinander zuzuordnen.

Die Anwendungen der Prioritätswarteschlange in der Datenstruktur beinhalten normalerweise ihre Kombination mit anderen ungeordneten Datenstrukturen wie Heaps, Arrays, verknüpften Listen oder BSTs. Heaps bieten die effizienteste Form der Kombination aufgrund der Vorkehrung zum effektiven Implementieren von Prioritätswarteschlangen.

Um mehr über das aufstrebende Gebiet der Datenwissenschaft und seine Anwendungen in der Fertigungsindustrie zu erfahren, besuchen Sie diesen ausführlichen Blog von upGrad.com.

Operationen, die in einer Prioritätswarteschlange unterstützt werden

Operationen in einer Prioritätswarteschlange helfen bei der Verarbeitung der eingegebenen, entfernten, angezeigten und geänderten Informationen. Diese Operationen sind auch nützlich, um zwischen den Elementen der Warteschlange zu wechseln. Sie sind wie folgt:

1. Is_empty : Die is_empty-Operation prüft, ob die Warteschlange im Moment irgendein Element enthält.

2. Insert_with_priority: Diese Operation fügt der Warteschlange ein Element hinzu, zusammen mit dem Prioritätswert, der ihm zugeordnet werden muss.

3. Pull_highest_priority_element: Diese Operation entfernt das Element mit der höchsten Priorität aus der Warteschlange, während der Wert dieses Elements zurückgegeben wird.

4. Peek: Die Peek-Operation wird verwendet, um abhängig von den erwarteten Ergebnissen 'Find-Max' oder 'Find-Min' zu finden. Diese Operation entfernt das max/min-Element nicht und gibt es nur zurück.

Der Vorteil der Verwendung von Heaps für die Prioritätswarteschlange in der Datenstruktur

O(log n)-Leistung wird für Einfügungen und Entfernungen beobachtet, wenn Prioritätswarteschlangen auf einem Heap basieren. Dies verbessert die Leistung, und die O(n)-Funktion wird aus einem 'n' Satz von Elementen erstellt. Das Paaren von Heaps und Fibonacci-Heaps bietet bessere Grenzen für Prioritätswarteschlangenoperationen.

Melden Sie sich für einen Online-Kurs bei upGrad an, um mehr über die Prioritätswarteschlange in der Datenstruktur und viele andere wichtige Konzepte im Zusammenhang mit der Programmierdomäne zu erfahren .

Prioritätswarteschlange und Sortierelemente

Unter Berücksichtigung der Rechenkomplexität entsprechen Prioritätswarteschlangen aufgrund ihrer inhärenten Eigenschaft den Sortieralgorithmen. Zum Beispiel müssen wir alle Elemente sammeln, die sortiert werden müssen, und dann sollten wir sie in eine Prioritätswarteschlange einfügen.

Wenn wir dann die Elemente sequentiell entfernen, wäre das Ergebnis eine sortierte Reihenfolge der Elemente. Heapsort, Smoothsort, Selection Sort, Insertion Sort und Tree Sort sind die Namen einiger der Sortieralgorithmen, die eine äquivalente Korrelation zur Prioritätswarteschlange in Datenstrukturen aufweisen.

Anwendungen von Prioritätswarteschlangen

Die Prioritätswarteschlangen in der Datenstruktur werden normalerweise in Kombination mit Heap-Datenstrukturen implementiert. Sie werden in Simulationen zum Sequenzieren, Sortieren und Verfolgen unerforschter Routen verwendet. Die zwei Arten von Prioritätswarteschlangen: Aufsteigend und Absteigend haben ihre eigenen Verwendungssätze. Einige dieser Anwendungen sind:

  • Bandbreitenmanagement
  • Diskrete Ereignissimulation
  • Dijkstras Algorithmus
  • Huffman-Codierung
  • Best-First-Suchalgorithmus
  • ROAM-Triangulationsalgorithmus
  • Algorithmus von Prim für minimalen Spannbaum

Fazit

Stand heute sind rund 5 Milliarden Verbraucher direkt und indirekt mit den Daten verbunden. Bis 2025 würden mehr als 6 Milliarden Menschen mit Big Data verbunden sein. IDC prognostiziert einen 10-fachen Anstieg für Daten und stellt hohe Anforderungen an Data Scientists. Die Prioritätswarteschlange in der Datenstruktur ist aufgrund ihrer engen Korrelation und Anwendung mit Heap-Datenstrukturen ein wichtiges Konzept für Programmierer und Datenwissenschaftler.

Wenn Sie neugierig sind, etwas über Data Science zu lernen, schauen Sie sich das PG Diploma in Data Science von IIIT-B & upGrad an, das für Berufstätige entwickelt wurde und mehr als 10 Fallstudien und Projekte, praktische Workshops, Mentoring mit Branchenexperten, 1- on-1 mit Mentoren aus der Branche, mehr als 400 Stunden Lern- und Jobunterstützung bei Top-Unternehmen.

Die Einschreibung in einen internationalen Online- Masterstudiengang in Informatik an der Liverpool John Moores University oder einen PGD-Kurs in einem Full-Stack-Softwareentwicklungskurs , DevOps usw. kann Ihre Beschäftigungsaussichten als Programmierer verbessern.

Lernen Sie Data Science-Kurse online von den besten Universitäten der Welt. Verdienen Sie Executive PG-Programme, Advanced Certificate-Programme oder Master-Programme, um Ihre Karriere zu beschleunigen.

Beschreiben Sie Anwendungen von Priority Queue?

Die Prioritätswarteschlange wird in vielen Algorithmen sowie in mehreren realen Anwendungen angewendet. Einige davon werden im Folgenden beschrieben:
1. Huffman-Algorithmus: Der im Huffman-Algorithmus der Datenkomprimierung erzeugte Huffman-Baum verwendet eine Prioritätswarteschlange, um den Baum zu implementieren.
2. Algorithmus von Prim : Dieser Algorithmus verwendet eine Prioritätswarteschlange, um den Prozess der exakten Minimalfunktion zu beschleunigen.
3. Dijkstra-Algorithmus: Dieser Algorithmus verwendet einen Haufen oder eine Prioritätswarteschlange, um den Minimalwert zu extrahieren. Die Prioritätswarteschlange macht den Prozess, das Minimum zu erhalten, recht effizient.
4. Betriebssystem: Die Prioritätswarteschlange wird in mehreren Betriebssystemprozessen verwendet, wie z. B. Lastausgleich und Unterbrechungshandhabung.

Zwischen Stack und Queue unterscheiden?

Stack und Queue sind beides lineare Datenstrukturen. Im Folgenden werden die Hauptunterschiede zwischen diesen beiden Datenstrukturen veranschaulicht.
Stack - Die Elemente werden nach dem LIFO-Prinzip betrieben, dh das zuerst eingefügte Element ist das zuletzt entfernte Element. Elemente können nur von einem einzigen Ende namens oben eingefügt oder entfernt werden. Der Einsteckvorgang wird auch als Push-Vorgang bezeichnet.
Queue - Die Elemente werden nach dem FIFO-Prinzip betrieben, dh das zuerst eingefügte Element ist das zuerst entfernte Element. Die Einfügeoperation wird auch als Enqueue-Operation bezeichnet.

Wie kann eine Prioritätswarteschlange mithilfe eines Arrays implementiert werden?

Zum Implementieren einer Prioritätswarteschlange unter Verwendung eines Arrays wird eine Struktur erstellt, um die Werte und die Priorität des Elements zu speichern, und dann wird das Array dieser Struktur erstellt, um die Elemente zu speichern. Die folgenden Operationen sind an dieser Implementierung beteiligt:
enqueue() - Diese Funktion wird auch als Einfügeprozess bezeichnet und dient zum Einfügen der Elemente in die Warteschlange.
peek() - Diese Funktion durchläuft das Array, um das Element mit der höchsten Priorität zurückzugeben. Wenn es zwei Elemente mit derselben Priorität findet, gibt es das Element mit dem höchsten Wert unter ihnen zurück.
dequeue() - Die Funktion dequeue() wird verwendet, um alle Elemente um 1 Position nach links von dem Element zu verschieben, das von der Funktion peek() zurückgegeben wird, und verringert die Größe der Warteschlange.