Próbuję znaleźć maksymalny niezależny zestaw wykresu biparytu.
W niektórych notatkach „13 maja 1998 r. - University of Washington - CSE 521 - Zastosowania przepływu sieci” znalazłem :
Problem:
Biorąc pod uwagę dwudzielny wykres , znalezienie niezależnego zestawu , który jest tak duży, jak to tylko możliwe, w którym i . Zestaw jest niezależny, jeśli nie ma krawędzi między elementami zestawu.
Rozwiązanie:
Zbuduj wykres przepływu na wierzchołkach . Dla każdej krawędzi istnieje nieskończona krawędź pojemności od do . Dla każdego istnieje krawędź pojemności jednostki od do , a dla każdego istnieje krawędź pojemności jednostki od do .
Głębokość cięcia znajduje się skończone , z i . Niech i . Zestaw jest niezależny, ponieważ nie ma nieskończonych krawędzi pojemności przecinających cięcie. Rozmiar nacięcia to. Dzięki temu, aby niezależny zestaw był tak duży, jak to możliwe, tworzymy cięcie tak małe, jak to możliwe.
Weźmy to jako wykres:
A - B - C
|
D - E - F
Możemy podzielić to na dwuczęściowy wykres w następujący sposób
Widzimy przez poszukiwaniu brute force, że jedynym Maksymalna niezależnego zestawu jest . Spróbujmy rozwiązać powyższe rozwiązanie:
Tak więc zbudowana macierz przyległości sieci przepływowej byłaby:
Tutaj utknąłem, najmniejsze ograniczone ograniczenie pojemności, jakie widzę, jest banalne: o pojemności 3.
Zastosowanie tego cięcia prowadzi do nieprawidłowego rozwiązania:
Podczas gdy spodziewaliśmy się ? Czy ktoś może dostrzec, gdzie popełniłem błąd w moim rozumowaniu / pracy?
źródło
Odpowiedzi:
Uzupełnieniem maksymalnego niezależnego zestawu jest minimalna osłona wierzchołków.
Aby znaleźć minimalną osłonę wierzchołków na wykresie dwustronnym, zobacz twierdzenie Königa .
źródło
Podane rozwiązanie jest wyraźnie niepoprawne, jak wykazano w kontrprzykładzie. Zauważ, że wykres U + V jest składnikiem połączonym przez krawędzie o nieskończonej pojemności. Dlatego każde prawidłowe cięcie będzie musiało zawierać wszystkie A, B, C, D, E, F po tej samej stronie.
Próbując prześledzić, skąd pochodzi rozwiązanie: http://www.cs.washington.edu/education/courses/cse521/01sp/flownotes.pdf cytuje Network Flows autorstwa Ahuji, Magnanti i Orlina w przypadku niektórych problemów. Ta książka nie jest objęta prawami autorskimi i można ją pobrać ze strony http://archive.org/details/networkflows00ahuj, ale wydaje się, że nie zawiera tego problemu i rozwiązania (szukanie każdego wystąpienia „dwustronnego”).
Zauważ, że paragraf wyjaśnienia rozwiązania nie pokazuje, że najmniejsze cięcie wykresu, który tworzy, odpowiada maksymalnemu niezależnemu zestawowi. To tylko pokazuje sposób, aby dostać się niezależny zestaw.
A jednak możesz zobaczyć, co algorytm próbuje zrobić. Oto, co odpowiada rzeczywistemu maksymalnemu niezależnemu zestawowi pod względem jego s, t cięcia:
Podkreślono krawędź nieskończonej pojemności, która łamie algorytm.
Nie jestem pewien, jak naprawić algorytm zgodnie z przeznaczeniem. Może koszt nieskończonej krawędzi powinien wynosić zero, jeśli idzie wstecz (tzn. Gdzie przechodzi od S do T, ale przecina stronę T do strony S)? Ale czy przy tej nieliniowości nadal łatwo jest znaleźć minimalny / maksymalny przepływ? Myśląc o sposobie pomostu z rozwiązania @Jukka Suomela do algorytmu z pytania, trudno jest przejść od maksymalnego dopasowania do minimalnej osłony wierzchołków: znalezienie maksymalnego dopasowania może być wykonane przez przepływ maksymalny podobny do algorytmu, w jaki sposób odzyskujesz z niego minimalną osłonę wierzchołków za pomocą algorytmu podobnego do przepływu? Jak opisano tutaj, po znalezieniu maksymalnego dopasowania krawędzie między U i V zostają skierowane w celu znalezienia minimalnej osłony wierzchołków. Ponownie, to nie pokazuje, że wystarczy proste zastosowanie minimalnego / maksymalnego przepływu, aby rozwiązać ten problem.
źródło
źródło
Cięcie powinno odbywać się na rzeczywistym przepływie, a nie na wydajnościach. Ponieważ przepływ z s jest skończony, każde cięcie {S, T} będzie skończone. Reszta jest wyjaśniona powyżej.
źródło
źródło