Чи є спосіб перевірити, чи два НФА приймають ту саму мову?


10

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


Ні (як мінімум, як нам відомо). Рівність НФА завершена PSPACE. Дивіться цю дискусію .
Shaull

@Shaull: ОП не вдалося до ефективного шляху.
frafl

@frafl: Ви маєте рацію. Я припускав, що «зайнять багато часу», що ОП хоче ефективного рішення. Але в моєму коментарі згадується, що він знаходиться в PSPACE, тому його можна вирішити.
Shaull

Відповіді:


10

Як зазначив Шаул, проблема вирішення проблеми є повною PSPACE.

Однак виявляється, що на практиці часто можна визначити еквівалентність NFA досить швидко. Майр і Клементе (на підставі експериментальних даних) стверджують, що середньостатистична складність масштабується квадратично . Їх методи покладаються на обрізку основної мітки перехідної системи за допомогою локальних наближень слідів включення.

Подібно до того, як SAT є NP-завершеним в аналізі найгіршого випадку, але часто виявляється напрочуд простежуваним для реальних випадків, тому, здається, ймовірно, що еквівалентність NFA може бути вирішена ефективно для багатьох реальних випадків.

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