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