在編譯器設計中,DFA和NFA有什麼區別?


確定性有限自動機 (DFA)

確定性意味著對於每個輸入,自動機只有一個狀態可以從其當前狀態轉換。在確定性有限自動機中,磁頭只能在一個方向上移動以掃描輸入磁帶符號。但在雙向有限自動機的情況下,在掃描輸入符號時,磁帶的磁頭可以從其當前位置向右或向左移動。

有兩種方法可以表示確定性有限自動機:

  • 狀態轉換圖

它是一個有向圖或流程圖,包含狀態和邊。狀態轉換圖中的強路徑是一系列邊,形成從某個起始狀態開始並以最終狀態結束的路徑。

  • 狀態轉換表

有限自動機可以用5元組 (Q, Σ, δ, q0, F) 表示

  • Q 是一個有限的非空狀態集。
  • Σ 是一個有限的輸入符號集。
  • 𝛿 是狀態轉換函式。
  • q0 ∈ Q 是初始狀態。
  • F ⊆ Q 是最終狀態集。


非確定性有限自動機 (NFA)

非確定性意味著可能存在多個可能的轉換。因此,對於給定的輸入,輸出是非確定性的。NFA也可以表示為非確定性有限狀態機。在NFA中,轉換不是由它們的輸入符號或源狀態專門決定的。不需要為每個單個狀態轉換讀取輸入符號。

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

解答

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

解答

讓我們看看DFA和NFA之間的比較。

DFANFA
從一個狀態到另一個狀態的每個轉換都是唯一且確定的。對於輸入可能存在多個轉換,即非確定性的。
不允許空轉換 (ε)。允許空轉換 (ε),這意味著在沒有任何輸入的情況下從當前狀態轉換到下一個狀態。
狀態轉換函式 - δ - Q x Σ → Q狀態轉換函式 - δ - Q x Σ → 2Q
它需要較少的記憶體,因為轉換和狀態較少。它需要更多的記憶體。
DFA示例 每個狀態都有唯一的輸入符號 Σ = {a, b} 從中發出。NFA示例 因為狀態0上存在輸入符號'a'的多個轉換。並且狀態2沒有轉換,即非確定性的。

更新於:2021年11月8日

2K+ 次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告