Существует ли эффективный тест для принятия NFA подмножества другого NFA?

12

Итак, я знаю, что проверка того, является ли обычный язык R подмножеством обычного языка S , разрешима, поскольку мы можем преобразовать их оба в DFA, вычислить RS¯ , а затем проверить, является ли этот язык пустым.

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

Есть ли известный способ сделать это за полиномиальное время? Была ли эта проблема в целом доказана Co-NP завершена?

RSRS

РЕДАКТИРОВАТЬ: это неверно, так как нет гарантии, что такое слово будет полиномиальным по числу штатов.

jmite
источник
1
это теоретический вопрос или на практике? иногда для определенного «распределения» входных данных, встречающегося на практике, проблема полного завершения Pspace может быть «работоспособной» за время P.
13:00
В идеале это теоретически, но доказательства, над которыми я работаю, в значительной степени основаны на компьютерном тестировании, а это значит, что быстрый алгоритм определенно будет полезен.
jmite
так что да, есть довольно простой алгоритм, который работает, просто следуя параллельным переходам для каждой из двух машин и отслеживая результирующие наборы состояний, что-то вроде алгоритма определения std. не знаю, есть ли это где-то в литературе, это так просто, что можно предположить, что это так. Вы уже используете какой-то алгоритм? было бы полезно, если бы вы цитировали это. Также было бы полезно получить более подробную информацию о типе входных данных. это также звучит так, как будто вы хотите определить, пусто ли пересечение двух NFA? Вы хотите язык пересечения или просто Y / N, если он не пуст?
13
Я просто ищу , если он пустой, идея того , что я ищу , если для тестирования , если . Алгоритм параллельного перехода работает, я думаю, что самое сложное - это комплимент NFA, сначала нужно перейти на DFA. Алгоритм, который я использовал сейчас, просто грубая сила, поскольку я имею дело только с конечными языками. R SRS={}RS
jmite
Я полагаю, что может быть способ пройти через два NFA, не переходя ни в 1-й DFA, ни даже найти дополнение к одному. но не видел это в исх.
ВЗН

Ответы:

15

Проблема определения языковой локализации в NFAs является полной. Чтобы доказать это, легко уменьшить проблему универсальности для NFA (проверяя, есть ли ). Таким образом, вы должны определиться, но вы можете сделать это на лету.L ( A ) = Σ PSPACEL(A)=Σ

Ваше наблюдение о co-NP неверно (но приятно). Такой свидетель действительно может быть проверен за полиномиальное время у свидетеля , но сам самый короткий свидетель может быть экспоненциальным по длине входных данных. Так как , то решение о несдерживании также является -complete.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

Shaull
источник
Ты абсолютно прав. Я имел дело с определенным классом NFA, где то, что я сказал, имеет место, но это определенно не могло бы быть с общими бесконечными NFA. Благодарность!
jmite
У вас не было бы ссылки на статью или учебник, подтверждающие ее законченность на PSPACE, не так ли?
jmite
1
Это не очень подробное доказательство, но я думаю, что оно подойдет: wisdom.weizmann.ac.il/~vardi/av/notes/lec4.ps
Shaull
4

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

В наших экспериментах тест включения на основе цепей выполнялся на один-два порядка лучше, чем «традиционные» подходы.

Если я правильно помню, этот алгоритм реализован в библиотеке libAMoRE ++ .

Дэн
источник
3

Одна из лучших, наиболее совершенных и оптимизированных бесплатных бесплатных библиотек FSM, доступных в Интернете, - это библиотека AT & T FSM . Он реализует «fsmdifference» в точности так, как вы описываете, и для этого требуется определенный FSM без эпсилона. Одна идея состоит в том, чтобы свести к минимуму один или оба автомата, прежде чем делать разницу, что может помочь в некоторых случаях. (т.е. определение не то же самое, что минимизация.) Этот пакет также имеет «приблизительную» или «жадную» минимизацию, которая разработана, чтобы быть возможно более быстрой, чем полная минимизация.

Тем не менее, изучая подобные проблемы, я полагаю, что есть некоторое обобщение или построение автоматов, которые не встречаются в литературе, которые могут помочь с этой проблемой, избегая этапа детерминации, то есть, в основном, инвертируют NFA без создания дополнительного детерминированного FSM. Идея состоит в том, чтобы пересекать ребра NFA «параллельно» и отслеживать множество узлов, которые являются частью текущего «суперсостояния» (набора состояний), как со стандартным алгоритмом определения. Затем дополнение NFA принимает в том и только в том случае, если набор текущих суперсостоящих узлов «полностью неприемлем» (в отличие от определяющей конструкции, которая принимает iff «любое принятие»).

Тем не менее, я не видел это написано ранее и не вижу его через быстрый поиск в Интернете. Есть много ссылок, которые предполагают или подразумевают, что единственный способ работать с дополнением NFA - это определить его.

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

[1] Построение пересечения недетерминированных конечных автоматов с использованием Z-обозначения Назир Ахмад Зафар, Набиэль Сабир и Амир Али

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

ВЗН
источник