Чи регулярна мова слів, що містять рівну кількість 001 та 100?


14

Мені було цікаво, коли мови, які містять однакову кількість примірників двох підрядків, будуть регулярними. Я знаю, що мова, що містить рівну кількість 1s та 0s, не є регулярною, але є такою мовою, як , де = кількість екземплярів підрядка "001" дорівнює кількості екземплярів підрядки " 100 " регулярно? Зауважте, що рядок "00100" буде прийнятий.L { w }LL{w}

Моя інтуїція говорить мені, що це не так, але я не в змозі довести це; Я не можу перетворити його у форму, яку можна було б перекачати через насосну лему, так як я можу це довести? З іншого боку, я спробував створити DFA або NFA або регулярний вираз, але також не вдався на цих фронтах, тож як мені діяти? Я хотів би зрозуміти це загалом, не лише для запропонованої мови.



2
Чому ви не можете відповісти на власне рішення?
Юваль Фільм

1
@YuvalFilmus Користувачі з низькою репутацією можуть відповісти на власне запитання (8 годин, якщо повтор <100).
Жил "ТАК - перестань бути злим"

1
Ймовірно, має бути додаткова петля на ? q 50q5
Гендрик Ян

1
Подібний приклад цього явища, але для підрядів "01" та "10" обговорювались на нашому сестринському сайті. Доведення мови є регулярним чи неправильним . У відповіді є аналогічне зауваження, як зроблено у своєму коментарі Уесса: "Тобто, перехід 01 не може супроводжуватися іншим переходом без втручання переходу". 100110
Гендрик Ян

Відповіді:


3

Відповідь, витягнута з питання.

Як вказував Хендрік Ян, у q5 повинно бути додаткове 0 самокрутника.

автомат


це конструкція, а не доказ
vzn

У класах CS для простих проблем іноді даються лише DFA, але це не доводить, що він точно приймає мову. ви повинні [якось] показати для кожного вхідного рядка, що він функціонує правильно. "як це працює?"
vzn

2
Я думаю, ви могли б об'єднати і . Це так? q 2q5q2
Ж.-Є.

3

Це хитрі питання. Спробуйте створити рядок, який містить два 001 і не містить 100, і подивіться, чому ви не можете цього зробити. Якщо X = "число 001", а Y = "число 100", то X = Y або X = Y ± 1.

Як тільки ви зрозумієте хитрість, стає малоймовірним, що мова є нерегулярним, і тоді побудувати DFA досить просто. Є лише 8 станів з їх переходами, якщо наступний символ 0/1:

State S0: Input is empty. -> S1/C0

State S1: Input is 0. -> C2/C0

State A: Y = X + 1, input ends in 00. -> A/C0

State B0: X = Y + 1, input ends in 1. -> B1/B0

State B1: X = Y + 1, input ends in 10. -> C2/B0

State C0: X = Y, input ends in 1. -> C1/C0

State C1: X = Y, input ends in 10. -> A/C0

State C2: X = Y, input ends in 00. -> C2/B0

Початковий стан є S0, а S0, S1, C0, C1, C2 є приймаючими станами.

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