Untidy Priority Queue

Status
Nicht offen für weitere Antworten.
C

Cal

Gast
Hey,
ich habe mal wieder ein größeres Problem. Ich möchte eine Untidy Priority Queue (wie sie im Fast Marching Algorithmus verwendet wird) schreiben.

Dieser Datentyp verhält sich ähnlich wie eine Priority Queue, nur dass er in O(1) einfügen und entfernen kann, wofür eine Priority Queue O(log n) benötigt, dafür nimmt er einen kleinen Fehler bei der Sortierung der Elemente in Kauf. Ausserdem geht er von einem monotonen Einfügeverhalten aus: Jedes Neueingefügte Element ist mindestens so groß wie das letze welches gezogen wurde.

genaueres gibt es in diesem Paper auf Seite 3: http://mountains.ece.umn.edu/~liron/fastmarching/O_N_fast_marching.pdf

Im Prinzip funktioniert sie so:
Ein zyklisches Array beinhaltet an jeder ArrayPosition eine Liste von Elementen (jeweils mit einem key, nach dem sie sortiert werden können) Jedes Bucket von diesem Array enthält nur Elemente mit ähnlichem key (bzw einem Key>Tn und Key<Tn+1) Das Bucket mit den kleinsten Werten wird T0 bezeichnet. Auf T0 wird ein Verweis abgespeichert, damit man das kleinste Bucket kennt. Wenn alle Elemente aus dem niedrigsten Bucket entfern wurden, wird der Verweis einfach aufs nächsthöhere Bucket gelegt.

Einfügen: der Key k soll hinzugefügt werden. Das Bucket kann einfach durch Math.Floor((k-T0)/delta) - T0 ist der mindestWert für das kleinste bucket - gefunden werden -> O(1)

Poll: einfach den ersten key aus dem T0 bucket holen -> O(1)

Nun mein problem: Die Remove Operation. Die Autoren des Papers behaupten das gehe in O(anzahl der buckets), nur wie?

naja...wenn ihr Zeit habt guckt mal in das Paper rein, vlt könnt ihr mir ja weiterhelfen

Gruß
Cal
 

tincup

Bekanntes Mitglied
Ohne jetzt groß ins Paper geguckt zu haben:

Poll und Remove sind bei einer Queue doch identisch. Bei der normalen Java Queue besteht der einzige Unterschied darin, dass die eine ne Exception schmeisst, wenn nichts mehr da ist. Hab ich was falsch verstanden oder du dich verschrieben?

Grüsse,
tin
 
M

maki

Gast
Nun mein problem: Die Remove Operation. Die Autoren des Papers behaupten das gehe in O(anzahl der buckets), nur wie?
Hab mir nix angeguckt, hört aber danach an als ob bei einem remove die komplete Queue neu aufbereitet wird.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M priority scheduling in Linux Allgemeine Java-Themen 3
D priority queue sortieren Allgemeine Java-Themen 10
W Queue.remove() -> no such element exception Allgemeine Java-Themen 17
mrStudent The method append is not applicable for the arguments (Queue<Integer>, Queue<Integer>) Allgemeine Java-Themen 4
M Queue mit einem Array implemetieren Allgemeine Java-Themen 16
Kirby.exe Nullpointer Exception bei Queue Allgemeine Java-Themen 5
P Durchlaufen einer Queue Allgemeine Java-Themen 9
W Queue Implementierung Allgemeine Java-Themen 6
S Queue Allgemeine Java-Themen 2
M Queues und Queue Interface Allgemeine Java-Themen 3
F Message Queue Tipps Allgemeine Java-Themen 3
E Queue: Wie kann hier ein null-Pointer Exception auftreten?! Allgemeine Java-Themen 11
M FIFO Queue: bytes in, float/double/etc out Allgemeine Java-Themen 5
F Threads, Queue, Gemeinsame Daten Allgemeine Java-Themen 6
G QUEUE und Threads Allgemeine Java-Themen 5
H Queue ausgeben Allgemeine Java-Themen 5
M Queue für spider/crawler? Allgemeine Java-Themen 2
M Reflection Queue auslesen Allgemeine Java-Themen 6
E Executors - wie kann ich die Queue leeren? Allgemeine Java-Themen 2
A Queue, beim dem das letzte Element herausfällt Allgemeine Java-Themen 4
S Suche schnellen Container Typ Queue Allgemeine Java-Themen 7
P Queue, Mausevents Allgemeine Java-Themen 4
G Queue erzeugen Allgemeine Java-Themen 2
T Queue-Hilfe benötigt Allgemeine Java-Themen 4
G Parameteriesierung von Queue funktioniert nicht Allgemeine Java-Themen 2
M Queue Allgemeine Java-Themen 11
G Klasse Queue Implementierung in Java Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben