什麼是非確定性有限自動機?
對於每個狀態,都存在與相應字母表中的每個符號相對應的精確一個轉移。這被稱為確定性有限自動機 (DFA)。
非確定性有限自動機 (NFA)
對於每個狀態,可以存在零個、一個、兩個或多個與特定符號相對應的轉移。
如果 NFA 進入一個狀態,該狀態存在多個與輸入符號相對應的可能的轉移,我們說它分支了。
如果 NFA 進入一個沒有有效轉移的狀態,則該分支終止。如果存在某個轉移選擇會導致最終進入接受狀態,則 NFA 接受輸入字串。
因此,一個接受分支足以使整體 NFA 接受,但所有分支都必須拒絕才能使整體 NFA 拒絕。
這是一個計算模型。我們編寫 DFA 來指定確定性有限自動機。正式地,NFA 是一個 5 元組 (Q, ∑, q0 , T, δ),與之前一樣
- Q 是有限的狀態集
- ∑ 是輸入符號的字母表
- q0 是起始狀態
- T 是 Q 的子集,給出接受狀態
- δ 是轉移函式。
- 現在,轉移函式指定一組狀態而不是一個狀態:它將 Q☓ ∑ 對映到 {Q 的子集}。
示例 1
NFA 接受任何包含 00 或 11 作為子串的二進位制字串。如下所示:
示例 2
NFA 接受所有以 101 結尾的二進位制字串。如下所示:
廣告