Czy konieczne jest wywołanie mnożenia macierzy

20

Pazur to . Trywialny algorytm wykryje pazur w czasie . Można to zrobić w , gdzie jest wykładnikiem szybkiego mnożenia macierzy, w następujący sposób: weź podrozdział wywołany przez dla każdego wierzchołka i znajdź trójkąt w jego uzupełnienie. O ( n 4 ) O ( n ω + 1 ) ω N [ v ] vK1,3O(n4)O(nω+1)ωN[v]v

o(nω+1)O(nc)O(nmax(c,2))Ω(nω)

Pytanie:

  1. Czy jest w tym jakiś postęp? Czy jakikolwiek postęp w pokazaniu, że jest to niemożliwe?
  2. Czy są inne naturalne problemy z algorytmami czasu , które są najlepsze?O(nω+1)

Uwaga:

  1. Bezpośrednio proszę o wykrycie pazura zamiast rozpoznawania grafów bez pazurów. Chociaż algorytm zwykle rozwiązuje oba, istnieje kilka wyjątków.
  2. W Podręczniku algorytmów i informatyki teoretycznej twierdzi się, że można go znaleźć w czasie liniowym, ale była to tylko literówka (patrz „wydajne reprezentacje grafów”).
Yixin Cao
źródło
Możesz użyć metody znalezienia trójkąta przez Alona i in. W , dla każdego węzła, który kończy się na który jest lepiej niż jeśli wykres nie jest zbyt gęsty. O(|E|1.41)O(|V||E|1.41)|V|ω+1
RB
@RB, dziękuję za zwrócenie na to uwagi. Podstawową ideą jest nadal uruchamianie -tego algorytmu detekcji niezależnie od trójkąta , czego chcę uniknąć. n
Yixin Cao
Jak możemy spodziewać się znalezienia algorytmu niezwiązanego ze znalezieniem trójkąta? Ponieważ niezależnie od algorytmu należy sprawdzać sąsiadów każdego wierzchołka. Mam na myśli, że własność jest własnością lokalną, z wyjątkiem stałej różnicy współczynników każdy wierzchołek powinien być widoczny. (Lub nie wyobrażam sobie żadnego naturalnego algorytmu, który omija tę lokalizację). Czy masz jakiś niejasny pomysł?
Saeed
2
Może warto wspomnieć, że jeśli znajdziemy pazur w czasie f (n), możemy również znaleźć trójkąt w czasie f (n + 1) (wystarczy uzupełnić wykres i dodać jeszcze jeden wierzchołek połączony ze wszystkimi ), więc nie powinniśmy mieć nadziei na znalezienie czegoś lepszego niż . nω
domotorp
1
@domotorp, wydaje się, że część jest jasna, na odwrót nie jest jasne, to znaczy, dlaczego potrzebujemy wyszukiwania liniowego. Jak zauważył również Yixin, może istnieć inny algorytm, który nie wykorzystuje algorytmu znajdowania trójkątów i rozwiązuje problem w , co moim zdaniem jest trudne do znalezienia takiego algorytmu i prawdopodobnie jest łatwiejsze aby pokazać, że dowolny algorytm wykorzystuje wyszukiwanie trójkątów jako podprogram (lub może być konwertowany) z liniowym wyszukiwaniem. o(nω+1)
Saeed,

Odpowiedzi:

16

Myślę, że możemy zrobić nieco lepiej niż przypadku gęstych grafów, stosując mnożenie macierzy prostokątnej. Podobny pomysł zastosowali Eisenbrand i Grandoni („O złożoności kliki o ustalonych parametrach i dominującym zbiorze”, Theoretical Computer Science tom 326 (2004) 57–67) do wykrywania 4-kliki.O(n1+ω)

Niech będzie wykresem, na którym chcemy wykryć istnienie pazura. Niech być zestaw (zamówione) pary wierzchołków V . Rozważ następującą macierz logiczną M o rozmiarze | V | × | A | : każdy wiersz jest indeksowany przez niektóre u V , każda kolumna jest indeksowana przez niektóre ( v , w ) A , a odpowiedni wpis to jeden wtedy i tylko wtedy, gdy { u , v } G=(V,E)AVM|V|×|A|uV(v,w)A , { V , W } E i { U , W } E . Rozważmy logiczny produkt macierzy M i jego transponowaniem M T . Wykres G ma pazur wtedy i tylko wtedy, gdy istnieje { u , v } E, tak że wpis M M T w wierszu indeksowanym przez u, a kolumna indeksowanym przez v wynosi jeden.{u,v}E{v,w}E{u,w}EMMTG{u,v}EMMTuv

Złożoność tego algorytmu jest zasadniczo złożonością obliczania iloczynu logicznego macierzy macierzy n 2 × n , gdzie n oznacza liczbę wierzchołków na wykresie. Wiadomo, że taki produkt macierzowy można obliczyć w czasie O ( n 3,3 ) , który jest lepszy niż O ( n 1 + ω ) dla najlepiej znanej górnej granicy ω . Oczywiście, jeśli ω = 2 (zgodnie z przypuszczeniami), wówczas dwa podejścia dają tę samą złożoność On×n2n2×nnO(n3.3)O(n1+ω)ωω=2 .O(n3)

Francois Le Gall
źródło
Świetny! Właśnie tego chcę na pierwsze pytanie: tylko jedno wywołanie mnożenia macierzy, choć większe. Zaczekam na więcej komentarzy lub odpowiedzi na moje drugie pytanie, zanim przyjmuję je jako odpowiedź.
Yixin Cao
15

Nie wiem, jak uniknąć robi mnożenia macierzy, ale można analizować je w taki sposób, że czas to skutecznie, że z mniejszej liczby z nich. Ta sztuczka pochodzi zn

Kloks, Ton; Kratsch, Dieter; Müller, Haiko (2000), „Skuteczne znajdowanie i liczenie małych indukowanych subgrafów”, Information Processing Letters 74 (3–4): 115–121, doi: 10.1016 / S0020-0190 (00) 00047-8, MR 1761552.

Pierwszą obserwacją jest to, że gdy idziesz do mnożenia macierzy, macierze tak naprawdę nie są , ale d × d, gdzie d jest stopniem każdego wierzchołka, ponieważ to, czego szukasz, to trójkąt w sąsiedztwo każdego wierzchołka.n×nd×dd

Po drugie, na wykresie bez pazurów każdy wierzchołek musi mieć O(m)O(m)n

2mO(m)O(m)O(m(1+ω)/2)O(nmω/2)

David Eppstein
źródło
Wow, to sprytny pomysł, zastanawiałem się, czy można przeprowadzić wyszukiwanie podliniowe (faktycznie to obalając) i nawet nie pomyślałem o wewnętrznych właściwościach problemu.
Saeed
Dziękuję David. Przez chwilę zostawiam otwarte, ponieważ moje drugie pytanie wydaje się jeszcze nie zauważone.
Yixin Cao