Mam na myśli to [zabawne] pytanie. Dlaczego niedeterministyczny automat skończony nazywa się niedeterministyczny, podczas gdy my definiujemy przejścia dla danych wejściowych. Cóż, mimo że istnieje wiele przejść i epsilon , są one zdefiniowane, co oznacza, że maszyna jest deterministyczna dla tych przejść. Co oznacza, że jest deterministyczny.
finite-automata
nondeterminism
Madhusoodan P.
źródło
źródło
Odpowiedzi:
„Deterministyczny” oznacza „jeśli dwukrotnie postawisz system w tej samej sytuacji, gwarantuje się, że dokonasz tego samego wyboru za każdym razem”.
„Niedeterministyczny” oznacza „niedeterministyczny”, czyli innymi słowy „jeśli postawisz system dwukrotnie w tej samej sytuacji, może on lub nie dokonać tego samego wyboru za każdym razem”.
Niedeterministyczny automat skończony (NFA) może mieć wiele przejść poza stan. Oznacza to, że istnieje wiele opcji tego, co można zrobić w tej sytuacji. Nie musi się zawsze wybierać tego samego; na jednym wejściu może wybrać pierwsze przejście, a na innym wejściu może wybrać to samo przejście.
Tutaj możesz pomyśleć o „sytuacji” jako „w jakim stanie znajduje się NFA, wraz z tym, jaki symbol jest odczytywany następnie z wejścia”. Nawet jeśli oba są takie same, NFA nadal może mieć wiele pasujących przejść, które można usunąć z tego stanu, i może dowolnie wybrać, które wybrać. W przeciwieństwie do tego DFA ma tylko jedno pasujące przejście, które można podjąć w tej sytuacji, więc nie ma wyboru - zawsze będzie przechodził to samo przejście, ilekroć jest w tej sytuacji.
źródło
Weźmy na przykład ten automat, jest to NFA i akceptuje ciąg . Aby być bardziej pedantycznym, akceptuje ciągi, które kończą się na 10 .0110 10
Aby to sprawdzić, wystarczy sprawdzić, czy osiąga stan akceptacji.
Teraz w czerwonej linii istniała inna możliwość, tzn. Podczas czytania drugiego mogłem pozostać w q 0, a następnie pozostać w q 0 podczas czytania ostatniego 0 . Automaty nie mają pamięci, więc nie ma sposobu, aby „zapisać” stan i sprawdzić później, czy mój ciąg kończy się na 10 , to tak, jak ten NFA, zgaduje, czy ciąg kończy się na 10 przed rozgałęzieniem do akceptowalnego stanu. Niedeterminizm tutaj dokonuje wielu wyborów i zawsze dokonuje właściwych wyborów.1 q0 q0 0 10 10
Łatwiej jest zbudować NFA niż zbudować DFA, dobrą rzeczą jest to, że oba są równoważne .
źródło
Funkcja przejścia NFA określa dozwolone przejścia w dowolnym momencie. Może istnieć więcej niż jedna opcja, a NFA wybiera przejście niedeterministycznie w celu ostatecznego osiągnięcia stanu akceptacji.
Być może powinieneś poczekać, aż dowiesz się o niedeterministycznych maszynach Turinga. Niedeterminizm oznacza to samo w obu przypadkach.
źródło
Zacznij od skończonego automatu. Ma stany i stany akceptacji i przejścia.
Teraz podaj mu więcej niż jedną regułę tras dla każdego stanu i powiedz, że akceptuje, jeśli istnieje zbiór reguł przejścia wybieranych po fakcie, który prowadzi do stanu akceptacji podanego ciągu wejściowego.
Po uzyskaniu łańcucha wejściowego jest ustalony zestaw konkretnych przejść i stanów, przez które przechodzi (jeden po drugim), aby zaakceptować ten ciąg. Ale które przejścia wybiera, wybiera się tylko na końcu łańcucha . Podczas odczytywania ciągu nie jest ustalana ścieżka do wyboru.
Jest niedeterministyczny. Po wskazaniu całego problemu może wybrać ścieżkę przez wykres, a nie podczas odczytu danych wejściowych.
Teraz formalizujemy to inaczej niż ten eksperyment myślowy, ale daje to motywację, dlaczego ma taką nazwę.
To wyjaśnia, w jaki sposób otrzymało nazwę. Tak, możesz modelować NDFA w całkowicie deterministyczny sposób, ale nazwy są lepkie . Gdy zadzwonisz do Boba, zmiana nazwy na coś innego będzie kosztować, ponieważ nikt nie wie, o czym mówisz, gdy nazywasz to Alice.
źródło
Z wikipedii najlepszym sposobem na przemyślenie tego jest rozpoczęcie od deterministycznych skończonych maszyn stanu (DFA). W przypadku DFA każde przejście jest jednoznacznie określone przez aktualny stan i symbol wejściowy do przetworzenia. Niedeterministyczne maszyny stanów skończonych (NFA) są po prostu tym, co uzyskuje się, rozluźniając tę regułę determinizmu, aby umożliwić unikalne zdefiniowanie przejść. Otrzymujesz to, gdy usuniesz regułę determinisim z DFA.
źródło
Zarówno NFA, jak i DFA służą (między innymi) do rozpoznawania niektórych ciągów.
Niedeterministyczny automat skończony działa tak, jakby miał wpływ na jego decyzje - może „wybrać” pójście ścieżką lub nie.
Na powyższym obrazku, gdy mamy do czynienia z ciągiem „00111”, zauważ, że napotykając pierwsze „1”, są dwa możliwe sposoby postępowania. Można pozostać przy „p” lub przejść do „q”. Gdyby automaty miały przejść do „q”, nie zaakceptowałoby ciągu (ponieważ nie ma krawędzi wychodzących z „q”). Ale ciąg może zostać zaakceptowany przez te automaty, przechodząc do „q” tylko z ostatnim 1, pozostając przy „p” dla wszystkiego innego (i tak się dzieje).
NFA sprawia, że wygląda na to, że automaty „wiedziały”, co nas czeka, i odpowiednio wybiera.
Oczywiście, że nie. DFA i NFA są równoważne pod względem mocy (możesz zredukować NFA do DFA i uprościć DFA (prawdopodobnie) za pomocą NFA), ale NFA jest przydatny, ponieważ pozwala zdefiniować te same języki co DFA przy jednoczesnym zachowaniu wykresów krótszy i bardziej czytelny.
Nie ma tam nic losowego. Część niedeterministyczna kładzie nacisk na fakt, że istnieje pewien „wybór”, ale prawda jest taka, że automaty nie podejmują żadnych decyzji.
źródło
Oto mieszanka niektórych treści z książki [Wprowadzenie do języków formalnych i automatów Petera Linza 4E] i moje zrozumienie.
Rozważmy program do grania, w którym maszyna musi podjąć decyzję o kolejnym ruchu [powiedzmy na kółko i krzyżyk]. Ponieważ możliwych jest wiele ruchów, deterministycznie wybieramy każdy ruch i oceniamy go i wybieramy najlepszy. Mimo że proces selekcji był deterministyczny i istniało wiele możliwych ruchów, ostatni wykonany ruch był pojedynczy i został wybrany jako najlepszy ruch, ukrywając wszystkie wypróbowane obliczenia ruchów przed przeciwnikiem. [Tutaj zakładamy, że proces oceny każdego możliwego ruchu był ukryty przed przeciwnikiem].
Dlatego dokonano tylko jednego wyboru, a przeciwnik ma złudzenie, że ruch był niedeterministyczny.
Cóż, jeśli nie jesteś jeszcze przekonany pytaniem, że najlepszy ruch był wynikiem pewnych deterministycznych obliczeń, musisz rozważyć maszynę, która wykonuje idealnie losowe ruchy (może to być maszyna tracąca, ale jest to NFA).
źródło