2013-06-20 17 views
5

Jestem świadomy, że istnieje wiele podobnych tematów. Ale większość z nich pozostawiła w moim przypadku wątpliwości. Co chcę zrobić, to znaleźć idealne dopasowanie (lub jak najdoskonalej, jak to tylko możliwe w przypadku, gdy nie ma idealnego dopasowania oczywiście), a następnie ze wszystkich tych dopasowań, w których można dopasować k z n wierzchołków (gdzie k jest najwyższym możliwym), Chcę wybrać najwyższą możliwą całkowitą wagę. Więc po prostu umieścić, co mówię jest następujący priorytet:Ważone dopasowanie dwudzielne

  1. dopasować tak wiele wierzchołków jako możliwe
  2. powodu (nie ważona) maksymalne dopasowanie w większości przypadków jest jednoznaczna, chciałbym wybrać ten, który ma największy suma wag na krawędziach. Jeśli jest ich kilka o tej samej wadze, nie ma znaczenia, który byłby wybrany.

Słyszałem o algorytmie Forda-Fulkersona. Czy działa tak, jak to opisuję, czy potrzebuję innego algorytmu?

Odpowiedz

5

Jeśli implementujesz to samodzielnie, prawdopodobnie będziesz chciał użyć Hungarian algorithm. Szybsze algorytmy istnieją, ale nie są tak łatwe do zrozumienia i wdrożenia.

Ford-Fulkerson jest algorytmem maksymalnego przepływu; możesz go łatwo użyć do rozwiązania dopasowania nieważonego. Włączenie go do ważonego algorytmu matowania wymaga dodatkowej sztuczki; z tą sztuczką, skończysz z węgierskim algorytmem.

Można również użyć algorytmu przepływu minimalnego, aby wyważone dopasowanie dwustronne, ale może nie działać równie dobrze. Istnieje również metoda sieciowa simpleks, ale wydaje się, że jest to głównie kwestia historyczna.

+0

W rzeczywistości jest to mój dyplom ukończenia studiów (idk dokładnie międzynarodowy odpowiednik stopnia) o problemie przypisania, więc spróbuję zrozumieć ford-fulkerson. Problem polega na tym, że nie jestem pewien, czy to działa w sposób, w jaki pragnę. na przykład weźmy następujący przypadek: : = <1,3,1><2,4,1><1,4, nieskończoność> nie ma maksymalnego przepływu oznacza, że ​​krawędź <1,4,inf> zostanie pobrana iw taki sam sposób przybrała maksymalną możliwą wagę zamiast najpierw znaleźć maksymalny zestaw wierzchołków i jako drugi warunek sumy grubości krawędzi? – abc

+0

To nie jest tak, w jaki sposób użyć przepływu do rozwiązania tego problemu. Chcesz zdolności jednostek. Jeśli chcesz mieć bezpośrednią formułę, zastosuj model minimalnego kosztu, zachowaj zdolności jednostek i pozwól, aby koszty były równe kosztom. Nie jest to problem z maksymalnym przepływem, ale istnieje pewna sztuczka (metoda podwójna-pierwotna), która pozwala używać maksymalnego przepływu jako podprogramu. – tmyklebu