Instancja: Niekierowany wykresz dwoma wyróżnionymi wierzchołkami i liczbą całkowitą .
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).
cc.complexity-theory
graph-algorithms
Andras Farago
źródło
źródło
Odpowiedzi:
Załóżmy, że nie ma żadnych krawędzi wewnętrznychsol .
Dla każdej krawędzi między węzłemvja i vjot w sol , pozwolić mi[ i , j ] = 1 , i mi[ i , j ] = 0 jeśli nie ma krawędzi. Obliczaćn × n matryca do[ i , j ] =∑nk = 1mi[ i , k ] ⋅ E.[ k , j ] , 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 obliczn×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ędzyvi 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).
źródło