Czy regularne?


9

Kilka tygodni temu podjąłem egzaminy z teorii obliczeń i było to jedno z pytań:

Załóżmy, że językL.={(zanbm)r∣n,m,r≥0}

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:(za∗b∗)∗zanbm

zanbmzanbmzanbm...zanbmzanbm ,

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.


14
Powinieneś zapytać swojego nauczyciela, czy język jest taki sam jak język . Jeśli powie „tak”, powiedz mu, że powiedziałem ci, że jego pytanie było źle sformułowane. L.K.={zan1bm1zan2)bm2)⋯zanrbnr∣r≥0,za1,…,zar≥0,b1,…,br≥0}
— Andrej Bauer

1
Wydaje się, że jedynym sposobem, może to być regularne, aw rzeczywistości jest to, co pierwotnie szybko myśli i rzeczywiście uznać (a b ) *, ale potem usunięte to realizując N i M pozostają takie same (lub powinien ..), i dał odrzucenie lematu pompującego dla r = 2, mówiąc, że to samo dotyczyło większego r (prawdopodobnie też nie jest to kompletne rozwiązanie, ale wydaje się, że jest w dobrym kierunku). Nie trzeba dodawać, że dostałem 0 za to pytanie. Spróbuję się z nim skontaktować.

Z pewnością zrozumiałbym pytanie tak, jak na początku.
— Andrej Bauer

Zobacz tutaj na więcej sposobów, aby pokazać, że język nie jest regularny.
— Raphael

możesz to również udowodnić za pomocą pompowania lematu
— SAHIL THUKRAL

Odpowiedzi:


10

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=zanbn∈N.wn2)∈L.n≠mwnwm∉L.L.wn


4

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=2r

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 .LL.∩za∗bza∗b={zanbzanb∣n≥0}r=2)m=1


1
Drogi czytelniku, proszę nie zabieraj „jeśli nie jest regularne, to też ” tutaj - bo to po prostu fałsz! L.L.′⊃L.
— Raphael

1
@Raphael Right. Zatem poprawną implikacją byłoby „jeśli nie jest regularne, to też nie jest ”, gdzie jest regularne. L.∩RL.R
— Hendrik Jan

1
Oczywiście. Obawiałem się, że nowicjusze mogą przeczytać „skuteczne ustawienie ...” i zastosować to bez użycia właściwości zamknięcia.
— Raphael

0

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ć.

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.