Чи регулярний?


9

Я взяв свою теорію обчислювальних іспитів кілька тижнів тому, і це було одне з питань:

Припустимо, моваL={(anbm)rn,m,r0}

Чи регулярно L? Якщо так, введіть регулярний вираз або автоматику для нього.

Після того, як я коротко попросив його відповісти після іспиту, виявляється, що це дійсно регулярно (я вважаю, що він сказав, що вираз є простим ). Однак я не можу зрозуміти, чому це так. Те, як я бачу це, поєднує r рази, як це:(ab)anbm

anbmanbmanbm...anbmanbm ,

що не є регулярним, оскільки автоматика не може згадувати n і m кожен раз. Де я тут винен?

EDIT: Я знову поговорив з професором, він визнав, що це була помилка. Мова дійсно не є регулярною.


14
Ви повинні запитати свого вчителя, чи мова є такою ж, як мова . Якщо він каже «так», то скажіть йому, що я сказав вам, що його питання було неправильним. LK={an1bm1an2bm2anrbnrr0,a1,,ar0,b1,,br0}
Андрій Бауер

1
Це здається єдиним способом, як це могло бути регулярним, і насправді це те, що я спочатку поспішно думав і насправді вважав (a b ) *, але потім стер його, зрозумівши, що n і m залишаються такими ж (або повинні ..), і дав неспроможність накачувальної леми для r = 2, кажучи, що те саме застосовується і для більшого r (можливо, це не зовсім повне рішення, але, здається, це в правильному напрямку). Потрібно сказати, що я отримав 0 за це питання. Я спробую зв’язатися з ним.

Я б точно зрозумів це питання так, як ви робили спочатку.
Андрій Бауер

Дивіться тут, щоб дізнатись більше способів показати, що мова не є звичайною.
Рафаель

ви можете також довести те саме за допомогою перекачування леми
SAHIL THUKRAL

Відповіді:


10

Мова не є регулярною, як це можна довести методом Нерода. Розглянемо наступні слова для . Тоді , а для , . Отже, будь-який автомат для повинен знаходитися в іншому стані після читання кожного , що суперечить його кінцевості.Lwn=anbnNwn2LnmwnwmLLwn


4

У своєму коментарі ви натякаєте на те, що ви (цитуєте) "давали накачувальну лемму заперечення для , кажучи те саме, що застосовується і для більшого ".r=2r

Це дійсно можна формалізувати, застосувавши властивість закриття. Звичайні мови закриті під перетином. Отже, якщо регулярний, то так би було , фактично встановлюючи і .LLabab={anbanbn0}r=2m=1


1
Шановний читачу, будь ласка , не забирай "якщоL не є регулярним, то і ні LL"тут - тому що це просто помилково!
Рафаель

1
@Raphael Right. Тож правильним наслідком було б "якбиLR не є регулярним, то і ні L", де регулярний.R
Хендрік Ян

1
Звичайно. Я був стурбований тим, що новачки можуть прочитати "ефективно налаштування ..." і застосувати це, не використовуючи властивості закриття.
Рафаель

0

Мова: {(a n b m ) r | n, m, r≥0} не є регулярним, оскільки, хоча автомат / машина читає першу послідовність літер 'a', а потім літери 'b', йому потрібно підраховувати кількість разів, коли вона читає букву 'a' і кількість разів, коли вона читала букву 'b' у першій послідовності, щоб знати значення n і m .

Якщо r> 1, то очікується інша однакова послідовність літер 'a' та літер 'b'.

Якщо автомат / машина не знає, скільки букв 'а' та букв 'b' прочитано в першій послідовності, то він також не знає значення n і m, і тому він не може знати, якщо інші послідовності від другого до останнього - це слова, що дорівнюють першій послідовності.

Але відомо, що тільки машина Тьюрінга може рахувати та знати значення n та m та розпізнавати мову вище, тож не лише те, що мова вище не є регулярною, але навіть вона також не є контекстною, тобто також не існує автоматичного розгортання, щоб розпізнати цю мову, і не існує контекстної граматики, що кожне слово, отримане з цього контексту, є вільною граматикою.

Тому що той факт, що і детермінований кінцевий автомат, і кінцевий автоматичний виштовхування не можуть рахувати і знати значення n і m , на відміну від машини Тьюрінга, вони не можуть розпізнати вищевказану мову, і тому вищевказана мова не є контекстною і не є регулярним.

Контрприклад припущення про те, що мова вище є регулярною:

Для n = 3 ∧ m = 5 ∧ r = 2 , наведеним вище мовою є наступне слово:

aaabbbbbaaabbbbb

Але наступне слово не в мові:

aaabbbbbaaaaabbb, тому що не існує n, m і r так:

(a n b m ) r = aaabbbbbaaaaabbb, тому що для задоволення першої послідовності літер 'a', а потім літер 'b', повинно бути правдою, що n = 3 ∧ m = 5 , і тому, що ми бачимо 2 послідовності літер ' a ', а потім літери' b ', то r = 2 , але якщо n = 3 ∧ m = 5 ∧ r = 2, то (a n b m ) r = (a 3 b 5 ) 2 = (aaabbbbb) 2 = aaabbbbbaaabbbbb ≠ aaabbbbbaaaaabbb, оскільки суфікси їх різні, тобто aaabbbbb ≠ aaaaabbb, хоча їх префікси дорівнюють aaabbbbb для r = 1.

"Кращим" детермінованим кінцевим автоматом, який можна побудувати для цієї мови, є детермінований кінцевий автомат, який розпізнає регулярний вираз (a * b *) *, але він не розпізнає вищевказану мову, тому що говорить, що обидва слова aaabbbbbaaabbbbb та aaabbbbbaaaaabbb є мовою, і це неправда, тому що aaabbbbbaaabbbbb є мовою, але aaabbbbbaaaaabbb не є в мові.

Навіть обмежений автомат не може визначити, чи обидва слова є мовою чи ні, тому лише машина Тьюрінга може.

У другій послідовності машина Тьюрінга виявила, що n = 5 ∧ m = 3, і це суперечить тому, що в першій послідовності було встановлено, що n = 3 ∧ m = 5 , тож це говорить про те, що другого слова немає в мові , але в першому слові не зустрічається протиріччя.

Обидві послідовності задовольняють, що n = 3 ∧ m = 5 , тому машина Тьюрінга говорить, що перше слово в мові.

Тільки машина Тьюрінга може, якщо вона рахує і запам'ятовує значення n і m , записуючи їх значення на свою стрічку і пізніше їх читати.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.