Pozwolić być losowym wykresem na krawędzie Z bardzo dużym prawdopodobieństwem ma wiele motocykle. Naszym celem jest wyprodukowanie dowolnego z nich- motocykle tak szybko, jak to możliwe.
Załóżmy, że mamy dostęp do w formie listy sąsiedztwa możemy odnieść sukces ze stałym prawdopodobieństwem w czas w następujący sposób: wybierz dowolny węzeł i zacznij generować losowo -ścieżki zaczynające się od ; kiedy znajdziemy dwa odrębne- ścieżki, które dzielą punkt końcowy, gotowe. Tam są możliwych punktów końcowych, a do paradoksu urodzinowego odniesiemy sukces ze stałym prawdopodobieństwem po odkryciu 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?
Odpowiedzi:
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 wi v v,w v,w w v v w lub 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.Ek k w Pr[Eq]=1−o(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|Ek−1] k
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 najmniejk v 2(k−1) k−1 k ¬Ek Ek k S S v k n−k+1 . Prawdopodobieństwo trafienia co najmniej jednego z nich to , więc w tym przypadku .≤2(k−1)/(n−k+1) Pr[Ek|Ek−1]≥1−2(k−1)/(n−k+1)
Jeśli p zapytanie jest zapytanie testu łączność, to .k Pr[Ek|Ek−1]≥1−1/n−−√
W obu przypadkach, jeśli mamyq=o(n−−√)
Teraz,
Jeśli , tok≤q≤n−−√
więc
Prawa strona to w przybliżeniu . Gdy , jest to .exp{−2q2/(n−q)} q=o(n−−√) 1−o(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]=1−o(1) q=o(n−−√) Ω(n−−√)
źródło
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.i n−−√ 1−o(1)
Popraw mnie, jeśli gdzieś się mylę lub źle zrozumiałem problem.
źródło