Dynamische obere Hüllkurve von Linien in der Ebene


8

Es gibt einfache Algorithmen, um die obere Hüllkurve einer Linienanordnung in der Ebene zu berechnen. Siehe z. B. Abschnitt 2.3 in der Übersicht Davenport-Schinzel-Sequenzen und ihre geometrischen Anwendungen .

Gibt es bekannte Algorithmen / Datenstrukturen für die dynamische Version desselben Problems? Das heißt, wir möchten die obere Hüllkurve eines Satzes von Linien in der Ebene unter den folgenden Operationen beibehalten:

  • Einfügen ): Fügt der Menge Zeile hinzu(
  • delete : Entfernt die Zeile aus dem Set()
  • Abfrage : Gibt die Zeile mit der Koordinate im oberen Umschlag zurück. Mit anderen Worten, geben Sie die Linie in der Menge zurück, die zuerst von einem vertikalen Abwärtsstrahl vom Punkt .x ( x , )(x)x(x,)

6
Bei Linien sollte die Punkt-Linien-Dualität dies zu einem Problem über dynamische konvexe Hüllen führen, das gut untersucht ist.
Jemand

2
@ Jemand danke für deinen hilfreichen Kommentar! Das Befolgen dieser Argumentation führte mich schnell zu der folgenden Referenz, in der parametrische Heaps behandelt werden, bei denen es sich anscheinend um die Datenstrukturen handelt, nach denen ich suche. madalgo.au.dk/~gerth/papers/focs02.pdf
Joe

3
Siehe auch citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.18.9174 und die darin enthaltenen Referenzen.
Joe

1
@ Joe: Ich bin mir über die Etikette nicht sicher, aber ich denke, Sie sollten eine Antwort geben und diese akzeptieren, um zukünftigen Lesern dieser Frage zu helfen.
Max

Antworten:


5

"jemand" hat recht. Timothy Chans Artikel "Dynamische planare konvexe Rumpfoperationen in nahezu logarithmischer amortisierter Zeit" scheint das Problem zu lösen, bei dem Einfügungen / Löschungen amortisierte Zeit und Abfragen O ( log n ) Zeit benötigen . Er löst Ihr Problem, das doppelt mit dem Problem der konvexen Hülle verbunden ist.O(log1+ϵn) O(logn)


1
Ups, egal. Es scheint, dass Sie ein neueres Ergebnis gefunden haben, das meiner Meinung nach das übertrumpft.
James King

3

Die Datenstruktur, nach der ich gesucht habe, wird als parametrischer Heap bezeichnet . Das heißt, ein Heap, in dem jede Taste eine lineare Funktion (eine Linie) anstelle einer festen Taste ist. Die query(x)oben beschriebene Operation entspricht einer find-min(x)Operation in einem parametrischen Heap. Es gibt eine verwandte Datenstruktur, die als kinetischer Heap bezeichnet wird. Hierbei handelt es sich um einen parametrischen Heap, bei dem der Parameter Zeit nur vorwärts fortschreitet. Mit anderen Worten, sobald wir eine find-min( ) -Abfrage haben, dürfen wir ( t 2 ) nur fragen, wenn t 2t 1 ist .t1find-mint2t2t1

Wie von "jemandem" beobachtet, kann das parametrische Heap-Problem über Punkt-Linien-Dualität auf eine dynamische planare konvexe Hülle reduziert werden.

Die meisten Artikel, die dieses Problem lösen, verwenden eine semidynamische Datenstruktur "nur Löschungen" und verwenden dann eine Dynamisierungstechnik von Bentley und Saxe, um ihre Datenstruktur zu transformieren und auch Einfügungen zu unterstützen. ( JL Bentley und JB Saxe, Zerlegbare Suchprobleme . I: Statisch-dynamische Transformation ) Eine Übersicht über die Funktionsweise dieser Art der Transformation finden Sie auch in den Vorlesungsunterlagen von J ffeϵ .

Das klassische Ergebnis in diesem Bereich ist Overmars und van Leeuwen, Wartung von Konfigurationen in der Ebene , zu verdanken , die eine Abfragezeit von und eine Aktualisierungszeit von O ( log 2 n ) (Worst Case) erreichen. Wenn wir eine Lösung für dieses Problem implementieren wollten, ist dies die richtige Version.O(logn)O(log2n)

In der Folge wurden jedoch mehrere theoretische Verbesserungen am klassischen Ergebnis vorgenommen. Bei FOCS 99 Chans Papier

gab eine Datenstruktur mit amortisierter Zeit für Aktualisierungen.O(log1+ϵn)

O(lognloglogn)O(lognlogloglogn)

O(logn)

Kürzlich gab Chan andere Ergebnisse im Zusammenhang mit dynamischen planaren konvexen Rumpfabfragen bekannt, darunter "Eine vollständig dynamische Datenstruktur zum Aufrechterhalten eines Satzes von n Punkten in der Ebene, damit wir die Kanten der konvexen Hülle finden können, die eine Abfragelinie schneiden".

Θ(logn/loglogn)O(lognloglogn)O(log2n)


3
Oh. Alle diese Ergebnisse sind sehr kompliziert. Das Originalpapier von Overmars / Van Leuven (siehe en.wikipedia.org/wiki/Dynamic_convex_hull ) ist immer noch ein Juwel und kann leicht implementiert werden. Für einige Operationen ist es log ^ 2. Aber es ist der schlimmste Fall.
Sariel Har-Peled

1
Ich dachte, Riko Jacobs These hätte eine Vollversion des Beweises? Aber ich stimme Sariel zu, dass Sie bei Overmars / Van Leuven
Suresh Venkat

@SureshVenkat Warum sollte ich mich an Overmars / Van Leuven halten?
Joe

Ich denke, es hängt davon ab, wofür Sie den Algorithmus benötigen.
Suresh Venkat

Auf einem Word-RAM können wir noch schnellere Abfragezeiten erhalten: people.csail.mit.edu/mip/papers/dynhull/paper.pdf
Joe
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.