2011-09-23 15 views
5

Szukam algorytmu zliczającego liczbę ścieżek przecinających określony węzeł w DAG (podobny do pojęcia "miedzy") z następującymi warunkami i ograniczenia:Zliczanie liczby najkrótszych ścieżek przez węzeł w DAG

Muszę wykonać liczenie dla zestawu węzłów źródłowych/docelowych na wykresie, a nie dla wszystkich węzłów, tj. dla węzła środkowego n, chcę wiedzieć, ile różnych najkrótszych ścieżek z zestawu węzłów S do zestawu węzłów D przechodzących przez n (i przez odrębne, tzn. Co dwie ścieżki, które mają co najmniej jeden niepaństwowy węzeł)

Jakie są algorytmy, które możesz zaproponować, biorąc pod uwagę, że DAG może być bardzo duże, ale rzadkie na krawędziach, i kura Preferencje ce nie są podawane w głębokich zagnieżdżonych pętlach na węzłach.

Odpowiedz

3

Możesz użyć szerokości pierwszego wyszukiwania dla każdej pary węzłów Src/Dest i zobaczyć, który z nich ma dany węzeł na ścieżce. Musiałbyś zmodyfikować wyszukiwanie tak, aby po znalezieniu najkrótszej ścieżki kontynuowałeś opróżnianie kolejki, aż dojdziesz do ścieżki, która powoduje zwiększenie rozmiaru. W ten sposób nie jesteś ograniczony przypadkową szansą, jeśli istnieje wiele najkrótszych ścieżek. Jest to oczywiście tylko opcja z nieważonymi wykresami.

Powiązane problemy