Czy w DFA każdy stan ma przejście na każdy symbol alfabetu?


12

Jeśli nie, to co to znaczy, że dla jakiegoś stanu q i jakiegoś symbolu a , δ(q,a) nie istnieje?


Nazwałbym niedeterministyczny automat, który nigdy nie ma więcej niż jednego przejścia w tym samym stanie i deterministyczny symbol wejściowy. Po prostu nie pasuje do definicji DFA.
reinierpost

1
Jeśli reguły DFA są ustawione w taki sposób, że nigdy nie może być w stanie q, gdy symbolem na taśmie jest a , czy naprawdę musimy zdefiniować δ (q, a) ?
Peter Shor,

4
Odpowiedź jest jednoznaczna, że ​​zależy to od tego, jak zdefiniujemy „deterministyczny automat skończony”. Jako takie nie jestem pewien, czy to pytanie jest całkowicie konstruktywne, ponieważ nie ma powszechnie akceptowanej poprawnej odpowiedzi - tj. Pytanie to wymaga opinii i debaty.
Patrick87

1
Jeśli δ ma być funkcją , należy ją zdefiniować dla wszystkich par q,a .
vonbrand,

W moim rozumieniu DFA jest to warunek „przerwania” lub jeśli wolisz ukryty skok do stanu „odrzucenia”.
Yves Daoust,

Odpowiedzi:


22

Wygląda na to, że natknąłeś się na sporną kwestię. Najwyraźniej informatycy lubią się kłócić. Z pewnością lubię się kłócić, więc proszę!

Moja odpowiedź jest jednoznaczna: nie. Deterministyczne skończone automaty nie potrzebują przejścia z każdego stanu dla każdego symbolu. Kiedy δ(q,a) nie istnieje, oznacza to po prostu, że DFA nie akceptuje ciągu wejściowego.

Chociaż możesz utworzyć definicję DFA, która wymaga istnienia δ(q,a) , po prostu nie jest tak, że brakujące przejście powoduje, że wynikowa struktura (jakkolwiek to nazwiesz) nie jest deterministyczna, ponieważ wielu komentujących jest roszczenie Jeśli uczęszczasz na teorię automatów, następnym tematem będą języki bezkontekstowe i automaty push-down, w których rozróżnienie między automatami niedeterministycznymi i deterministycznymi jest krytyczne, i musisz użyć poprawnej definicji niedeterminizmu.

Niedeterminizm wiąże się z więcej niż jednym przejściem prawnym.

Myślę, że wszyscy zgadzamy się z następującą definicją Wikipedii (która pokażę za chwilę jest nieco niejednoznaczna):

Deterministyczny automat skończony M jest 5-krotną ( Q , Σ , δ , q0 , F ), składającą się z

  1. skończony zestaw stanów ( Q )
  2. skończony zestaw symboli wejściowych zwanych alfabetem ( Σ )
  3. funkcja przejścia ( δ:Q×ΣQ )
  4. stan początkowy ( q0Q)
  5. zestaw stanów akceptacji ( FQ ).

Niech w=a1a2an jest łańcuchem na alfabet Σ . Automat M przyjmuje ciąg w jeśli sekwencja stanów, r0,r1,,rn , istnieje w Q z następującymi warunkami:

  1. r0=q0
  2. ri+1=δ(ri,ai+1) , dlai=0,,n1
  3. rnF .

Dwuznaczność i kontrowersje dotyczą definicji funkcji przejścia δ (liczba „3” na pierwszej wypunktowanej liście). Wszyscy zgadzamy się, że to, co odróżnia DFA od NFA, to to, że δ jest funkcją, a nie relacją . Ale czy δ jest funkcją częściową czy całkowitą ?

Definicja DFA działa dobrze, jeśli δ jest funkcją częściową. Biorąc pod uwagę ciąg wejściowy, jeśli osiągniesz stan qi za pomocą symbolu wejściowego aj którym nie ma następnego stanu, automaty po prostu nie akceptują.

Ponadto, gdy rozszerzysz tę definicję, aby utworzyć definicję automatów push-down, będziesz musiał rozróżnić, że automaty push-down z funkcjami przejściowymi, które są funkcjami częściowymi, są klasyfikowane jako deterministyczne, a nie niedeterministyczne.

δ

  1. qerror
  2. (qi,sj)δδ(qi,sj)=qerror

δ

Edycja, styczeń 2019 r

Komentator @Alex Smart słusznie krytykuje mnie za to, że nie podawałem referencji ani nie wyjaśniałem, dlaczego powinniśmy się tym przejmować. Więc oto idzie:

