Чи є ефективний тест на те, якщо NFA приймає підмножину іншого NFA?


12

Отже, я знаю, що тестування, якщо звичайна мова є підмножиною звичайної мови , вирішується, оскільки ми можемо конвертувати їх як у DFA, обчислити , а потім перевірити, чи ця мова порожня.S R ˉ SRSRS¯

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

Чи відомий спосіб зробити це в поліноміальний час? Чи довели цю проблему взагалі завершеною співпрацею?

Слід зазначити , що проблема полягає в Co-NP , так як слово прийнято , але не буде многочленом сертифікатор , що .RSRS

EDIT: це неправильно, оскільки немає гарантії, що таке слово буде багаточленним у кількості держав.


1
це теоретичне питання чи про практику? Іноді для конкретного "розподілу" вхідних даних, що трапляються на практиці, проблема, пов'язана з Pspace, може бути "виконаною" за P час.
vzn

В ідеалі це теоретично, але докази, над якими я працюю, сильно керуються тестуванням на комп’ютері, а це означає, що швидкий алгоритм, безумовно, буде корисний.
jmite

так що так, є досить прямолінійний алгоритм, який працює, лише слідуючи переходам паралельно для кожної з двох машин і відстежуючи результуючі набори станів, приблизно як алгоритм визначення STD. не знаю, чи є його в літературі десь, його настільки просто, що це припускають. Ви вже використовуєте якийсь алгоритм? було б корисно, якщо ви цитуєте це. також більше інформації про тип входів буде корисним. це також звучить так, як ви хочете визначити, чи перехрестя двох НФА порожнє? ви хочете мову перехрестя або просто Y / N, якщо вона не порожня?
vzn

Я просто шукаю , якщо він порожній, ідея того , що я шукаю , якщо для тестування , якщо . Алгоритм паралельного переходу працює, я вважаю, що важка частина - це комплімент NFA, ви повинні спочатку перейти в DFA. Алгоритм, який я зараз використовую, є просто грубою силою, оскільки я маю справу лише з обмеженими мовами. R SRS={}RS
1313

вважаю, що може бути спосіб пройти два НФА, не перетворюючи їх ні на DFA, навіть знайти доповнення одного. але не бачив цього в реф.
vzn

Відповіді:


15

Проблема вирішення мови щодо стримування мови в NFA є незавершеним . Щоб довести це, легко зменшити проблему універсальності для NFA (тестування, чи ) Отже, певним чином, ви повинні визначитись, але ви можете це зробити на ходу.L ( A ) = Σ PSPACEL(A)=Σ

Ваші спостереження щодо спів-NP є неправильним (але приємним). Такого свідка справді можна перевірити в поліноміальному часі у свідка , але самий короткий свідок може бути експоненціальним у довжині введення. Оскільки , то рішення про немережування також є -повним.P S P A C EPSPACE=coPSPACEPSPACE

Для того, щоб державні речі більш ретельно, вирішуючи чи є в розмірі (так як тільки має бути доповнене) і в розмірі .P S P A C E B B N L O G S P A C E AL(A)L(B)PSPACEBBNLOGSPACEA


Ви абсолютно праві. Я мав справу з певним класом НФА, де сказано, що я сказала, але це точно не може бути із загальними нескінченними НФА. Дякую!
jmite

Ви б не мали посилання на папір або підручник, що підтверджує, що це PSPACE-повне, чи не так?
jmite

1
Це не дуже детальний доказ, але я думаю, що це вдасться: wisdom.weizmann.ac.il/~vardi/av/notes/lec4.ps
Shaull

4

Ви повинні ознайомитись з документом Жан-Франсуа Раскіна « Антихайн алгоритми для кінцевих автоматів» .

У наших експериментах випробування на включення проти ланцюга виконувало на один-два порядки краще, ніж підходи "традиційно".

Якщо я правильно пам'ятаю, цей алгоритм реалізований у бібліотеці libAMoRE ++ .


3

Однією з найкращих, найбільш ретельних сучасних і високооптимізованих безкоштовних бібліотек FSM, доступних в Інтернеті, є бібліотека AT&T FSM . Він реалізує "fsmdifference" саме так, як ви описуєте, вимагаючи визначити FSM, що не визначає епсилон. Одна ідея полягає в тому, щоб мінімізувати одну або обидві FSM, перш ніж робити різницю, що може допомогти в деяких випадках. (тобто визначення не є таким, як мінімізація.) Цей пакет також має "приблизну" або "жадібну" мінімізацію, яка може бути швидшою, ніж повне мінімізація.

Однак, вивчаючи подібні проблеми, я вважаю, що в літературі не з’являється деяке узагальнення або побудова FSM, які можуть допомогти вирішити цю проблему, уникаючи етапу визначення, тобто в основному інвертуючи NFA без створення додаткової визначеної FSM. Ідея полягає в тому, щоб перетинати краї NFA «паралельно» і відслідковувати набір вузлів, що входять до складу поточної «наддержави» (набору станів), як і за допомогою стандартного алгоритму визначення. Тоді доповнення NFA приймає тоді і тільки тоді, коли набір поточних наддержавних вузлів "неприйнятний" (на відміну від визначальної конструкції, яка приймає iff "будь-яку акцепту").

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

Ось два посилання «поблизу», які можуть бути корисними для деяких ідей. Мені було б цікаво почути будь-кого / інших, хто «ближче». Ви згадуєте, що працюєте над верифікацією програми, яка може бути полем, яке має більш прямі дослідження проблеми.

[1] Побудова перетину недетермінованих кінцевих автоматів за допомогою позначення Z Назір Ахмад Зафар, Набіл Сабір та Амір Алі

[2] Конструкції щодо доповнення для недетермінованих автоматів на нескінченних словах Орна Купферман та Моше Варді

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