Bei vielen Max-Flow-Algorithmen, die meiner Meinung nach implementiert sind, bei Dinics Algorithmus, Push Relabel und anderen, können die asymptotischen Zeitkosten durch die Verwendung dynamischer Bäume (auch als Link-Cut-Bäume bezeichnet) verbessert werden .
- Push-Relabel läuft in oder O ( V 3 ) oder O ( V 2 √normal, aber mit dynamischem BäumenO(VElog(V2/E))
- Dinics Algorithmus läuft in , aber mit dynamischen Bäumen
Praktische Implementierungen von Max-Flow-Algorithmen in den meisten Bibliotheken scheinen diese Datenstruktur jedoch nicht zu nutzen. Werden in der Praxis jemals dynamische Bäume für die Berechnung des maximalen Durchflusses verwendet? Oder tragen sie zu viel Overhead, um für reale Problemgrößen nützlich zu sein?
Gibt es andere Problemdomänen, in denen Link-Cut-Bäume verwendet werden?
Diese Frage steht im Zusammenhang mit einer Frage, die ich in der Theorie gestellt habe: Sind einige der modernsten Maximum-Flow-Algorithmen praktisch?
quelle
Antworten:
Es gibt einen Artikel mit dem Titel " Dynamische Bäume in der Praxis ", in dem die praktische Umsetzung besprochen wird.
Die anderen Kategorien, mit denen der Link-Cut-Baum effizient verwendet werden kann, befinden sich in der Datenbankindizierung . Sie finden dies im Buch " Database Index Techniques ".
quelle
Diese Arbeit stellt am Ende fest, dass ein Link-Cut-Baum (LC-Baum) Rake-Compress-Bäumen (RC-Bäumen) für den Sleator / Tarjan-Max-Flow-Algorithmus unter Verwendung eines Standard-Dimacs-Zufallsgraphengenerators überlegen ist.
Das Papier konzentriert sich auf die Ausbreitung von Veränderungen als eine Anwendung dynamischer Bäume. Die Weitergabe von Änderungen ähnelt beispielsweise der Art und Weise, wie Excel-Tabellenzellen bei Änderungen an einigen Zellen basierend auf Zellen- / Formelabhängigkeiten neu berechnet werden müssen. Die Autoren haben ihren Code als offene Bibliothek veröffentlicht.
Eine experimentelle Analyse der Veränderungsausbreitung in dynamischen Bäumen Acar, Blelloch, Vittes
quelle