📜  NPDA和DPDA之间的区别

📅  最后修改于: 2022-05-13 01:55:52.460000             🧑  作者: Mango

NPDA和DPDA之间的区别

下推自动机 (PDA) 是一种以类似方式实现上下文无关语法的方法。我们为正则语法设计了有限自动机。

  1. 它比 FSM 更强大。
  2. FSM 的内存非常有限,但 PDA 的内存更大。
  3. PDA= 有限状态机 +

该堆栈具有无限的内存,有助于下推自动机的更高功能。这有助于 PDA 表现得比有限状态机更强大。

下推自动机具有三个组件:

  1. 输入磁带
  2. 一个有限的控制单元。
  3. 一个无限大的堆栈。

举例说明 DPDA 和 NPDA 的定义

令 M = (Q,∑,Γ,q0, Z,F ,δ) 为 PDA。 PDA 是确定性的当且仅当

  1. δ(q, a, Z) 有一个元素。
  2. 如果 δ(q, a, Z) 不为空,则 δ(q0, a, Z) 应该为空。

为了使 PDA 具有确定性,这两个条件都应满足。如果条件之一失败,则 PDA 是不确定的。

让我们考虑一个例子来更清楚地理解。

示例: PDA 是否对应于语言 L = {a n b n | n>=1} 由有限状态是确定性的?

解决方案:为这台机器定义的显示转换如下所示:

δ(q0, a,  Z0) =δ(q0, aZ0) 
δ(q0, a,  a) =δ(q0, aa) 
δ(q0, b,  a) =δ(q1, ∈) 
δ(q1, b,  a) =δ(q1, ∈)  
δ(q1, ∈,  Z0) =δ(qf, ∈) 

PDA 应满足这两个条件。在定义中显示为确定性的。

  1. δ(q 0 , a, Z 0 ) 只有一个元素。在这种情况下,对于每个 q∈Q、a∈∑ 和 Z∈Γ,只存在一个定义,因此满足第一个条件。
  2. 为了满足第二个条件,考虑转换。 δ(q 1 ,ε , Z 0 ) = (q f, )。由于定义了转换,因此不应定义其中 a∈∑ 的转换 δ(q, a, Z 0 ) 是正确的。

因为这两种情况。满足,则给定的 PDA 是确定性的。

NPDA和DPDA的区别:

S. NoDPDA(Deterministic Pushdown Automata)NDPA(Non-deterministic Pushdown Automata)
1.It is less powerful than NPDA.It is more powerful than DPDA.
2.It is possible to convert every DPDA to a corresponding NPDA.It is not possible to convert every NPDA to a corresponding DPDA.
3.The language accepted by DPDA is a subset of the language accepted by NDPA.The language accepted by NPDA is not a subset of the language accepted by DPDA.
4.The language accepted by DPDA is called DCFL(Deterministic Context-free Language) which is a subset of NCFL(Non-deterministic Context-free Language) accepted by NPDA.The language accepted by NPDA is called NCFL(Non-deterministic Context-free Language).

还有一个区别如下:

DPDA:对于每个具有当前状态的输入,只有一个动作。

M = (Q,∑,Γ,q0, Z,F ,δ)

δ:Q*∑*Γ→Q*Γ

确定性路径

确定性路径

NPDA:对于每个具有当前状态的输入,我们可以有多个移动。

M = (Q,∑,Γ,q0, Z,F ,δ)

δ: Q*{∑∪∈}*Γ→2 Q*

非确定性路径

为什么 NPDA 比 DPDA 更强大?

NDPA 比 DPDA 更强大,因为我们可以向它添加更多的转换。每种语言都可以添加过渡。对于某些语言,我们可以构造 DPDA,存在 NPDA,但有些语言被 NPDA 接受但不被 DPDA 接受。当它接受比其他自动机更多的语言集时,据说这很强大。

事实上,它比 DFA(确定性有限自动机)和 NFA(非确定性有限自动机)更强大,还因为在 DFA 和 NFA 的情况下,它们的功能是等效的。因此,对于 DFA 接受的每种语言,都存在 NFA 和 Vice-Versa。我们没有为任何语言构建 NFA 而不是 DFA。因此,我们不能总是将 NPDA 转换为 DPDA,我们总是可以将 NFA 转换为等效的 DFA。