Kilka tygodni temu podjąłem egzaminy z teorii obliczeń i było to jedno z pytań:
Załóżmy, że język
Czy L jest regularny? Jeśli tak, podaj wyrażenie regularne lub automat.
Po tym, jak krótko zapytałem go o odpowiedź po egzaminie, wydaje się, że jest ona naprawdę regularna (myślę, że powiedział, że wyrażenie jest proste ). Jednak nie rozumiem, dlaczego tak jest. Sposób, w jaki zobaczyć, jej łączenie r razy, na przykład:
,
który nie jest regularny, ponieważ nie ma sposobu automatem przypomnieć n i m za każdym razem. Gdzie jestem tutaj winna?
EDYCJA: Ponownie rozmawiałem z profesorem, przyznał, że to pomyłka. Język rzeczywiście nie jest regularny.
Odpowiedzi:
Język nie jest regularny, co można udowodnić za pomocą metody Nerode. Rozważ następujące słowa dla . Następnie , ale dla , . Dlatego każdy automat dla musi znajdować się w innym stanie po odczytaniu każdego , co jest sprzeczne z jego skończonością.L. wn=zanb n ∈ N w2)n∈ L. n ≠ m wnwm∉ L. L. wn
źródło
W swoim komentarzu zasugerowałeś, że (zacytowałeś) „dałeś odrzucenie lematu pompującego dla , mówiąc, że to samo dotyczyło większego ”.r = 2 r
Można to rzeczywiście sformalizować, stosując właściwość zamknięcia. Zwykłe języki są zamknięte pod skrzyżowaniem. Więc jeśli jest regularne, to tak też byłoby , skutecznie ustawiając i .L. L ∩za∗bza∗b = {zanbzanb ∣ n ≥ 0 } r = 2 m = 1
źródło
Język: {(a n b m ) r | n, m, r≥0} nie jest regularny, ponieważ chociaż automat / maszyna odczytuje pierwszą sekwencję liter „a”, a następnie liter „b”, musi policzyć, ile razy przeczytał literę „a” i ile razy czytał literę „b” w pierwszej sekwencji, aby poznać wartość n i m .
Jeżeli r> 1, to oczekiwana jest kolejna taka sama sekwencja liter „a” i liter „b”.
Jeśli automat / maszyna ma nie wiedzieć, ile liter „A” i litery „B” to przeczytać w pierwszej kolejności to też ma nie znać wartość n i m , a zatem może nie powiedzieć, czy pozostałe sekwencje od drugiej do ostatniej to słowa, które są równe pierwszej sekwencji.
Ale wiadomo, że tylko maszyny Turinga można liczyć i wiedzieć wartości n i m i rozpoznaje język powyżej, więc nie tylko, że język powyżej jest nie regularny, ale nawet to też jest nie kontekst wolny, czyli robi także nie istnieje automatyczny system rozpoznawania tego języka i nie istnieje gramatyka bezkontekstowa, że każde słowo pochodzące z tej gramatyki bezkontekstowej znajduje się w powyższym języku.
Ze względu na fakt, że zarówno deterministyczny automat skończony automat skończony i rozwijana do dołu może nie liczyć i wiedzieć wartości n i m , w odróżnieniu od maszyny Turinga, mogą nie rozpoznać powyższy język, a zatem powyższe język jest nie za darmo kontekst i nie jest regularny.
Przeciwprzykładem do założenia, że powyższy język jest regularny:
Dla n = 3 ∧ m = 5 ∧ r = 2 następujące słowo jest w powyższym języku:
aaabbbbbaaabbbbb
Ale następujące słowo nie jest w języku:
aaabbbbbaaaaabbb, ponieważ nie istnieje n, m i r więc:
(a n b m ) r = aaabbbbbaaaaabbb, ponieważ aby spełnić pierwszą sekwencję liter „a”, a następnie liter „b”, musi być prawdą, że n = 3 ∧ m = 5 , i ponieważ widzimy 2 sekwencje liter ” a ', a następnie litery' b ', następnie r = 2 , ale jeśli n = 3 ∧ m = 5 ∧ r = 2, to (a n b m ) r = (a 3 b 5 ) 2 = (aaabbbbb) 2 = aaabbbbbaaabbbbb ≠ aaabbbbbaaaaabbb, ponieważ ich sufiksy są różne, tj. Aaabbbbb ≠ aaaaabbb, chociaż ich prefiksy są równe aaabbbbb dla r = 1.
„Najlepszy” deterministyczny automat skończony, który można zbudować dla tego języka, to deterministyczny automat skończony, który rozpoznaje wyrażenie regularne (a * b *) *, ale nie rozpoznaje powyższego języka, ponieważ mówi, że oba słowa aaabbbbbaaabbbbb i aaabbbbbabaaaabbb są w języku i to nie jest prawda, ponieważ aaabbbbbaaabbbbb jest w języku, ale aaabbbbbaaaaabbb nie jest w tym języku.
Nawet automat skończony przesuwający w dół nie może stwierdzić, czy oba słowa są w języku, czy nie, więc tylko maszyna Turinga może to zrobić.
W drugiej sekwencji maszyna Turinga stwierdziła, że n = 5 ∧ m = 3, a to przeczy temu, że w pierwszej sekwencji stwierdził, że n = 3 ∧ m = 5 , więc mówi, że drugie słowo nie jest w języku , ale w pierwszym słowie nie znaleziono sprzeczności.
Obie sekwencje spełniają, że n = 3 ∧ m = 5 , więc maszyna Turinga mówi, że pierwsze słowo jest w języku.
Tylko Turinga maszyna może, jeśli liczy się i zapamiętuje wartości n i m pisząc swoją wartość na jego taśmy i później je odczytać.
źródło