Jak długo trwa znalezienie krótkiego cyklu na losowym wykresie?


9

Pozwolić GG(n,n1/2) być losowym wykresem na n3/2krawędzie Z bardzo dużym prawdopodobieństwemG ma wiele 4motocykle. Naszym celem jest wyprodukowanie dowolnego z nich4- motocykle tak szybko, jak to możliwe.

Załóżmy, że mamy dostęp do G w formie listy sąsiedztwa możemy odnieść sukces ze stałym prawdopodobieństwem w O(n) czas w następujący sposób: wybierz dowolny węzeł v i zacznij generować losowo 2-ścieżki zaczynające się od v; kiedy znajdziemy dwa odrębne2- ścieżki, które dzielą punkt końcowy, gotowe. Tam sąn możliwych punktów końcowych, a do paradoksu urodzinowego odniesiemy sukces ze stałym prawdopodobieństwem po odkryciu n z nich.

Czy możemy zrobić lepiej? W szczególności, czy możliwy jest algorytm o stałym czasie, który osiąga stałe prawdopodobieństwo?


Wydaje mi się, że ten wykres ma zbyt mało krawędzi, aby mieć pożądaną właściwość, jeśli używasz standardowej terminologii, to jest jak G(n,p) próbka z p=(n/C(n,2))=O(n3/2)
kodlu

Dzięki, masz rację, że miałem na myśli p=n1/2(edytowane). Te wykresy będą miałyC4s w dowolnym momencie współdzielenia dwóch węzłów 2sąsiedzi, co dzieje się ze stałym prawdopodobieństwem na parę węzłów.
GMB

Używam tutaj terminologii ( en.wikipedia.org/wiki/Erd%C5%91s%E2%80%93R%C3%A9nyi_model ), w której każda krawędź jest uwzględniana niezależnie z prawdopodobieństwemp- więc krawędzi w oczekiwaniu. p(n2)
GMB,

Odpowiedzi:


6

Nie, nie możesz pokonać zapytań . Wyjaśnię, jak sformalizować szkic dowodowy tego exfret , w sposób, który działa w przypadku algorytmów adaptacyjnych. Wszystko to przewiduje odpowiedź exfret; Właśnie uzupełniam niektóre szczegóły.Θ(n)

Rozważ dowolny (ewentualnie adaptacyjny) algorytm, który wydaje sekwencję zapytań, przy czym każde zapytanie albo „pobiera krawędź listy sąsiadujących wierzchołków ”, albo „sprawdza, czy wierzchołki są połączone krawędzią”. Możemy założyć, że żadne zapytanie nie jest powtarzane, ponieważ każdy algorytm, który je powtarza, może zostać przekształcony w taki, który nigdy nie powtarza żadnego zapytania. Podobnie możemy założyć, że algorytm nigdy nie wykonuje zapytania o połączenie na żadnej parze wierzchołków, o których wiadomo, że są połączone przez krawędź (a mianowicie, testowanie gdy zostało wcześniej zwrócone przez zapytanie pobierania na , lub było poprzednio zwrócone przez zapytanie pobierania wivv,wv,wwvvwlub testowaliśmy wcześniej łączność ).w,v

Niech oznacza zdarzenie, że podczas pierwszych zapytań żaden wierzchołek jest zwracany przez więcej niż jedno zapytanie pobierania, a żadne zapytanie pobierania nie zwraca wierzchołka, który był poprzednio zapytany, i że żadne zapytanie testu połączenia nie zwraca „połączony” „. Udowodnimy, że jeśli . Wynika z tego, że żaden algorytm, który powoduje zapytania może mieć stałego prawdopodobieństwa znalezienia 4 cykli.EkkwPr[Eq]=1o(1)q=o(n)o(n)

Jak to udowodnimy? Obliczmy . Istnieją dwa przypadki: albo th zapytania to sprowadzić zapytanie, czy jest to zapytanie łączność test:Pr[Ek|Ek1]k

  1. Jeśli th zapytania to sprowadzić zapytanie na wierzchołek , istnieją wierzchołki wymienione wśród pierwszych zapytaniami, a jeśli th kwerenda zwraca jeden z tych, wtedy mamy , inaczej będziemy mieli . Teraz odpowiedź na te zapytanie jest równomiernie rozłożona na zestawie wierzchołków, gdzie zawiera wszystkie wierzchołki, które nie zostały zwrócone przez poprzednie zapytania pobierania na , więc odpowiedź na te zapytanie jest równomiernie rozłożona na zestawie o wielkości co najmniejkv2(k1)k1k¬EkEkkSSvknk+1. Prawdopodobieństwo trafienia co najmniej jednego z nich to , więc w tym przypadku .2(k1)/(nk+1)Pr[Ek|Ek1]12(k1)/(nk+1)

  2. Jeśli p zapytanie jest zapytanie testu łączność, to .kPr[Ek|Ek1]11/n

W obu przypadkach, jeśli mamyq=o(n)

Pr[Ek|Ek1]12(k1)(nk+1).

Teraz,

Pr[Eq]=k=1qPr[Ek|Eq1].

Jeśli , tokqn

Pr[Ek|Ek1]12qnq,

więc

Pr[Eq](12qnq)q.

Prawa strona to w przybliżeniu . Gdy , jest to .exp{2q2/(nq)}q=o(n)1o(1)

Podsumowując: gdy . Wynika z tego, że potrzebujesz aby mieć stałe prawdopodobieństwo znalezienia dowolnego cyklu (nie mówiąc już o 4 cyklach).Pr[Eq]=1o(1)q=o(n)Ω(n)


„Jeśli k-te zapytanie jest zapytaniem testowym, to .” Myślę o ? (Nawet jeśli tak, wniosek nadal jest oczywisty.)Pr[Ek|Ek1]11/n11/n
usul

@usul, ups, tak, dziękuję! Naprawiony.
DW,

5

Załóżmy, że możemy zapytać tylko tą krawędź listy przyległości danego wierzchołka (która, jak zakładam, nie jest posortowana) lub czy dwa podane wierzchołki sąsiadują. W takim przypadku powinno się zająć zapytań, aby nawet znaleźć cykl. Jest tak, ponieważ istnieje szansa że wszystkie nasze zapytania pierwszego typu zwracają różne wierzchołki i że wszystkie nasze zapytania drugiego typu zwracają, że dwa wierzchołki nie są połączone.in1o(1)

Popraw mnie, jeśli gdzieś się mylę lub źle zrozumiałem problem.


1
Ten szkic dowodu wydaje mi się, że działa tylko w przypadku algorytmów nieadaptacyjnych (tj. Zapytań ustalonych wcześniej).
usul

@usul Dlaczego miałoby tak być? Whp używamy tylko jednej gałęzi drzewa decyzyjnego.
exfret

Być może powinienem to wyjaśnić. Powinno być jasne, że jeśli otrzymamy odpowiedzi na nasze pytania zgodnie z zaleceniami, nie będziemy w stanie wygenerować 4-cykli ze stałym prawdopodobieństwem. Jednak dla każdego drzewa decyzyjnego o głębokości istnieje szansa że zostaniemy wysłani w dół takiej gałęzi. o(n)1o(1)
exfret

Dzięki! (Nieco arbitralnie) zaakceptowałem drugą rozwiniętą wersję, ale wygląda na to, że ją masz. Doceń odpowiedź.
GMB

1
@GMB Myślę, że podjąłeś właściwą decyzję; drugi jest odpowiedzią o wiele lepszej jakości i zasługuje na to, aby inni go zobaczyli.
exfret
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.