Es gibt sehr viele Datenstrukturen, die die Priority-Queue-Schnittstelle implementieren:
- Einfügen: Fügt ein Element in die Struktur ein
- Get-Min: Gibt das kleinste Element in der Struktur zurück
- Extract-Min: Entfernt das kleinste Element in der Struktur
Übliche Datenstrukturen, die diese Schnittstelle implementieren, sind (min) Heaps .
Normalerweise betragen die (amortisierten) Laufzeiten dieser Vorgänge:
- Einfügen: (manchmal O ( log n ) )
- Get-Min:
- Extrakt-Min:
Der Fibonacci-Heap erreicht beispielsweise diese Laufzeiten. Nun ist meine Frage die folgende:
Gibt es eine Datenstruktur mit folgenden (amortisierten) Laufzeiten?
- Einfügen:
- Get-Min:
- Auszug-Min:
Wenn wir bei sortierter Eingabe eine solche Struktur in -Zeit aufbauen können, können wir zum Beispiel Linienschnittpunkte auf vorsortierten Eingaben mit o ( n) findenKreuzungen sind strikt schneller als wenn wir die 'üblichen' Prioritätswarteschlangen verwenden.