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


16

Зазначені мови і , скажімо , що їх конкатенація є однозначною , якщо для всіх слів , існує рівно один розкладання з і , і неоднозначному інакше. (Я не знаю, чи є для цього властивості встановлений термін - важко шукати!) Як тривіальний приклад, об'єднання з собою неоднозначне ( ), але конкатенація сама по собі однозначна.ABABwABw=abaAbB{ε,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-1XYY-1A+порожня.

X1Y={uAthere exists xX such that xuY}YX1={uAthere exists xX such that uxY}
XYX1XYY1A+

Доказ . Припустимо, що неоднозначний. Тоді існує слово ¯u , який має два розкладання над X Y , скажімо , у = х 1 у 2 = х 2 у 1 , де х 1 , х 2Х і у 1 , у 2Y . Не втрачаючи загальності, можна вважати, що x 1 є префіксом x 2 , тобто x 2 = xXYuXYu=x1y2=x2y1x1,x2Xy1,y2Yx1x2 для деякого 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=x1zzA+u=x1y2=x1zy1y2=zy1zX1XYY1

Припустимо тепер, що містить якесь непорожнє слово z . Тоді існують x 1 , x 2X і y 1 , y 2Y такі, що x 2 = x 1 z і y 2 = z y 1 . Звідси випливає, що x 2 y 1 = x 1 z y 1 =X1XYY1zx1,x2Xy1,y2Yx2=x1zy2=zy1 а значить, добуток X Y неоднозначний.x2y1=x1zy1=x1y2XY

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


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

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