我最近正在读一篇论文《加速多个正则表达式的算法》用于延迟输入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无法匹配来自状态2的字符c,而Delayed输入DFA可以通过先使用null字符进入状态1,然后匹配c来匹配c。
有人能告诉我为什么吗?
可能他们假设原始DFA的转换函数是total,在必要时引入显式错误状态。您的转换函数f
对于(c, 2)
是未定义的。