Powodem, dla którego dbamy o dokładną definicję determinizmu kontra niedeterminizm, jest to, że niektóre klasy automatów niedeterministycznych są silniejsze niż ich deterministyczni kuzyni, a niektóre klasy automatów niedeterministycznych nie są silniejsze niż ich deterministyczni kuzyni. W przypadku automatów skończonych i maszyn Turinga warianty deterministyczne i niedeterministyczne mają równoważną moc. W przypadku automatów wypychających istnieją języki, w których rozróżnienie jest ważne: istnieją NPDA, które akceptują język, i żadna DPDA nie akceptuje języka. W przypadku automatów z ograniczeniami liniowymi pytanie jest (lub było ostatnio sprawdzane) otwarte. Wzrost mocy NPDA w porównaniu z DPDA wynika z dopuszczenia wielu przejścia, a nie z zamiany funkcji przejścia z funkcji całkowitej na funkcję częściową.

Książki ze społeczności kompilatorów:

Aho i Ullman, Principles of Compiler Design , 1977: Najpierw definiuje NFA (strona 88) z relacją przejścia, a następnie (s. 90-91):

ϵsaas

Aho, Sethi i Ullman, Kompilatory, zasady, techniki i narzędzia , przedruk 1988, są podobne, najpierw definiują NFA z relacją przejścia, a następnie (s. 115-116):

as

(Zauważ, że w komentarzach @Alex Smart mówi: „smok specjalnie wspomina, że ​​funkcja jest całkowita.” Zakładam, że mówi o późniejszym wydaniu ze współautorem Lamem, do którego obecnie nie mam dostępu. )

Appel, Modern Compiler Implementation in Java , 1988 (s. 22):

W deterministycznym automacie skończonym (DFA) żadne dwie krawędzie wychodzące z tego samego stanu nie są oznaczone tym samym symbolem.

Następnie Appel wyjaśnia, że ​​używając DFA do rozpoznawania najdłuższych dopasowań, jawnie wykorzystujemy brakujące przejścia, aby zdecydować, kiedy przerwać (s. 23):

po osiągnięciu stanu martwego (stanu nieskończonego bez przejść wyjściowych) zmienne [które rejestrują najdłuższe dopasowanie, jakie do tej pory widzieliśmy] informują, który token został dopasowany i gdzie się zakończył.

Książki ze społeczności teorii przełączania:

Kohavi, Switching and Finite Automata Theory, 2 / e , 1978, s. 1. 611 mówi:

Ponieważ diagram stanów opisuje maszynę deterministyczną , następne przejście stanu musi być określone jednoznacznie przez stan obecny i aktualnie skanowany symbol wejściowy.

Ja zazwyczaj interpretować jednoznacznie oznacza „dokładnie jeden”, a nie „nie więcej niż jeden”. (Tzn. Kohavi wydaje się mówić, że determinizm wymaga całkowitej funkcji)

Książki ze społeczności teorii teorii obliczeń:

Tutaj wydaje się, że bardziej powszechne jest definiowanie DFA przed NFA i wymaganie, aby DFA miały całkowitą funkcję przejścia, ale następnie definiowanie NPDA przed DPDA i definiowanie „determinizmu” jako ograniczenia relacji przejścia do braku nie więcej niż -jeden wpis dla każdej pary stan / symbol.

Dotyczy to Hopcroft i Ullman, 1979, Lewis i Papadimitriou, 1981, a zwłaszcza Sipser, 2006, którzy używają definicji DFA pedagogicznie, aby wprowadzić dokładne definicje formalne oraz wyjaśnić ich znaczenie i wyraźnie powiedzieć (str. 36):

δ

s×Σ

Co ciekawe, Rabin i Scott również definiują niedeterministyczne automaty skończone w kategoriach funkcji całkowitej! Strona 120, definicja 9:

MS×ΣS

To znaczy: całkowita funkcja przejścia nie czyni deterministycznego systemu!

Sipser 2006 śledzi Rabina i Scotta i wykorzystuje całkowitą funkcję przejścia ze stanów / symboli do zestawu mocy stanów w swoich definicjach niedeterministycznych automatów skończonych, niedeterministycznych PDA i niedeterministycznych maszyn Turinga, ale pomija temat deterministyczny PDA.

Zarówno Hopcroft, jak i Ullman, 1979, oraz Lewis i Papadimitriou, 1981, używają funkcji cząstkowych w swoich definicjach deterministycznych PDA. Najpierw definiują NPDA za pomocą relacji przejściowych, a następnie, kiedy dochodzą do PDA, Lewis i Papadimitriou mówią (s. 135),

