Answers:
有两个答案,具体取决于您定义效率的方式。
事半功倍:NFA效率更高。
将DFA转换为NFA很简单,并且不会增加表示的大小。
但是,对于某些常规语言,最小DFA的指数大于最小NFA的指数。一个典型的例子是为固定。 k
快速运行:DFA效率更高。
我们今天使用的计算机本质上是确定性的。这使他们不善于处理不确定性问题。确定性处理NFA的方法有两种,一种是在一侧进行回溯,这相当昂贵,另一种是跟踪活动状态,这意味着每次转换都将花费倍的时间(其中是NFA的大小) 。N
就功率而言,它们与您所说的等效,并且有一种算法(子集构造)可将NFA转换为等效的DFA。正如您可能从算法名称中看出的那样,它构造了NFA状态的子集。如果您的NFA具有个状态,则该算法可能会输出具有个状态的DFA,但这是一个上限。有时,状态数根本不会改变,甚至不会减少。因此,在实践中,使用哪一个无关紧要。2 n
DFA匹配在输入字符串的大小上是线性的。NFA匹配涉及回溯,因此NFA可以做更多的工作。因此,DFA效率更高。
众所周知,Automata即无需任何人力或无需人工直接即可执行任何动作的机器。例如:洗衣机。有限自动机意味着我们知道通过机器执行任务的状态,例如1按下ON 2按下OFF,所以只有2种状态,即有限自动机。现在进入DFA,即确定性有限自动机。从形式上说,我们可以轻松确定没有歧义的状态,非正式地,我们只需要在1个符号上进行1次转换即可。NFA:非确定性有限自动机。需要更多的时间来计算实际状态,并且存在歧义,并且非正式地表示1个符号上有多个允许的转换。在到达目的地的时间方面,NFA比DFA需要更多的时间,但是NFA可以加载比DFA更多的数据。* DFA和NFA具有相同的识别字符串的能力。谢谢.. Deepali kaushik