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?