什麼是非確定有限自動機 (NFA)?


非確定性意味著從某個狀態出發,在相同的輸入符號上可能存在多個可能的轉移。對於給定的輸入,輸出是非確定的。NFA 可以表示為非確定有限狀態機。

NFA 可以用 5 元組 (Q,$\sum$,$\delta$,q0,F) 表示。

  • Q 是一個有限的非空狀態集。

  • $\sum$ 是一個有限的輸入符號集。

  • $\delta$ 是從當前狀態轉移到下一個狀態的轉移函式。

∴ $\delta$:Q x $\sum$ → 2Q

  • q0 ∈ Q 是初始狀態。

  • F \subseteq Q 是終結狀態集。

示例 1 - 為正則表示式 a(a+b)*ab 繪製 NFA

解決方案

示例 2 - 為 a + b + ab 繪製 NFA

解決方案

示例 3 - 令 M=(Q,∑,$\delta$,q0,F) 為一個 NFA。證明對於任何 qϵQ 和 a ϵ Σ,$\delta$′(q,a)= $\delta$(q,a)

解決方案

令 M=(Q,∑,$\delta$,q0,F) 為識別語言 L 的 NFA。則滿足以下條件的 DFA,M′=(Q1,∑,$\delta$′,q′0,F′) 識別 L:Q1=2Q,即 Q 的所有子集的集合。

q′0={q0}

$\delta$(q,a)=∪pϵq$\delta$(p,a) 對於 Q1 中的每個狀態 q 和 Σ 中的每個符號 a 以及

F={qϵQ1|q∩F2≠ф}

為了獲得 DFA M′=(Q1,Σ,$\delta$′,q′0,F′),它接受與給定 NFA,M=(Q,∑,$\delta$,q0,F) 相同的語言。可以按如下步驟進行 -

步驟 1 - 最初 Q1

步驟 2 - 將 {q0} 放入 Q1 中。{q0} 是 DFA M′ 的初始狀態。

步驟 3 - 然後對於 Q1 中的每個狀態 q 執行以下操作:新增此新狀態,將 δ(q,a)=∪pϵqδ(p,a) 新增到 δ 中,其中右側的 δ 是 NFA M′ 的 δ。

步驟 4 - 重複步驟 3 直到有新狀態需要新增到 Q1 中,如果有要新增到 Q1 中的新狀態,則過程終止。

示例 4 - 證明如果 L 被具有 ∈-轉移的 NFA 接受,則 L 被不具有 ∈-轉移的 NFA 接受。

解決方案

假設 L = L (D) 對於某些不具有 ∈-轉移的 DFA 或 NFA。可以透過為 D 的所有狀態 q 新增轉移 δ(q,∈)=ф 來將其轉換為 ∈-DFA (E)。還可以將 D 上輸入符號的轉移例如 δD(q,a)=D 移動到 NFA 轉移到僅包含 P 的集合中,即 δE(q,a)={P}。因此,E 和 D 的轉移是相等的,但 E 明確指出 E 的任何狀態都沒有轉移。

令 E=(QE,Σ,δE,q0,FE) 為 ∈-NFA。可以使用上面表示的修改後的子集構造來建立 DFA。

D=(QE,∑,δE,qD,FD)

L(D)=L(E),因為 E 和 D 的擴充套件轉移函式是相等的。擴充套件轉移函式是取狀態 q 和字串 w 並返回狀態 P 的函式,即自動機在從狀態 q 開始並處理輸入序列 w 時到達的狀態。

δE(q0,w)=δD(qD,w) 透過對 w 的長度進行歸納。

更新於: 2021 年 10 月 26 日

2K+ 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.