Меня интересуют эффективные алгоритмы пересечения DFA для особых случаев. А именно, когда DFA пересекаются, подчиняются определенной структуре и / или работают по ограниченному алфавиту. Есть ли источник, где я могу найти алгоритмы таких случаев?
Чтобы не делать вопрос слишком широким, особый интерес представляет следующая структура: все DFA, которые должны пересекаться, работают в двоичном алфавите (0 | 1), они также могут использовать небезразличные символы. Более того, все состояния имеют только один переход, за исключением не более чем K специальных состояний, которые имеют только два перехода (и эти переходы всегда равны 0 или 1, но не все равно). K - целое число, меньше 10 для практических целей. Кроме того, у них есть единственное принимающее государство. Кроме того, известно, что пересечение ВСЕГДА является DFA в форме "полосы", то есть без ветвей, как на следующем изображении:
РЕДАКТИРОВАТЬ: Возможно, описание ограничения на входные DFAs не очень ясно. Я постараюсь улучшить это в этом пункте. Вы как вход Т ДКА. Каждый из этих DFA действует только на двоичном алфавите. Каждый из них имеет не более N состояний. Для каждого DFA каждое из его состояний является одним из следующих:
1) принимающее состояние (оно только одно и перехода из него в любое другое состояние нет)
2) состояние с двумя переходами (0 и 1) в одно и то же целевое состояние (большинство состояний этого типа)
3) состояние с двумя переходами (0 и 1) в разные целевые состояния (не более K этого типа)
Гарантируется, что существует только одно принимающее состояние и что в каждом входном DFA имеется не более K состояний типа (3). Это также гарантирует , что пересечение DFA все входную ДКИ является «полосой» (как описано выше), размера меньше , чем N .
РЕДАКТИРОВАТЬ 2: Некоторые дополнительные ограничения, как того требует DW в комментариях:
- Входные DFA - это DAG.
- Входные DFA "выровнены", следуя определению DW в комментариях. А именно, вы можете назначить разные целые числа каждому состоянию таким образом, чтобы каждый переход переходил от целого числа u к целому числу v , так что u + 1 = v .
- Количество допускающих состояний для каждого входного DFA, не превышает K .
Любые идеи? Спасибо.
a DFA in form of "strip", i.e., no branches
? Есть ли у вас какие-либо конкретные основания полагать, что в вашем случае можно добиться большего успеха, чем стандартный алгоритм?