mam taki automat, który jest automatem niedeterministycznym akceptującym wszystkie łańcuchy zawierające przynajmniej jedną parę kolejnych zer lub jedynek i pytania czy ciągi słów
-01100
-1000010
-1100
-000
są akceptowane przez ten automat ?
no i teraz moje pytanie jest takie, bo np. pierwsze słowo wygeneruje się do postaci 011 i po wygnerowaniu ostatniej 1 będzie już w q2 który jest stanem końcowym i automat się zakończy, prawda ? a słowo nie zostanie wygenerowane… czy może się mylę ?
Co do pytania co by było gdyby nie było strzałek na końcowych stanach. Wtedy albo można “skonsumować” ciąg we wcześniejszych stanach albo ciągu nie da się wygenerować tego ciągu. (Podane przez ciebie ciągi da się wygenerować)
czyli jeśli automat, inaczej, jeśli automat dojdzie jakąś etykietą przejścia do stanu końcowego i w tym stanie końcowym nie ma już pętli to się po prostu działania automatu kończy ?
czyli np, po odrzucenie pętli w stanach końcowych, słowo 1100 jest akcpetowane wciąż, ale już słowo 11001 nie będzie, a znowu słowo 00110 równiez nie będzie ?
Nie mył automatów deterministycznych z niedeterministycznymi, automat niedeterministyczny nie może fizycznie działać, co najwyżej może sprawdzić czy podane słowo/wyraz/zdanie pasuje do niego czy też nie. Typowym automatem niedeterministycznym jest wzór regexp w PHP (i nie tylko) a wzór nie może działać. Natomiast sam komputer jest typowym automatem deterministycznym - może działać.
Przy odrzuceniu pętli końcowych automat będzie przyjmować/akceptować tylko słowa kończące się na 00 lub 11.
no bo doszedł do stanu końcowego, stan końcowy to stan końcowy… a czemu może badać zadane słowo ten automat dalej, mimo dojścia już do stanu końcowego ?
Ponieważ stan końcowy (w odróżnieniu od stanu początkowego) nie jest częścią automatu, stanów końcowych może być więcej niż jeden, właściwie wszystkie węzły naraz mogą być stanami końcowymi (początkowy zawsze tylko jeden).
Stan się nazywa “końcowy”, ale to nie znaczy, że jeśli się go osiągnie to trzeba kończyć. W przypadku automatu deterministycznego, aby słowo było akceptowane, po wczytaniu go w całości musimy musimy znajdować się w stanie końcowym. To, które stany są końcowe, interesuje nas dopiero po przetworzeniu całego słowa.
Zgadza się. Po poprawnym wczytaniu całego słowa, odpowiedź na pytanie “Czy słowo jest akceptowane?” jest równoważna odpowiedzi na pytanie “Czy automat znajduje się w którymś ze stanów końcowych?”.
http://en.wikipedia.org/wiki/Finite-state_machine#Mathematical_model zobacz notkę o funkcji delta - wyraźnie tam stoi, że \delta(q, x) nie musi być zawsze określona - wtedy automat może przerwać działanie przedwcześnie. Naturalnie, można stworzyć stan niekońcowy q_{czarna dziura}, który łapie wszystko i się kręci w pętli, ale po co?