【計算理論】自動機設計 ( 設計自動機 | 確定性自動機設計示例 | 確定性與非確定性 | 自動機中的不確定性 )





設計自動機 ( 語言要求 )



設計自動機 : 之前是根據給定的自動機 , 找到自動機所能識別的語言 ; 現在是 給定語言 , 設計出能識別該語言的自動機 ;



自動機設計需求 : 設計一個又窮自動機 MM , 滿足以下的給定的語言要求 ; 即語言已經存在 , 求自動機 ;


1 . 自動機語言字符集 : Σ={0,1}\Sigma = \{0, 1\} , 字符集是 0011 組成 , 該自動機語言由 0,10 , 1 組成 , 如 01010101 , 100111100111 等 ;


2 . 自動機語言描述 :


① 自動機語言集合 : 自動機 MM 所能接受的字符串都放在集合 AA 中 , 集合 AA 就是該自動機語言 ;

② 自動機語言要求 : 自動機 MM 的語言 AA 集合 中的字符串中都有 奇數 個 11 ;



3 . 接受狀態 與 非接受狀態 : 根據上述自動機語言要求 , 定義接受狀態和非接受狀態 ;


① 接受狀態 : 如果當前輸入的字符串中 , 含有奇數個 11 那麼當前狀態是 接受狀態 ;

② 非接受狀態 : 如果當前輸入字符串中 , 有偶數個 11 , 那麼當前的狀態就是 非接受狀態 ;





設計自動機 ( 1 ) 開始狀態



Start 開始狀態 , 自動機啓動後 , 自動跳轉到 第一個狀態 SS ;

在這裏插入圖片描述





設計自動機 ( 2 ) 狀態 SS 狀態類型確定



第一個狀態首先要考慮該狀態是 接受狀態 還是非接受狀態 , 如果是接受狀態 , 使用雙圈表示 , 如果是非接受狀態 , 使用單圈表示 ;


先說結論 : 第一個狀態 SS 非接受狀態 , 是一個單圈 , 原因如下 :


處於第一個狀態時 , 還沒有讀取任何輸入信息 , 當前讀取 00 個字符 ;

此時有 0011 , 00 是偶數 , 也就是當前輸入有偶數個 11 , 顯然不符合語言的要求 ② 必須包含奇數個 11 ;

如果當前的狀態 , 不符合 自動機語言要求 , 那麼需要將當前狀態設置成非接受狀態 ;

此時的 SS 狀態就屬於此類情況 , 其不符合 AA 語言要求 , 有偶數個 11 , 因此 SS 狀態是非接受狀態 , 需要使用單圈表示該非接受狀態 ;


當前自動機 MM 設計 :

在這裏插入圖片描述





設計自動機 ( 3 ) 狀態 SS 輸入輸出分析



處於 SS 狀態時 , 設計自動機的原則是 , 考慮輸入任何指令 , 其狀態改變 , 即輸入 00 指令 , 狀態如何改變 , 輸入 11 指令 , 狀態如何改變 ;


在第一個狀態 SS 基礎上 , 如果輸入字符 00 , 此時還是有 偶數 個 11 , 其要到達的狀態還是非接受狀態 , 這裏將該狀態 繼續指向 它自己 ; 輸入序列 00 ;

在第一個狀態 SS 基礎上 , 如果輸入字符 11 , 此時還是有 奇數 個 11 , 此時其要達到一個新的狀態 TT , 這個新狀態 符合 AA 語言要求 , 有奇數個 11 , 是可接受狀態 , 使用雙圈表示 ; 輸入序列 11 ;


當前自動機 MM 設計 :

在這裏插入圖片描述


SS 狀態已經分析完畢 , 下面開始討論 TT 狀態的自動機後續設計 ;





設計自動機 ( 4 ) 狀態 TT 輸入輸出分析



處於 TT 狀態時 , 設計自動機的原則是 , 考慮輸入任何指令 , 其狀態改變 , 即輸入 00 指令 , 狀態如何改變 , 輸入 11 指令 , 狀態如何改變 ;


TT 狀態下 , 如果輸入 00 , 此時還是有 1111 , 即奇數個 11 , 其狀態還是可接受狀態 , 繼續指向該狀態自己 TT ; 輸入序列 0000 ;

TT 狀態下 , 如果輸入 11 , 此時輸入中出現 2211 , 輸入了 偶數 個 11 , 其狀態就是 非接受狀態 , 需要 跳轉到 非接受狀態 SS , 箭頭從 TT 指向 SS ; 輸入序列 0101 ;


當前自動機 MM 設計 :

在這裏插入圖片描述





最優自動機



自動機性能 : 給定一個 自動機語言 AA , 那麼根據該語言可以設計出 不同的自動機 , 那麼這些自動機之間的性能肯定是不同的 , 有的自動機性能高 , 有的自動機性能低 ;

最優自動機 : 從上述根據 同一個語言 設計出的多個自動機中 , 肯定能選出一個最優自動機 ;





自動機設計算法



自動機生成算法 : 自動機是可以使用算法生成的 , 存在一種算法 , 用該算法生成一個 能識別給定語言的 最優的自動機 ;





確定性 與 非確定性



1 . 確定性 思想 : 自然界一定是確定性的 , 給定一個輸入 , 必定對應唯一一個輸出 ; 如果出現非確定的輸出 , 是由於人的認知有限 , 沒有發現其中的未知變量 ; 隨着科學認知的發展 , 這些不確定性會消除 ; 以牛頓力學爲代表 ;


2 . 非確定性 思想 ( 主流 ) : 自然界是非確定的 , 一個輸入對應 不確定 個輸出 ; 以量子力學爲代表 ;


確定性有窮自動機 的 確定性 , 就是上述確定性思想的應用 ;


下面要將 非確定性思想應用到 自動機設計中 ;





自動機非確定性示例



在這裏插入圖片描述

上述 自動機 是一個非確定性自動機 , 非確定性主要體現在以下幾個方面 ;



11 個字符輸入對應 22 個輸出 :

當前狀態爲 q1q_1 時 , 讀取字符 11 時 , 其後繼狀態有兩個 , 既可以跳轉到 q1q_1 本身狀態 , 又可以跳轉到 q2q_2 狀態 ;

這個操作是一個非確定性的操作 , 讀取一個字符 , 卻對應了兩個後繼狀態 ;


00 個字符輸入對應 11 個輸出 :

當前狀態爲 q2q_2 時 , 讀取字符 00 或者 ε\varepsilon 空字符串 時 , 就可以跳轉到 q3q_3 狀態 ;

ε\varepsilon 表示空字符串 , 其類似於自然數中的 00 的概念 ;


00 個字符輸入對應 00 個輸出 :

當前狀態爲 q3q_3 時 , 爲其輸入字符 00 , 其沒有後繼狀態 ;

這個操作也是一個非確定性操作 , 讀取一個字符 , 沒有後繼狀態 ;


自動機中的不確定性 : 不確定性自動機中 , 允許 空字符 或 11 個字符 輸入 , 對應 00 個 或 多個輸出 ;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章