跳至主要內容

Finite Automata

Hirsun大约 6 分钟

Finite Automata

1667964609923.png
1667964609923.png

通过放入有限自动机模型来实施正则表达式识别算法。

1667964754178.png

非确定性有限自动机(NFA)

Nondeterministic Finite Automata

非确定性有限自动机 (NFA) 由 5 个组件组成: (Σ, 𝑆, 𝑆0, 𝐹, move).

  • Σ is the input alphabet
  • 𝑆 is the set of states
  • 𝑆0 is the start state
  • 𝐹 ⊆ 𝑆 is the set of accepting states「接受状态的集合」
  • Move 是将 状态-符号对 映射到 状态集转换函数

1667966458326.png1667966494550.png

1667966648091.png1667966677835.png

基于 NFA 的识别(决策)难以实施

  • 在一个给定的状态下,可以从一个输入有多个转换
  • Can have 𝜀-transitions
  • 易于从正则表达式中形成
  • 难以实现识别(决策)算法

另一种有限自动机:Deterministic Finite Automata (DFA)「确定性有限自动机 (DFA)」

Regular Expression to NFA

每个正则表达式都可以转换为 NFA,遵循以下基本规则:

1667970474594.png
1667970474594.png

Example: regular expression to NFA

提示

  1. 拆开连接
  2. 逐步拆开外层表示
  3. 最后表示内层
1667970719358.png
1667970719358.png

确定性有限自动机(DFA)

Deterministic Finite Automata

每个状态下每个输入有一个过渡。

DFA 是 NFA 的一个特例:

  • One transition per input per state
  • No 𝜀-transitions
1667966795659.png
  • NFA: 容易生成字符串。
  • DFA: 易于生成和识别字符串。
  • NFA:给定一个输入符号,可以进入几个状态中的任何一个。
  • DFA:给定一个输入符号,只能进入一个确定性的状态。
  • NFA:由于 𝜀 - 转换,当没有输入时可能会进入另一个状态。
  • DFA:没有输入时哪里都不去;没有任何𝜀 - 过渡。
1667969094735.png

Table Implementation

1667969268659.png
1667969268659.png

Algorithm: Simulating a DFA

  • 输入:输入字符串𝑥,以文件末尾的字符eof为终点。
    • DFA 𝐷,开始状态为𝑠0,接受状态集为𝐹
  • The answer “yes” if 𝐷 accepts 𝑥, “no” otherwise.
  • Method:将以下算法应用于输入字符串𝑥。
    • move(𝑠, 𝑐) 给出了从状态𝑠过渡到输入𝑐的状态。
    • nextchar 返回输入字符串𝑥的下一个字符。
1667970005187.png

Every NFA can be converted to a DFA