Parallele dynamische Suche


24

Gibt es eine natürliche Parallele zu rot-schwarzen Bäumen mit ähnlichen oder gar nicht so schlimmen Eigenschaften für Aktualisierungen bei angemessener Arbeitseffizienz?

Was können wir allgemein am besten für die parallele Suche mit Updates tun?


Welche Eigenschaften möchten Sie besonders erhalten oder "nicht fürchterlich schlechter" machen? Wie wichtig ist es, dass der Gleichgewichtszustand immer noch der von rot-schwarzen Bäumen ist? Wären erwartete Grenzen wie bei gleichzeitigen Überspringlisten akzeptabel?
Jbapple

Ich denke, erwartete Grenzen wären in Ordnung. Dies ist eine Situation, in der wir die Datenstruktur sehr oft mit aktualisierten Schlüsselwerten bearbeiten. Um genau zu sein, sind sogar effiziente Operationen zum Ändern von Schlüsseln nach dem Fibonacci-Prinzip in Ordnung. Haben Sie eine gute Referenz für gleichzeitige Überspringlisten?
Suresh Venkat

Herlihy & Shavits Buch "Die Kunst der Multiprozessor-Programmierung " oder "Lock-free Linked Lists and Skip Lists" oder " java.util.concurrent" oder " Practical Lock-Freedom" . Haben Sie darüber nachgedacht, eine gleichzeitige Hash-Tabelle wie eine Hopscotch-Hash-Tabelle zu verwenden ?
Jbapple

Nicht wirklich. Ich bin leider Analphabet in gleichzeitigen Methoden. Danke für die refs.
Suresh Venkat

Antworten:


8

Nach allem, was ich sagen kann, müssen bei Strategien die Gleichgewichtsbedingungen gelockert und die Aktualisierungen in Bursts neu ausgeglichen werden. Hier ist ein Artikel von Hanke et al., 1997 [PDF] , der sich meiner Meinung nach auf ihre Technik konzentriert, Aktualisierungsvorgänge so zu aggregieren und aufzulösen, dass sie gleichzeitig ausgeführt werden können.


5

Ich denke, Sie finden interessante Antworten in Okasakis Buch Purely Functional Data Structures . In diesem Buch werden viele Datenstrukturen gezeigt, so dass jedes Update nicht teuer ist (normalerweise dauert es nur eine konstante oder logarithmische Zeit).

Angenommen, "d" ist eine Struktur kurz vor dem Zeitpunkt, an dem Sie das Gleichgewicht wieder herstellen müssen. In einer rein funktionalen Datenstruktur haben Sie persistente Datenstrukturen, daher können Sie Dinge zu "d" hinzufügen und müssen mal neu balancieren . Dies ist der Grund, warum amortisierte Komplexität in dieser Einstellung nicht funktioniert, und er hat einen anderen Weg gefunden, um einen guten Algorithmus zu erhalten, bei dem jeder Schritt mit Updates nicht teuer ist.nn


4
Ich denke, dass rein funktionale Suchbäume ohne weitere Modifikation alle Aktualisierungen serialisieren und daher unter Schreibkonflikten schlecht abschneiden.
Jbapple
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.