Коли поєднання двох регулярних мов однозначне?


16

Зазначені мови і , скажімо , що їх конкатенація є однозначною , якщо для всіх слів , існує рівно один розкладання з і , і неоднозначному інакше. (Я не знаю, чи є для цього властивості встановлений термін - важко шукати!) Як тривіальний приклад, об'єднання з собою неоднозначне ( ), але конкатенація сама по собі однозначна.ABABw∈ABw=aba∈Ab∈B{ε,a}w=a=εa=aε{a}

Чи існує алгоритм для визначення того, чи є об'єднання двох регулярних мов однозначним?


1
Га, це абсолютно проблема першокурсників CS, чи не так? Чесно кажучи, я не дуже пробував; Я сподівався, що десь у літературі є створений алгоритм для цього, і мені не доведеться робити винахід колеса. Я пишу тут програмне забезпечення; Я взяв лише пару курсів CS (кілька років тому), тож я в основному починаю з Вікіпедії. Я знаю, що нікому не подобається хтось, хто не хоче працювати над їхньою відповіддю, тож якщо є підручник чи папір або щось таке, на що ти міг би вказати мені, а не просто вручити мені алгоритм, це було б корисно! Спасибі!
— rstern

Я додав це як коментар, тому що це порівняно поза темою, але, можливо, може привести вас до допомоги. Консорціум Unicode має декілька процесів для визначення спільності між мовами. Я прочитав дуже інформативне посилання на їхньому сайті, але в житті мені не вдалося знайти сьогодні, щоб зробити відповідь натомість. Якщо у вас є час , щоб дослідити це тут їх FAQ Сторінка unicode.org/faq
— htm11h

Відповіді:


10

Підказка: Дано DFA для і B , побудуйте NFA, який приймає слова в A B, що мають принаймні два різних розкладання. NFA відслідковує дві копії стандартної NFA для A B (утвореної приєднанням DFA для A і B з ϵ переходами), гарантуючи, що перехід від A до B відбувається в двох різних точках.ABABABABϵAB


Дякую за підказку! Отже, якщо я розумію, я можу побудувати NFA для неоднозначних слів у а потім перевірити цей автомат на порожнечу. Здається, що складна частина "гарантує, що перехід від A до B відбувається в двох різних точках". Я не впевнений, як це зробити, окрім взяття перехресного продукту (?) Двох A B DFA та видалення всіх станів ( A -термінал, A -термінал) - я махаю руками, я переживаю, що перехід від A B NFA до A B DFA мав би бути ідеєю AABABABAAABABA-термінальний. Звучить, гм, хоча неефективно; чи відомий алгоритм, придатний для програмного забезпечення?
— rstern

Так, це звучить не надто ефективно, хоча завжди є можливість зробити це розумним чином. Мені невідомий якийсь конкретний алгоритм цієї проблеми, але один може існувати.
— Yuval Filmus

7

Оновлено (завдяки Ювалу Філімусу).

З огляду на дві мови і Y з А * , нехай X - 1 YXYA∗ я стверджую, щоXYоднозначний тоді і тільки тоді, коли моваX-1X∩YY-1∩A+порожня.

X−1Y={u∈A∗∣there exists x∈X such that xu∈Y}YX−1={u∈A∗∣there exists x∈X such that ux∈Y}
XYX−1X∩YY−1∩A+

Доказ . Припустимо, що неоднозначний. Тоді існує слово ¯u , який має два розкладання над X Y , скажімо , у = х 1 у 2 = х 2 у 1 , де х 1 , х 2 ∈ Х і у 1 , у 2 ∈ Y . Не втрачаючи загальності, можна вважати, що x 1 є префіксом x 2 , тобто x 2 = xXYuXYu=x1y2=x2y1x1,x2∈Xy1,y2∈Yx1x2 для деякого z ∈ A + . Звідси випливає, що u = x 1 y 2 = x 1 z y 1 , звідки y 2 = z y 1 . Таким чином z ∈ X - 1 X ∩ Y Y - 1 .x2=x1zz∈A+u=x1y2=x1zy1y2=zy1z∈X−1X∩YY−1

Припустимо тепер, що містить якесь непорожнє слово z . Тоді існують x 1 , x 2 ∈ X і y 1 , y 2 ∈ Y такі, що x 2 = x 1 z і y 2 = z y 1 . Звідси випливає, що x 2 y 1 = x 1 z y 1 =X−1X∩YY−1zx1,x2∈Xy1,y2∈Yx2=x1zy2=zy1 а значить, добуток X Y неоднозначний.x2y1=x1zy1=x1y2XY

Якщо і Y регулярні, то обидва X - 1 X і Y Y - 1 є регулярними, і, таким чином, X - 1 X ∩ Y Y - 1 також є регулярними (див. Відповідь Юваля на автомат, що приймає цю мову).XYX−1XYY−1X−1X∩YY−1


Що робити, якщо - це порожнє слово? z
— Yuval Filmus

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