Znajdź cykl ujemny z ograniczeniami wierzchołków

11

W przypadku wykresu z ważonymi krawędziami, jak możemy znaleźć cykl ujemny, który zawiera co najmniej jeden wierzchołek w danym zestawie wierzchołków ? Dzięki.{V1,V2,,Vk}

Tianyi Cui
źródło
To pytanie jest dość niejasne. Ciężary na czym, krawędziach lub wierzchołkach? Co to jest , czy jest wierzchołkiem czy zbiorem wierzchołków? {V1,V2,,Vk}V1
Yixin Cao
@YixinCao Dzięki za odnotowanie, edytowane: waga na krawędziach, jest wierzchołkiem. V1
Tianyi Cui

Odpowiedzi:

8

Jeśli nie chcesz, aby cykl był prosty, podziel wykres (skierowany) na jego silnie połączone komponenty i dla każdego komponentu zawierającego jeden z podanych wierzchołków sprawdź, czy komponent zawiera cykl ujemny. Jeśli żaden składnik tego nie robi, nie ma cyklu ujemnego zawierającego jakiekolwiek V i . Ale jeśli ma to jakiś składnik, można znaleźć (nie prosty) cykl ujemny zawierający V i , pobierając wiele kopii cyklu ujemnego i dodając do tych ścieżek do i od pewnego wierzchołka cyklu do V i . (Całkowity czas znalezienia niejawnej reprezentacji pożądanego cyklu będzie taki sam jak czas znalezienia ujemnego cyklu na ukierunkowanym wykresie, np. O (ViViViVi , jeśli pamiętam.)O(nm)

Jeśli nie wymagają cykl się prosta, to problem staje NP-zupełny, nawet jeśli tylko jeden wierzchołek jest podane. (Możesz zredukować ścieżkę hamiltonianu do problemu: aby znaleźć ścieżkę hamiltonianu z danego źródła S do danego ujścia T na danym wykresie G , nadaj istniejącej krawędzi wagę -1, a następnie dodaj sztuczny wierzchołek V 1 z dwiema krawędziami koszt N / 2 - 0,01 każdy, jeden od V 1 do S, a drugi od T do V 1 ).V1STGV1N/20.01V1S.T.V.1

Jeśli pozwolisz cyklowi powtarzać wierzchołki, ale nie krawędzie, uważam, że nadal jest NP-kompletny (przez podobne zmniejszenie, ale dzielenie każdego wierzchołka na skierowaną krawędź ( v , v ) w standardowy sposób).v(v,v)

Neal Young
źródło
2
Podoba mi się ta odpowiedź znacznie lepiej niż moja.
David Eppstein,
6

Zakładam, że twoje dane wejściowe są grafem ukierunkowanym; Nie wiem, jak to zrobić w przypadku niekierowanej sprawy.

Wykonaj kopii zestawu wierzchołków wykresu, gdzie n jest liczbą wierzchołków na wykresie. Zastąpić każdą krawędź z u do v w oryginalnym wykresie krawędziami, które wykraczają od skopiować I od U skopiować I + 1 od v , dla wszystkich wyborów I . Dodatkowo, jeśli u należą do określonego wierzchołka zestawu, ale nie inaczej, obejmują również krawędź, która przechodzi od kopii i o u skopiować 0 o V .nnuvjauja+1vjaujau0v

Cykle na rozwiniętym wykresie wszystkie są projektowane z powrotem do cykli na oryginalnym wykresie, ale każdy cykl na rozwiniętym wykresie zawiera jeden z określonych wierzchołków (w przeciwnym razie nie można przejść przez warstwy ekspansji), więc oryginalny wykres zawiera cykl ujemny zawierający określony wierzchołek w rozwiniętym wykresie zawiera dowolny cykl ujemny.

David Eppstein
źródło
Jeśli oryginalny wykres ma wierzchołków i m krawędzi, nowo zbudowany wykres będzie miał n 2 wierzchołków i n m krawędzi. Znalezienie w nim cykli ujemnych będzie wymagało czasu O ( n 3 m ) , który wydaje się dość duży. Nadal czekam na lepsze rozwiązanie i wielkie dzięki! nmn2)nmO(n3)m)
Tianyi Cui
2
Być może bardziej problematyczne, cykle, które znajdzie, niekoniecznie będą proste. Czy potrzebujesz prostych cykli ujemnych?
David Eppstein,