我正在阅读关于NFA和DFA的内容,似乎实现正则表达式匹配器的最流行和最快的方法是从正则表达式创建NFA,将其转换为DFA,最小化该DFA,在任何语言中实现它并使用它。
DFA比NFA更好的选择是因为它只有一个输入的转移,而NFA可以有多个。因此,DFA只有一条路径可供跟随,而NFA则有多条路径。
但是,这就是我不明白的地方。为什么我们必须跟踪NFA状态并返回到它们,这会减慢我们的速度,当遇到一个输入时,我们是否可以将其拆分成不同的线程,并并行计算每个路径?这样会比DFA更快吗?还是我漏掉了什么?
DFA比NFA更好的选择是因为它只有一个输入的转移,而NFA可以有多个。因此,DFA只有一条路径可供跟随,而NFA则有多条路径。
但是,这就是我不明白的地方。为什么我们必须跟踪NFA状态并返回到它们,这会减慢我们的速度,当遇到一个输入时,我们是否可以将其拆分成不同的线程,并并行计算每个路径?这样会比DFA更快吗?还是我漏掉了什么?