Wiele algorytmów maksymalnego przepływu, które zwykle widzę zaimplementowanych, algorytm Dinica, push push i inne, mogą mieć asymptotyczny koszt czasu ulepszony dzięki zastosowaniu dynamicznych drzew (znanych również jako drzewa cięte łączem).
- Wciśnij etykietę w trybie lub O ( V 3 ) lub O ( V 2 √)normalnie, ale z dynamicznymi drzewamiO(VElog(V2/E))
- Algorytm Dinica działa w , ale z dynamicznymi drzewami O ( V E log ( V ) )
Jednak praktyczne implementacje algorytmów maksymalnego przepływu w większości bibliotek wydają się nie wykorzystywać tej struktury danych. Czy drzewa dynamiczne były kiedykolwiek wykorzystywane w praktyce do obliczania maksymalnego przepływu? Czy też niosą ze sobą zbyt duży koszt, aby były przydatne w rzeczywistych rozmiarach problemów?
Czy istnieją inne domeny problematyczne, w których wykorzystywane są drzewa cięte łączem?
To pytanie jest związane z pytaniem, które zadałem na cstheory: Czy któryś z najnowszych algorytmów maksymalnego przepływu jest praktyczny?
źródło
Odpowiedzi:
Istnieje artykuł zatytułowany „ Drzewa dynamiczne w praktyce ”, w którym dokonano przeglądu praktycznego wdrożenia.
Inne kategorie, w których drzewo Link-Cut można efektywnie wykorzystać, to Indeksowanie baz danych . Można to znaleźć w książce „ Techniki indeksu baz danych ”.
źródło
ten dokument stwierdza na końcu, że drzewo z wycięciem łącza (LC) przewyższa drzewa rake-kompresji (RC) dla algorytmu maksymalnego przepływu Sleator / Tarjan przy użyciu standardowego generatora grafów losowych Dimacs.
artykuł koncentruje się na propagacji zmian jako jednej aplikacji dynamicznych drzew. np. propagacja zmian jest podobna do sposobu, w jaki komórki arkusza kalkulacyjnego programu Excel muszą być ponownie obliczane na podstawie zmian w niektórych komórkach na podstawie zależności między komórkami / formułami. autorzy opublikowali swój kod jako otwartą bibliotekę.
Eksperymentalna analiza propagacji zmian w dynamicznych drzewach Acar, Blelloch, Vittes
źródło