Алгоритм визначення того, чи є два регулярні вирази рівнозначними


12

Враховуючи два довільні регулярні вирази, чи існує "ефективний" алгоритм для визначення того, чи відповідають вони однаковому набору рядків?

Загалом, чи можемо ми обчислити розмір перетину двох наборів збігів?

Які алгоритми існують для цього і в якому класі складності вони живуть?

Якщо ми заборонимо зірку Кліна, чи це взагалі змінює картину?


Що ви маєте на увазі під "розміром перехрестя"? У більшості цікавих випадків вона буде нескінченно великою; Вас цікавлять розміри wrt ? Σн
Рафаель

@Raphael Моє розуміння полягає в тому, що усунення зірки Клейна змушує розмір набору бути кінцевим.
Математична

Залежить. Які інші оператори дозволені? Якщо ви дозволите доповнення, те, що ви говорите, не відповідає дійсності. Також ви запитуєте ситуацію із зіркою Kleene теж, тому вам потрібно все-таки уточнити.
Рафаель

Дивіться також cs.stackexchange.com/q/12624/755
DW

Відповіді:


12

Хендрік Ян дає хорошу відповідь для класу складності, але не сам алгоритм.

Найпростіший алгоритм для цього, який я знаю, - це перетворити регулярний вираз у DFA. Відомі методи перетворення регулярного виразу в NFA, а NFA в DFA.

Після того, як у вас є два DFA, тестування на еквівалентність є ефективним і вирішальним, оскільки мінімальна форма ДФА унікальна аж до ізоморфізму.

Однак, побудова цих DFA з NFA може зайняти багато часу, і створити надзвичайно велику DFAS, експоненціально велику в гіршому випадку.


11

Еквівалентність регулярних виразів, як відомо, є повною PSPACE, що є досить поганим. У роботі "Складність задач на рішення для простих регулярних виразів" перелічено декілька підкласів регулярних виразів з їх відповідними складностями. ( посилання )


1
це навіть EXPSPACE-завершений, якщо ви дозволите оператору квадрата (тобто писати замість e e ). Це стає НАЙКРАЩИМИ повним без зірки Клейна. е2ее
Денис

@dkuper Дякую за додаткове пояснення. Не соромтесь редагувати відповідь, щоб додати цю або відповідні посилання. (Або навіть почніть власну відповідь.)
Гендрік Ян

Чи є посилання на загальні регулярні вирази, які повинні бути повними PSPACE?
Райан

Ваше посилання мертве. Чи можете ви надати свіжу або хоча б якусь відповідну інформацію з паперу?
D. Ben Knoble

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