Algorytmy randomizowane (czas wielomianowy, wynik boolowski) należą do klasy złożoności obliczeniowej RP, która jest podzbiorem NP, w którym znajdują się algorytmy niedeterministyczne (czas wielomianowy, wynik boolowski) i nadzbiór P, gdzie deterministyczny (czas wielomianowy, wynik boolowski) algorytmy rezydują.
Złożoność podzbiorów polega na zmniejszaniu problemów z jednego zestawu do drugiego. Zatem RP ⊆ NP wyklucza możliwość zrandomizowanych algorytmów, które są również niedeterministyczne, ponieważ definitywnie nadzbiór zawiera podzbiór. Podzbiór oznacza, że każdy algorytm RP (lub dowolny algorytm RP-complete) może zostać zredukowany do jakiegoś algorytmu NP (lub dowolnego algorytmu NP-complete). P jest podzbiorem RP, ponieważ każdy problem w P może zostać zredukowany do problemu w RP, w którym ilość niekontrolowanej entropii wynosi 0.
Stycznie jest to analogiczne do tego, jak każdy problem w NC (obliczenia równoległe) można zredukować do problemu w P , symulując obliczenia równoległe w redukcji do problemu szeregowego w P, ale nie zostało jeszcze udowodnione, że odwrotność jest prawdziwa, tj. że każdy problem w P można zredukować do problemu w NC, ani nie udowodniono, że nie jest prawdziwy, tj. nieprawdopodobny dowód, że problem P-zupełny nie daje się zredukować do problemu w NC. Możliwe, że występują problemy, które są z natury szeregowe i nie mogą być obliczane równolegle, ale udowodnienie, że udowodnienie P ≠ NC wydaje się nieprawdopodobne (z powodów zbyt stycznych, aby omawiać w tej odpowiedzi).
Mówiąc bardziej ogólnie (tj. Nie ograniczając się do wyników typu boolowskiego), algorytmy losowe różnią się od algorytmów deterministycznych tym, że część entropii pochodzi z zewnątrz . Algorytmy randomizowane odróżnia się od algorytmów niedeterministycznych, ponieważ entropia jest ograniczona , a zatem można udowodnić, że algorytmy randomizowane (a nie niedeterministyczne) zawsze kończą się.
Nieprzewidywalność niedeterministycznych algorytmów wynika z niemożności wyliczenia wszystkich możliwych permutacji entropii wejściowej (co skutkuje nieprzewidywalnością zakończenia). Nieprzewidywalność losowego algorytmu wynika z niemożności sterowaniacała entropia wejściowa (co powoduje nieprzewidywalność wyniku nieokreślonego, chociaż można przewidzieć szybkość nieprzewidywalności). Żadne z nich nie jest stwierdzeniem o nieprzewidywalności poprawnej odpowiedzi na problem, ale raczej nieprzewidywalność przejawia się odpowiednio w bocznym kanale zakończenia i nieokreślonym wyniku. Wygląda na to, że wielu czytelników łączy nieprzewidywalność w jednym obszarze z nieprzewidywalnością poprawnego wyniku, co jest splotem, którego nigdy nie napisałem (przejrzyj historię edycji).
Kluczowe jest zrozumienie, że niedeterminizm jest zawsze (w jakiejkolwiek nauce lub w użyciu tego terminu) niezdolnością do wyliczenia uniwersalnej (tj. Nieograniczonej) entropii. Natomiast randomizacja odnosi się do dostępu do innego źródła entropii (w programach entropii innej niż, a zatem nie pod kontrolą zmiennych wejściowych), które mogą, ale nie muszą być nieograniczone.
Dodałem następujący komentarz poniżej najpopularniejszej obecnie odpowiedzi do drugiego wątku, który zadaje podobne pytanie.
Wszystkie nauki stosują tę samą definicję niedeterminizmu zjednoczoną na koncepcji nieograniczonej entropii. Nieprzewidywalne wyniki we wszystkich naukach wynikają z niemożności wyliczenia z góry wszystkich możliwych wyników algorytmu (lub systemu), ponieważ akceptuje on stany nieograniczone, tj. Klasę złożoności NP. Określenie konkretnego wkładu w celu zaobserwowania, czy się on zatrzymuje, i zauważenie, że wynik jest idempotentny, jest równoważne w innych naukach z utrzymaniem reszty entropii wszechświata na stałym poziomie, powtarzając tę samą zmianę stanu. Obliczenia umożliwiają izolację entropii, podczas gdy nauki przyrodnicze nie.
Dodając jedne z najlepszych komentarzy, aby dodać wyjaśnienie mojego punktu na temat jedynego istotnego rozróżnienia między randomizowanym a niedeterministycznym.
To naprawdę dość eleganckie i łatwe do dostrzeżenia rozróżnienie, gdy wszyscy przestaniecie go mętnić, próbując opisać go z operacyjnego punktu widzenia, a nie z istotnego punktu widzenia entropii.
@reinierpost wszyscy łączą różnicę między randomizacją a niedeterminizmem. To powoduje, że twój komentarz jest zagmatwany. Algorytm reaguje na interakcje entropii wejściowej (zmiennej) i jej wewnętrznej entropii kodu źródłowego (niezmienniczej). Niedeterminizm jest nieograniczoną entropią. Niezmienna entropia może nawet być wewnętrznie nieograniczona, na przykład poprzez rozszerzenie cyfr π . Randomizowane jest to, że część entropii nie jest sprzężona z określonym wejściem (tzn. Może pochodzić z wywołania systemowego /dev/random
lub symulowanej losowości, np. NFA lub PRNG).
.
@Raphael formalna definicja niedeterministycznego skończonego automa (NFA) jest skończoną entropią wejściową (dane: 5-krotna). Zatem każdy NFA może działać na deterministycznej maszynie Turinga, tj. Nie wymaga niedeterministycznej maszyny Turinga. Zatem NFA nie należą do klasy niedeterministycznych problemów. Pojęcie „niedeterminizmu” w NFA polega na tym, że jego determinizm (choć wyraźnie obecny, ponieważ każdy NFA można przekształcić w DFA) nie jest wyraźnie rozszerzony - nie to samo co niedeterminizm obliczeń
.
@Raphael twierdzenie, że „niedeterminizm” w NFA jest naprawdę przypadkowością, jest sensem mojej definicji rozróżnienia między przypadkowością a niedeterminizmem. Z mojej definicji wynika, że przypadkowość polega na tym, że część entropii, która nie jest pod kontrolą, wiedzy (lub pożądanego nieprecyzyjnego rozszerzenia w przypadku NFA) danych wejściowych do programu lub funkcji. Natomiast prawdziwy niedeterminizm to niemożność poznania entropii w każdym przypadku, ponieważ jest ona nieograniczona. Właśnie to odróżnia losowość od niedeterminizmu. Zatem NFA powinien być przykładem tego pierwszego, a nie drugiego, jak twierdziłeś.
.
@Raphael, jak już wyjaśniłem, pojęcie niedeterminizmu w NFA łączy niedeterministyczny ze skończoną entropią. Zatem niedeterminizm jest lokalną koncepcją nie rozszerzania determinizmu jako formy kompresji lub wygody, dlatego nie mówimy, że NFA są niedeterministyczne, a raczej mają wygląd losowości wyroczni, która nie chce obliczyć deterministycznej ekspansji. Ale wszystko to jest mirażem, ponieważ określa się go mianem rozwinięcia deterministycznie, bo entropia nie jest nieograniczona, czyli skończona.
Słowniki to narzędzia. Naucz się z nich korzystać.
losowy przymiotnik
Statystyka. lub charakteryzujący proces selekcji, w którym każda pozycja zestawu ma równe prawdopodobieństwo wyboru.
będąc lub odnosząc się do zbioru lub elementu zbioru, z których każdy element ma równe prawdopodobieństwo wystąpienia
Zatem randomizacja wymaga jedynie, aby część wejściowej entropii była możliwa do przywrócenia, co jest zatem zgodne z moją definicją, że część entropii wejściowej nie jest kontrolowana przez wywołującą funkcję. Zauważ, że randomizacja nie wymaga, aby entropia wejściowa była nierozstrzygalna w stosunku do zakończenia.
W informatyce algorytm deterministyczny jest algorytmem, który przy określonym wejściu zawsze będzie wytwarzał ten sam wynik, a maszyna leżąca u jego podstaw zawsze przechodzi przez tę samą sekwencję stanów.
Formalnie algorytm deterministyczny oblicza funkcję matematyczną; funkcja ma unikalną wartość dla dowolnego wejścia w swojej dziedzinie, a algorytm jest procesem, który wytwarza tę konkretną wartość jako wynik.
Algorytmy deterministyczne można zdefiniować w kategoriach maszyny stanu: stan opisuje, co robi maszyna w określonym momencie. Maszyny stanowe przechodzą dyskretnie z jednego stanu do drugiego. Zaraz po wprowadzeniu danych wejściowych maszyna znajduje się w stanie początkowym lub początkowym. Jeśli maszyna jest deterministyczna, oznacza to, że od tego momentu jej obecny stan określa, jaki będzie jej następny stan; jego przebieg przez zbiór stanów jest z góry określony. Zauważ, że maszyna może być deterministyczna i wciąż nigdy się nie zatrzyma ani nie zakończy, dlatego nie może dostarczyć wyniku.
To mówi nam, że algorytmy deterministyczne muszą być całkowicie określone przez stan wejściowy funkcji, tzn. Musimy być w stanie udowodnić, że funkcja zakończy się (lub nie zakończy) i że nie może być nierozstrzygalna. Pomimo mętnej próby Wikipedii opisania niedeterministycznego, jedyną antytezą deterministycznej, jak zdefiniowano powyżej w Wikipedii, są algorytmy, których stan wejściowy (entropia) jest źle zdefiniowany. Jedynym sposobem, w jaki stan wejściowy może być źle zdefiniowany, jest to, kiedy jest on nieograniczony (dlatego nie można go deterministycznie wstępnie przeanalizować). Właśnie to odróżnia niedeterministyczną maszynę Turinga (i wiele rzeczywistych programów, które są napisane we wspólnych kompletnych językach Turinga, takich jak C, Java, JavaScript, ML itp.) Od deterministycznych baz TM i języków programowania, takich jak HTML, formuły arkuszy kalkulacyjnych, Coq, Epigram,
W teorii złożoności obliczeniowej algorytmy niedeterministyczne to takie, które na każdym możliwym kroku mogą pozwolić na wiele kontynuacji (wyobraź sobie człowieka idącego ścieżką w lesie i za każdym razem, gdy idzie dalej, musi wybrać widelec na drodze, którą chce brać). Algorytmy te nie znajdują rozwiązania dla każdej możliwej ścieżki obliczeniowej; mają jednak gwarancję, że dojdą do właściwego rozwiązania dla pewnej ścieżki (tj. człowiek idący przez las może znaleźć swoją kabinę tylko wtedy, gdy wybierze kombinację „prawidłowych” ścieżek). Wybory można interpretować jako domysły w procesie wyszukiwania.
Wikipedia i inni starają się połączyć losowość z niedeterminizmem, ale jaki jest sens posiadania tych dwóch pojęć, jeśli nie chcesz ich elokwentnie rozróżniać?
Wyraźnie determinizm dotyczy zdolności do określania. Wyraźnie randomizacja polega na tym, aby część entropii była możliwa do wyposażenia.
Włączenie losowej entropii w stanie algorytmu nie jest konieczne, aby stało się nieokreślone. Na przykład PRNG może mieć wymagany rozkład statystyczny, ale może również być całkowicie deterministyczny.
Ludzie z niskim ilorazem inteligencji łączą pojęcia ortogonalne. Oczekuję od tej społeczności czegoś lepszego!