Dowód Adlemana, że jest zawarty w pokazuje, że jeśli istnieje algorytm losowy dla problemu, który działa w czasie na wejściach o rozmiarze , to istnieje również algorytm deterministyczny dla problemu, który działa w czasie na materiale o wielkości [algorytm prowadzi randomizowane algorytm na niezależnych łańcuchów losowości. Musi istnieć losowość powtarzanego algorytmu, który jest dobry dla wszystkichP / p o l ymożliwe dane wejściowe]. Algorytm deterministyczny jest nierównomierny - może zachowywać się inaczej dla różnych wielkości wejściowych. Argument Adlemana pokazuje, że - jeśli nie zależy na jednolitości - randomizacja może przyspieszyć algorytmy tylko o czynnik liniowy w wielkości wejściowej.
Jakie są konkretne przykłady, w których randomizacja przyspiesza obliczenia (zgodnie z naszą najlepszą wiedzą)?
Jednym z przykładów są testy tożsamości wielomianowej. Tutaj wejściem jest obwód arytmetyczny o wielkości n obliczający wielomian zmienny m na polu, a zadaniem jest ustalenie, czy wielomian jest identyczny zero. Randomizowany algorytm może oceniać wielomian w losowym punkcie, podczas gdy najlepszy znany deterministyczny algorytm (i prawdopodobnie najlepszy, jaki istnieje) ocenia wielomian w wielu punktach.
Innym przykładem jest minimalne drzewo opinające, w którym najlepszym randomizowanym algorytmem Kargera-Kleina-Tarjana jest czas liniowy (a prawdopodobieństwo błędu jest wykładniczo małe!), Podczas gdy najlepszy algorytm deterministyczny Chazelle działa w czasie ( jest odwrotną funkcją Ackermanna, więc przyspieszenie randomizacji jest naprawdę małe). Co ciekawe, Pettie i Ramachandran udowodnili, że jeśli istnieje nierównomierny deterministyczny algorytm liniowego czasu dla minimalnego drzewa rozpinającego, wówczas istnieje również jednolity deterministyczny algorytm liniowego czasu.
Jakie są inne przykłady? Jakie znasz przykłady, w których przyspieszenie randomizacji jest duże, ale prawdopodobnie dlatego, że nie znaleźliśmy jeszcze wystarczająco wydajnych algorytmów deterministycznych?
źródło
Odpowiedzi:
Nie wiem, czy randomizacja „powinna” czy „nie powinna” pomóc, jednak badanie pierwszeństwa liczb całkowitych może być wykonane w czasie przy użyciu randomizowanego Millera – Rabina, podczas gdy o ile mi wiadomo, najbardziej znanymi algorytmami deterministycznymi są przyjmując bezwzględnie GRH (deterministyczny Miller – Rabin) lub bezwarunkowo (warianty AKS).O~(n2) O~(n4) O~(n6)
źródło
Starym przykładem jest obliczanie objętości. Biorąc pod uwagę polytop opisany przez wyrocznię członkowską, istnieje algorytm losowy działający w czasie wielomianowym, aby oszacować jego objętość do współczynnika , ale żaden algorytm deterministyczny nie może zbliżyć się nawet bezwarunkowo .1+ϵ
Pierwszym przykładem takiej randomizowanej strategii był Dyer, Frieze i Kannan, a wynik twardości dla algorytmów deterministycznych to Bárány i Füredi. Alistair Sinclair ma ładne notatki z wykładów na ten temat .
Nie jestem pewien, czy w pełni rozumiem część pytania „i nie powinno”, więc nie jestem pewien, czy to pasuje do rachunku.
źródło
nie wiem, czy to odpowiada na twoje pytanie (lub przynajmniej jego część). Ale w rzeczywistych przykładach, w których randomizacja może przyspieszyć, są problemy z optymalizacją i związek z twierdzeniem No Free Lunch ( NFL ) .
Istnieje artykuł „Być może nie darmowy lunch, ale przynajmniej darmowa przystawka”, w którym wykazano, że zastosowanie algorytmów randomizacji (optymalizacji) może mieć lepszą wydajność.
Bibliografia:
Podsumowanie posiłków bez lunchu (i bezpłatnych obiadów) autorstwa Davida H. Wolperta, Ile kosztuje kolacja? ( zauważ, że twierdzenia typu NFL nigdy nie określają rzeczywistej „ ceny ” ze względu na ich rodzaj dowodu)
w szczególności w przypadku optymalizacji uogólnionej (GO):
Wreszcie prosta (i nie tak prosta) uwaga, dlaczego randomizacja (w takiej czy innej formie) może zapewnić lepszą wydajność niż algorytmy ściśle deterministyczne.
źródło
Najlepszy przykład znajduje się w obszarze uważanym obecnie za najlepszych kandydatów na OWF, gdzie wydaje się, że każda popularna OWF, która jest ugotowana niespodziewanie, ma losowy algorytm subwykładniczy, podczas gdy nie istnieje deterministyczny algorytm sub wykładniczy (na przykład faktoryzacja liczb całkowitych). W rzeczywistości w wielu przypadkach prawdopodobnie istnieje wydajny algorytm z pewnymi ciągami porad (kryptoanaliza).
źródło
Jeśli masz algorytm wykorzystujący randomizację, zawsze możesz go zastąpić deterministycznym algorytmem wykorzystującym liczby pseudolosowe: weź opis problemu, oblicz kod skrótu, użyj tego kodu skrótu jako materiału wyjściowego dla dobrego generatora liczb pseudolosowych . W praktyce to właśnie może się zdarzyć, gdy ktoś zaimplementuje algorytm przy użyciu randomizacji.
Jeśli pominiemy kod skrótu, wówczas różnica między tym algorytmem a algorytmem wykorzystującym prawdziwą randomizację polega na tym, że mogę przewidzieć sekwencję wygenerowanych liczb losowych i mógłbym stworzyć problem taki, że przewidywana liczba losowa zastosowana do mojego problemu zawsze będzie podjąć najgorszą możliwą decyzję. Na przykład dla Quicksort z pseudolosową osią obrotu mógłbym zbudować tablicę wejściową, w której pseudolosowy pivot zawsze znajdzie największą możliwą wartość w tablicy. Z prawdziwą przypadkowością nie jest to możliwe.
W przypadku kodu skrótu bardzo trudno byłoby mi skonstruować problem, w którym liczby pseudolosowe przynoszą najgorsze wyniki. Nadal mogę przewidzieć liczby losowe, ale jeśli zmienię problem, sekwencja liczb pseudolosowych zmieni się całkowicie. Mimo to udowodnienie, że nie mogę zbudować takiego problemu , byłoby prawie niemożliwe .
źródło