【计算理论】自动机设计 ( 设计自动机 | 确定性自动机设计示例 | 确定性与非确定性 | 自动机中的不确定性 )
文章目錄
- 一、 設計自動機 ( 語言要求 )
- 二、 設計自動機 ( 1 ) 開始狀態
- 三、 設計自動機 ( 2 ) 狀態 SSS 狀態類型確定
- 四、 設計自動機 ( 3 ) 狀態 SSS 輸入輸出分析
- 五、 設計自動機 ( 4 ) 狀態 TTT 輸入輸出分析
- 六、 最優自動機
- 七、 自動機設計算法
- 八、 確定性 與 非確定性
- 九、 自動機非確定性示例
一、 設計自動機 ( 語言要求 )
設計自動機 : 之前是根據給定的自動機 , 找到自動機所能識別的語言 ; 現在是 給定語言 , 設計出能識別該語言的自動機 ;
自動機設計需求 : 設計一個又窮自動機 MMM , 滿足以下的給定的語言要求 ; 即語言已經存在 , 求自動機 ;
1 . 自動機語言字符集 : Σ={0,1}\Sigma = \{0, 1\}Σ={0,1} , 字符集是 000 和 111 組成 , 該自動機語言由 0,10 , 10,1 組成 , 如 010101010101 , 100111100111100111 等 ;
2 . 自動機語言描述 :
① 自動機語言集合 : 自動機 MMM 所能接受的字符串都放在集合 AAA 中 , 集合 AAA 就是該自動機語言 ;
② 自動機語言要求 : 自動機 MMM 的語言 AAA 集合 中的字符串中都有 奇數 個 111 ;
3 . 接受狀態 與 非接受狀態 : 根據上述自動機語言要求 , 定義接受狀態和非接受狀態 ;
① 接受狀態 : 如果當前輸入的字符串中 , 含有奇數個 111 那么當前狀態是 接受狀態 ;
② 非接受狀態 : 如果當前輸入字符串中 , 有偶數個 111 , 那么當前的狀態就是 非接受狀態 ;
二、 設計自動機 ( 1 ) 開始狀態
Start 開始狀態 , 自動機啟動后 , 自動跳轉到 第一個狀態 SSS ;
三、 設計自動機 ( 2 ) 狀態 SSS 狀態類型確定
第一個狀態首先要考慮該狀態是 接受狀態 還是非接受狀態 , 如果是接受狀態 , 使用雙圈表示 , 如果是非接受狀態 , 使用單圈表示 ;
先說結論 : 第一個狀態 SSS 是 非接受狀態 , 是一個單圈 , 原因如下 :
處于第一個狀態時 , 還沒有讀取任何輸入信息 , 當前讀取 000 個字符 ;
此時有 000 個 111 , 000 是偶數 , 也就是當前輸入有偶數個 111 , 顯然不符合語言的要求 ② 必須包含奇數個 111 ;
如果當前的狀態 , 不符合 自動機語言要求 , 那么需要將當前狀態設置成非接受狀態 ;
此時的 SSS 狀態就屬于此類情況 , 其不符合 AAA 語言要求 , 有偶數個 111 , 因此 SSS 狀態是非接受狀態 , 需要使用單圈表示該非接受狀態 ;
當前自動機 MMM 設計 :
四、 設計自動機 ( 3 ) 狀態 SSS 輸入輸出分析
處于 SSS 狀態時 , 設計自動機的原則是 , 考慮輸入任何指令 , 其狀態改變 , 即輸入 000 指令 , 狀態如何改變 , 輸入 111 指令 , 狀態如何改變 ;
在第一個狀態 SSS 基礎上 , 如果輸入字符 000 , 此時還是有 偶數 個 111 , 其要到達的狀態還是非接受狀態 , 這里將該狀態 繼續指向 它自己 ; 輸入序列 000 ;
在第一個狀態 SSS 基礎上 , 如果輸入字符 111 , 此時還是有 奇數 個 111 , 此時其要達到一個新的狀態 TTT , 這個新狀態 符合 AAA 語言要求 , 有奇數個 111 , 是可接受狀態 , 使用雙圈表示 ; 輸入序列 111 ;
當前自動機 MMM 設計 :
SSS 狀態已經分析完畢 , 下面開始討論 TTT 狀態的自動機后續設計 ;
五、 設計自動機 ( 4 ) 狀態 TTT 輸入輸出分析
處于 TTT 狀態時 , 設計自動機的原則是 , 考慮輸入任何指令 , 其狀態改變 , 即輸入 000 指令 , 狀態如何改變 , 輸入 111 指令 , 狀態如何改變 ;
TTT 狀態下 , 如果輸入 000 , 此時還是有 111 個 111 , 即奇數個 111 , 其狀態還是可接受狀態 , 繼續指向該狀態自己 TTT ; 輸入序列 000000 ;
TTT 狀態下 , 如果輸入 111 , 此時輸入中出現 222 個 111 , 輸入了 偶數 個 111 , 其狀態就是 非接受狀態 , 需要 跳轉到 非接受狀態 SSS , 箭頭從 TTT 指向 SSS ; 輸入序列 010101 ;
當前自動機 MMM 設計 :
六、 最優自動機
自動機性能 : 給定一個 自動機語言 AAA , 那么根據該語言可以設計出 不同的自動機 , 那么這些自動機之間的性能肯定是不同的 , 有的自動機性能高 , 有的自動機性能低 ;
最優自動機 : 從上述根據 同一個語言 設計出的多個自動機中 , 肯定能選出一個最優自動機 ;
七、 自動機設計算法
自動機生成算法 : 自動機是可以使用算法生成的 , 存在一種算法 , 用該算法生成一個 能識別給定語言的 最優的自動機 ;
八、 確定性 與 非確定性
1 . 確定性 思想 : 自然界一定是確定性的 , 給定一個輸入 , 必定對應唯一一個輸出 ; 如果出現非確定的輸出 , 是由于人的認知有限 , 沒有發現其中的未知變量 ; 隨著科學認知的發展 , 這些不確定性會消除 ; 以牛頓力學為代表 ;
2 . 非確定性 思想 ( 主流 ) : 自然界是非確定的 , 一個輸入對應 不確定 個輸出 ; 以量子力學為代表 ;
確定性有窮自動機 的 確定性 , 就是上述確定性思想的應用 ;
下面要將 非確定性思想應用到 自動機設計中 ;
九、 自動機非確定性示例
上述 自動機 是一個非確定性自動機 , 非確定性主要體現在以下幾個方面 ;
111 個字符輸入對應 222 個輸出 :
當前狀態為 q1q_1q1? 時 , 讀取字符 111 時 , 其后繼狀態有兩個 , 既可以跳轉到 q1q_1q1? 本身狀態 , 又可以跳轉到 q2q_2q2? 狀態 ;
這個操作是一個非確定性的操作 , 讀取一個字符 , 卻對應了兩個后繼狀態 ;
000 個字符輸入對應 111 個輸出 :
當前狀態為 q2q_2q2? 時 , 讀取字符 000 或者 ε\varepsilonε 空字符串 時 , 就可以跳轉到 q3q_3q3? 狀態 ;
ε\varepsilonε 表示空字符串 , 其類似于自然數中的 000 的概念 ;
000 個字符輸入對應 000 個輸出 :
當前狀態為 q3q_3q3? 時 , 為其輸入字符 000 , 其沒有后繼狀態 ;
這個操作也是一個非確定性操作 , 讀取一個字符 , 沒有后繼狀態 ;
自動機中的不確定性 : 不確定性自動機中 , 允許 空字符 或 111 個字符 輸入 , 對應 000 個 或 多個輸出 ;
總結
以上是生活随笔為你收集整理的【计算理论】自动机设计 ( 设计自动机 | 确定性自动机设计示例 | 确定性与非确定性 | 自动机中的不确定性 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Android FFMPEG 开发】F
- 下一篇: 【计算理论】非确定性有限自动机 ( 计算