Automat przesuwania jest deterministyczny , mówiąc intuicyjnie, jeśli dla każdej konfiguracji istnieje co najwyżej jedno przejście.

Podczas gdy Hopcroft i Ullman mówią (s. 112):

PDA ... jest deterministyczny w tym sensie, że co najwyżej jeden ruch jest możliwy z dowolnego ID.


qerror

2
Częściowa wersja funkcji jest podana w Hopcroft i Ullman, jeśli to robi różnicę. Zatem idea, że ​​funkcja częściowa jest z natury niedeterministyczna, nie jest bynajmniej standardowa.
jmite

1
@jmite Nie jest tak, że funkcje cząstkowe implikują niedeterminizm; to, że funkcje całkowite implikują determinizm, dzięki czemu funkcje całkowite są lepszym wyborem. Oczywiście jest to mniej lub bardziej arbitralna kwestia używanych definicji.
Patrick87

3
δ

1
Jak wykazałeś, częściowa wersja funkcji ma łatwe tłumaczenie na całkowitą wersję funkcji i, o ile widzę, nie zyskujesz absolutnie nic, pedagogicznie lub w inny sposób, pozwalając na częściową funkcję tłumaczenia. Smok wyraźnie wspomina, że ​​funkcja jest całkowita. Dlaczego na świecie tworzymy spór o coś, co zostało jasno zdefiniowane w standardowym podręczniku, za którym podąża większość ludzi, skoro absolutnie nic nie zyskuje na wyborze niestandardowej definicji?
Alex Smart

8

δ(q,a)qQaΣQΣ

ε

Pod względem obliczalności NFA są równoważne DFA - istnieje algorytm do konwersji z NFA na DFA, a DFA jest po prostu trywialnie NFA, który nie używa niedeterminizmu, więc oba definiują zestaw zwykłych języków.


2
To zależy od definicji; istnieje kilka, które są równoważne pod względem mocy.
Raphael

3
+1 Najlepiej trzymać się tej definicji, IMHO, ponieważ wszyscy zgodzą się, że FA, który definiuje dokładnie jedno przejście dla każdej pary (stanu, symbolu) stanowi prawidłowy DFA.
Patrick87

1
A ta definicja jest całkowicie błędna, gdy próbujesz rozszerzyć ją na decyzję, czy język bezkontekstowy jest deterministyczny czy niedeterministyczny. Automaty przesuwania z brakującymi przejściami można zawsze przekształcić w automaty przesuwania z dokładnie jednym przejściem na stan / symbol wejściowy / symbol stosu. Niedeterministyczne automaty przesuwania z wieloma możliwymi przejściami na stan / symbol wejściowy / symbol stosu niekoniecznie muszą zostać przekształcone w deterministyczne automaty przesuwania. (Na przykład: w przypadku, gdy rozpoznany język jest pozbawiony kontekstu niedeterministycznego.)
Wandering Logic

2
@jmite Wystarczy zdefiniować automaty przycinania niezależnie od DFA. Myślę, że o wiele ważniejsze jest, aby minimalne DFA miały odpowiednią liczbę stanów zgodnie z twierdzeniem Myhill-Nerode, które otrzymujesz tylko przy stanach martwych.
Patrick87

4
ϵϵϵ

6

Istnieją definicje DFA na wzór

A|δ(q,a)|1qaδ(q,ε)δ(q,a)=aΣA

W takim przypadku nie potrzebujesz wszystkich przejść. Jeśli automat nie ma przejścia pasującego do następnego symbolu wejściowego, odrzuca.

Miło jest wykazać, że obie definicje są równoważne pod względem tego, które języki mogą być akceptowane.


Myślę, że pytanie OP musi zostać zmienione, aby zawierało formalną definicję DFA.
scaaahu

0

W definicji DFA każdy stan powinien mieć cały alfabet w £. Na przykład, jeśli £ = {a, b, c} i Q = {q0, q1, q2}, wszystkie te stany powinny mieć wszystkie symbole a, b, c, które przechodzą do innego stanu lub tego samego stanu.


1
Jaka jest różnica od istniejących odpowiedzi, abyś opublikował nową odpowiedź?
xskxzr

0

Najprostszą odpowiedzią jest dodanie martwego stanu dla lewego symbolu . Podobnie jak w przypadku konwersji z NFA do DFA, otrzymujemy przejście Φ dla niektórych symboli, co oznacza, że ​​tworzymy dla niego stan martwy.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.