我最近正在阅读有关延迟输入DFA的论文Algorithms to Accelerate Multiple Regular Expressions
Matching for Deep Packet Inspection。
根据论文中的引理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无法与状态2中的字符c匹配
DFA可以匹配c,首先使用空字符转到状态1,然后匹配c。
有人可以告诉我为什么吗?
答案 0 :(得分:1)
可能他们假设原始DFA的转换函数是完全的,通过在必要时引入显式错误状态。您的转换函数f
未定义为(c, 2)
。