ChatDiagram
工具/NFA 圖表產生器

NFA 圖表產生器

描述語言、字母表或正規運算式,建立 NFA 圖表。NFA 產生器會以標準狀態圖形式繪製狀態、標記轉移、ε 移動與接受狀態。

狀態圖按 Enter 送出

免費帳號,無須信用卡 · 可匯出 SVG、PNG 或 PDF

看看實際效果

NFA 圖表範例。

同一款工具,四種需求。下方每張圖都是實際產生的成果。

輸入內容
繪製一個以 a 和 b 為字母、只接受以 ab 結尾字串的 NFA:q0 對 a 和 b 形成迴圈,q0 可在讀取 a 時移動到 q1,而 q1 在讀取 b 時移動到接受狀態 q2。
接著試試為被拒絕的已完成輸入新增一個陷阱狀態。將目標後綴從 ab 改成 ba。
狀態圖: 以 ab 結尾的字串
狀態圖 · OMG UML 2.5.1 §14 + Harel (1987) statechart · schematex-state
產生的圖表

什麼是 NFA 圖表。

NFA 圖表是非確定有限自動機的狀態圖。圓圈代表狀態,箭頭代表轉移,指向狀態的箭頭代表起始狀態,雙圓圈代表接受狀態。

與 DFA 不同,NFA 可在讀取相同輸入符號時採取多個轉移,也可使用不消耗輸入的 ε 轉移。只要至少有一條可能的路徑在接受狀態結束,字串就會被接受。

Standard
OMG UML 2.5.1 §14 + Harel (1987) statechart
Engine
schematex-state
Editable
Double-click text, drag nodes
Export
SVG · PNG · PDF
狀態圖: 什麼是 NFA 圖表。
適用對象

誰會使用 NFA 圖表。

狀態圖: 電腦科學學生電腦科學學生

用於正規語言練習,展示機器如何辨識後綴、前綴或子字串。

狀態圖: 理論課程講師理論課程講師

用於繪製小型 ε-NFA,讓課堂筆記中的正規運算式聯集更容易理解。

狀態圖: 語言與剖析器設計師語言與剖析器設計師

在轉換成實作前,將替代的 token 前綴繪製成分支。

運作方式

三個步驟建立 NFA 圖表。

01

描述需求

寫一段話就能開始。

“繪製一個以 a 和 b 為字母、只接受以 ab 結尾字串的 NFA:q0 對 a 和 b 形成迴圈,q0 可在讀取 a 時移動到 q1,而 q1 在讀取 b 時移動到接受狀態 q2。”
02

查看圖表

由合適的繪圖引擎產生。

狀態圖: 以 ab 結尾的字串
03

提出修改

每次修改都會保留版本。

為被拒絕的已完成輸入新增一個陷阱狀態。
V2 · DRAWN FROM V1, NOTHING RETYPED
常見問題

常見問題

什麼是 NFA?

非確定有限自動機是一種有限狀態機,對同一個輸入符號可能有多個轉移。只要至少有一條通過機器的路徑在接受狀態結束,它就會接受該輸入。

NFA 和 DFA 有什麼不同?

DFA 對每個狀態和輸入符號各有一個下一個狀態。NFA 可以分支到多個狀態,也可以包含 ε 轉移,但 NFA 和 DFA 能辨識相同類別的正規語言。

什麼是 ε 轉移?

ε 轉移可以在不消耗輸入字元的情況下變更狀態。從正規運算式建立 NFA 時,通常會用它來連接或分割分支。

接受狀態如何表示?

接受狀態或終止狀態會以雙圓圈表示。只有在讀完所有輸入後,某條路徑以該狀態結束時,機器才會接受輸入。

可以從正規運算式建立 NFA 嗎?

可以。描述運算式和字母表,再說明想在狀態圖中明確呈現的群組或交替。

相關工具

同類工作適用的其他圖表。

立即繪製你的第一個 NFA。

免費帳戶,不需信用卡。描述語言,在不到一分鐘內查看狀態圖。

開啟編輯器