Почему DFA эквивалентен задержанному вводу DFA
Недавно я читал статью " Алгоритмы ускорения сопоставления нескольких регулярных выражений для глубокого анализа пакетов" с задержкой входного DFA.
Согласно лемме 1 в статье, DFA эквивалентен соответствующему задержанному входному DFA. Но рассмотрим встречный пример ниже:
Пусть f(i, s) обозначает функцию перехода, где s - текущее состояние, а i - входной символ.
DFA:
f(a, 1) = 3, f(b,1) = 3, f(c, 1) = 3, f(a, 2) = 3, f(b, 2) = 3
Соответствующий задержанный ввод DFA:
f(a, 1) = 3, f(b, 1) = 3, f(c, 1) = 3, f(null, 2) = 1 (null means the default transition)
Тогда исходный DFA не может соответствовать символу c из состояния 2, в то время как входной DFA с задержкой может соответствовать c, сначала перейдя в состояние 1 с использованием нулевого символа, а затем соответствует c.
Может кто-нибудь сказать мне, почему?
1 ответ
Вероятно, они предполагают, что функция перехода исходного DFA является полной, вводя явное состояние ошибки при необходимости. Ваша функция перехода f
не определено для (c, 2)
,