文章目錄
設計自動機 ( 語言要求 )
設計自動機 : 之前是根據給定的自動機 , 找到自動機所能識別的語言 ; 現在是 給定語言 , 設計出能識別該語言的自動機 ;
自動機設計需求 : 設計一個又窮自動機 , 滿足以下的給定的語言要求 ; 即語言已經存在 , 求自動機 ;
1 . 自動機語言字符集 : , 字符集是 和 組成 , 該自動機語言由 組成 , 如 , 等 ;
2 . 自動機語言描述 :
① 自動機語言集合 : 自動機 所能接受的字符串都放在集合 中 , 集合 就是該自動機語言 ;
② 自動機語言要求 : 自動機 的語言 集合 中的字符串中都有 奇數 個 ;
3 . 接受狀態 與 非接受狀態 : 根據上述自動機語言要求 , 定義接受狀態和非接受狀態 ;
① 接受狀態 : 如果當前輸入的字符串中 , 含有奇數個 那麼當前狀態是 接受狀態 ;
② 非接受狀態 : 如果當前輸入字符串中 , 有偶數個 , 那麼當前的狀態就是 非接受狀態 ;
設計自動機 ( 1 ) 開始狀態
Start 開始狀態 , 自動機啓動後 , 自動跳轉到 第一個狀態 ;
設計自動機 ( 2 ) 狀態 狀態類型確定
第一個狀態首先要考慮該狀態是 接受狀態 還是非接受狀態 , 如果是接受狀態 , 使用雙圈表示 , 如果是非接受狀態 , 使用單圈表示 ;
先說結論 : 第一個狀態 是 非接受狀態 , 是一個單圈 , 原因如下 :
處於第一個狀態時 , 還沒有讀取任何輸入信息 , 當前讀取 個字符 ;
此時有 個 , 是偶數 , 也就是當前輸入有偶數個 , 顯然不符合語言的要求 ② 必須包含奇數個 ;
如果當前的狀態 , 不符合 自動機語言要求 , 那麼需要將當前狀態設置成非接受狀態 ;
此時的 狀態就屬於此類情況 , 其不符合 語言要求 , 有偶數個 , 因此 狀態是非接受狀態 , 需要使用單圈表示該非接受狀態 ;
當前自動機 設計 :
設計自動機 ( 3 ) 狀態 輸入輸出分析
處於 狀態時 , 設計自動機的原則是 , 考慮輸入任何指令 , 其狀態改變 , 即輸入 指令 , 狀態如何改變 , 輸入 指令 , 狀態如何改變 ;
在第一個狀態 基礎上 , 如果輸入字符 , 此時還是有 偶數 個 , 其要到達的狀態還是非接受狀態 , 這裏將該狀態 繼續指向 它自己 ; 輸入序列 ;
在第一個狀態 基礎上 , 如果輸入字符 , 此時還是有 奇數 個 , 此時其要達到一個新的狀態 , 這個新狀態 符合 語言要求 , 有奇數個 , 是可接受狀態 , 使用雙圈表示 ; 輸入序列 ;
當前自動機 設計 :
狀態已經分析完畢 , 下面開始討論 狀態的自動機後續設計 ;
設計自動機 ( 4 ) 狀態 輸入輸出分析
處於 狀態時 , 設計自動機的原則是 , 考慮輸入任何指令 , 其狀態改變 , 即輸入 指令 , 狀態如何改變 , 輸入 指令 , 狀態如何改變 ;
狀態下 , 如果輸入 , 此時還是有 個 , 即奇數個 , 其狀態還是可接受狀態 , 繼續指向該狀態自己 ; 輸入序列 ;
狀態下 , 如果輸入 , 此時輸入中出現 個 , 輸入了 偶數 個 , 其狀態就是 非接受狀態 , 需要 跳轉到 非接受狀態 , 箭頭從 指向 ; 輸入序列 ;
當前自動機 設計 :
最優自動機
自動機性能 : 給定一個 自動機語言 , 那麼根據該語言可以設計出 不同的自動機 , 那麼這些自動機之間的性能肯定是不同的 , 有的自動機性能高 , 有的自動機性能低 ;
最優自動機 : 從上述根據 同一個語言 設計出的多個自動機中 , 肯定能選出一個最優自動機 ;
自動機設計算法
自動機生成算法 : 自動機是可以使用算法生成的 , 存在一種算法 , 用該算法生成一個 能識別給定語言的 最優的自動機 ;
確定性 與 非確定性
1 . 確定性 思想 : 自然界一定是確定性的 , 給定一個輸入 , 必定對應唯一一個輸出 ; 如果出現非確定的輸出 , 是由於人的認知有限 , 沒有發現其中的未知變量 ; 隨着科學認知的發展 , 這些不確定性會消除 ; 以牛頓力學爲代表 ;
2 . 非確定性 思想 ( 主流 ) : 自然界是非確定的 , 一個輸入對應 不確定 個輸出 ; 以量子力學爲代表 ;
確定性有窮自動機 的 確定性 , 就是上述確定性思想的應用 ;
下面要將 非確定性思想應用到 自動機設計中 ;
自動機非確定性示例
上述 自動機 是一個非確定性自動機 , 非確定性主要體現在以下幾個方面 ;
個字符輸入對應 個輸出 :
當前狀態爲 時 , 讀取字符 時 , 其後繼狀態有兩個 , 既可以跳轉到 本身狀態 , 又可以跳轉到 狀態 ;
這個操作是一個非確定性的操作 , 讀取一個字符 , 卻對應了兩個後繼狀態 ;
個字符輸入對應 個輸出 :
當前狀態爲 時 , 讀取字符 或者 空字符串 時 , 就可以跳轉到 狀態 ;
表示空字符串 , 其類似於自然數中的 的概念 ;
個字符輸入對應 個輸出 :
當前狀態爲 時 , 爲其輸入字符 , 其沒有後繼狀態 ;
這個操作也是一個非確定性操作 , 讀取一個字符 , 沒有後繼狀態 ;
自動機中的不確定性 : 不確定性自動機中 , 允許 空字符 或 個字符 輸入 , 對應 個 或 多個輸出 ;