Czy znana jest złożoność tego problemu ścieżki?


9

Instancja: Niekierowany wykresGz dwoma wyróżnionymi wierzchołkami i liczbą całkowitą .stk0

Pytanie: Czy istnieje ścieżka w , taka, że ​​przecina ona co najwyżej trójkątów? (W przypadku tego problemu mówi się, że ścieżka przecina trójkąt, jeśli ścieżka zawiera co najmniej jedną krawędź od trójkąta).stGk


3
Czy to źle? Przypisujemy wagę do każdej krawędzi, a następnie znajdujemy najkrótszą drogę st. Ciężar każdej krawędzi to liczba trójkątów, które obejmują tę krawędź. Ciężar tej ścieżki nie jest równy liczbie napotkanych trójkątów, ale jest to ścieżka st z minimalną liczbą trójkątów. (Możliwym problemem jest to, że możemy policzyć jeden lub więcej trójkątów dwa razy, ponieważ odwiedzamy dwie krawędzie tego trójkąta, ale powodem ich wyboru jest to, że są one mniejsze niż przechodzenie przez drugą krawędź trójkąta, a także mamy proste ścieżki dwie krawędzie trójkąta znajdują się obok siebie).
Saeed

3
@ Tak, nie rozumiem: jaki jest argument, że przeliczanie nie powoduje wybrania ścieżki nieoptymalnej? Twój algorytm jest z pewnością przybliżeniem 2. Może poprawką jest dodanie krawędzi(u,w) dla każdej ścieżki uvw o wadze równej liczbie trójkątów zawierających oba (u,v) i (v,w)
Sasho Nikolov

2
Racja, możemy przejść od u do v, a następnie wybieramy x (jakiś inny węzeł nie w trójkącie uvw), a następnie przechodzimy do w, co jest złe (mój błąd polegał na tym, że przeoczyłem między wierzchołkami, które nie są w trójkącie uvw) , ale poprawka jest poprawna, ponieważ dla każdej ścieżki z α trójkąty na oryginalnym wykresie to ścieżka ciężaru αna wykresie pomocniczym. Ponadto ciężar ścieżki na nowym wykresie jest zawsze co najmniej równy liczbie trójkątów na odpowiedniej ścieżce na oryginalnym wykresie.
Saeed,

1
Zastanawiam się nad tym, nawet jeśli po naprawie nie działa. Przepraszam Andras, jeśli przyniosłem złą nadzieję. Aby zobaczyć, dlaczego poprawka jest zła, rozważ wierzchołkiu>v>w>x na ścieżce P i mamy trójkąt u,v,w i v,w,x i załóżmy krawędzie vx i uwsą przyczyną zbyt wielu trójkątów. Jeśli użyjemy nowej sztucznej krawędzi, która się łączyu>w następnie policzyliśmy trójkąt v,w,xdwa razy. PS: Moje rozumowanie znów było błędne, ponieważ myślałem, że po prostu zastąpimyu>v i v>w z nową (wieloma) krawędziami u>w. Jeśli dodamy te sztuczne krawędzie dla każdej ścieżki, zadziała to trywialnie. Wygląda na to, że jest to NPC.
Saeed

1
Mój pomysł nie zadziała - musiałbym utrzymać wiele zestawów i myślę, że będzie ich zbyt wiele.
reinierpost

Odpowiedzi:


1

Załóżmy, że nie ma żadnych krawędzi wewnętrznych sol.

Dla każdej krawędzi między węzłem vja i vjot w sol, pozwolić mi[ja,jot]=1, i mi[ja,jot]=0jeśli nie ma krawędzi. Obliczaćn×n matryca do[ja,jot]=k=1nmi[ja,k]mi[k,jot], która podaje liczbę ścieżek dwóch przeskoków między każdą parą węzłów vja i vjot. Następnie dla przewagi międzyvja i vjot w sol obliczać D[i,j]=E[i,j]C[i,j] inaczej ustawione D[i,j]=, co daje liczbę trójkątów, których część stanowi krawędź (lub nieskończoność, jeśli nie ma krawędzi). Mnożenie macierzy potrzebne do obliczeńC koszty O(n3) (można go obliczyć szybciej w zależności od rzadkości G).

Teraz oblicz n×n matryca A, takie że A[i,j]=min(D[i,j],mink(D[i,k]+D[k,j]E[i,j])). A są wszystkie najkrótsze ścieżki w D o długości do dwóch powiększonych w celu uwzględnienia ścieżek, które biegną wzdłuż dwóch krawędzi jakiegoś trójkąta.

Teraz wystarczy obliczyć najkrótszą ścieżkę pomiędzy vi i vj w G na nowym wykresie A jest (ważoną) macierzą przylegania za pomocą Dijkstry (ponieważ wszystkie masy krawędzi są dodatnie) tj. i określa, czy A[i,j]k, gdzie A jest zamknięciem tropikalnego semiringu (co daje macierz odległości).

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.