avatarJack in the world

总结

网页主要介绍了确定有限状态自动机(DFA)的定义、结构和应用。

摘要

网页详细解释了确定有限状态自动机(DFA)的概念,指出DFA是有限状态机(FSM)的一种分类,它能够根据转移函数,对于给定的状态和输入字母,转移到下一个状态。文章通过一个简单的例子说明了DFA的组成元素,包括状态(State)、结束状态、流程转移箭头以及起始状态。例子中,状态用圆圈表示,结束状态用双重圆圈表示,箭头代表状态转移,旁边的文字表示当输入为特定字母时的转移状态。文章还提到,当输入字符串从起始状态开始,根据箭头和字母逐个转移,最终到达结束状态时,自动机接受该字符串;否则,自动机拒绝该字符串。此外,文章指出DFA在编程中的主要应用是正则表达式(RegEx),并提供了两个相关的视频链接,用以进一步了解DFA和正则表达式的应用。

观点

  • 确定性有限状态自动机(DFA)是有限状态机(FSM)的一种,它在计算理论中能够实现状态转移。
  • DFA的工作原理是基于转移函数,对于每个状态和输入字母,都有明确的下一个状态。
  • DFA可以用图表表示,通过状态、转移箭头和字母来描述其行为。
  • DFA的接受与拒绝:如果输入字符串能够导致自动机从起始状态到达结束状态,则自动机接受该字符串;否则,拒绝。
  • 在编程实践中,DFA的一个重要应用是正则表达式,它是处理文本匹配和模式识别的强大工具。

[CS] 確定有限狀態自動機 DFA (deterministic finite automaton)

定義

DFA(deterministic finite automaton, 確定有限狀態自動機)屬於FSM(finite-state machine, 有限狀態機)的一種分類,根據Wikipedia的說明:

在計算理論中,確定有限狀態自動機或確定有限自動機(英語:deterministic finite automaton, DFA)是一個能實現狀態轉移的自動機。 對於一個給定的屬於該自動機的狀態和一個屬於該自動機字母表的字元,它都能根據事先給定的轉移函式轉移到下一個狀態(這個狀態可以是先前那個狀態)。

啊…看不懂

我不想套用學術表示式來說明DFA是啥,基本上,自動機可以用圖表來表示,就用個簡單的例子(取自Wikipedia)來說:

這個圖表裡面,有一些元素:

  • S1, S2這兩個以圓圈表示的,就是狀態(State)
  • S1以雙重圓圈表示,這就是結束狀態.結束狀態可以有複數個.
  • 箭頭表示流程,箭頭旁邊的文字是它的字母,也就是當輸入是這個字母時,要轉移到哪一個狀態. 譬如說,S1有個箭頭指向S2,旁邊是0這個字母,表示當輸入為0的時候,S1會轉移到S2 箭頭可以指向自己,譬如S1和S2都有指向自己本身的箭頭,箭頭的字母為1,也就是說當輸入為1的時候,轉移向自己,相當於沒有變化狀態
  • 沒有起始狀態的箭頭,表示為起始輸入,它所指向的狀態就是起始狀態.整個流程就是從這個起始狀態開始,在上面的例子裡面,S1就是起始狀態.

給予這個自動機一個輸入字串,從起始狀態開始,一個字元一個字元的根據箭頭和它的表示字元來移動,如果最後移動到一個結束狀態,我們就說自動機接受這個字串,反之就是自動機拒絕這個字串.

如果還是不了解,這裡有個解釋FSM的影片,我覺得說明得還不錯:

應用

DFA在Programming/Coding的最大應用就是正規表示式,或稱規則運算式(Regular Expression, RegEx)

這個要說起來就比較費工夫啦,所以先拿個網路上的影片來擋一下,請自行觀看,等有機會我再來寫篇文章解釋:

確定有限狀態自動機
Dfa
Computer Science
Regex
Cs
Recommended from ReadMedium