【計算理論】自動機 示例 ( 自動機示例 | 自動機表示方式 | 自動機計算流程簡介 )



I . 自動機 簡單 示例 ( 單向自動門 )



1 . 單向自動門 現實狀況描述 : 可通過的單向自動門 ; 當站在門前時 , 自動門開 , 確保人走過後 , 再關閉 ; 注意 : 這個門只能進 , 不能出 ;


2 . 自動門有兩個狀態 :


① 打開 : 如下圖所示 ;

在這裏插入圖片描述

② 關閉 : 如下圖所示 ;

在這裏插入圖片描述


3 . 人的位置有四個狀態 , 以及每個 人的狀態對應的 門的狀態 :


① 門前有人門後無人 : 一個人走到自動門前 , 門前有人 , 門後無人 ;

在這裏插入圖片描述

② 門前無人門後有人 : 一個人從自動門走過 , 走到門後面 , 此時處於門前無人 , 門後有人 ;

在這裏插入圖片描述

③ 門前門後都沒人 : 一個人徹底走過自動門 , 自動門前後沒人 ;

在這裏插入圖片描述

④ 門前門後都有人 : 兩個人前後腳過自動門 , 一個人走到門後 , 另一個人剛走到門前 , 造成該狀態 ;

在這裏插入圖片描述

4 . 自動門示意圖 : 其中有一些邏輯是不存在的 , 如 單向自動門當前狀態是打開的 , 不可能出現 要輸入 “門前有人 , 門後無人” 狀態的情況 , 此時肯定門是關閉的 , 才能輸入 “門前有人 , 門後無人” 狀態 , 否則根本就不符合常理 , 這裏出現不符合常理的邏輯 , 其 狀態不變 即可 ;

在這裏插入圖片描述

① 門前有人 ( 門後無人 ) : 表示有人要通過 , 當前門處於關閉狀態 , 自動門 從 關閉 狀態 變成 打開 狀態 ;

② 門後有人 ( 門前無人 ) : 表示有人剛進去 , 自動門一直是打開狀態 ;

③ 門前後都沒人: 開始是 打開狀態 , 之後人走過後 , 關閉 自動門 ;

④ 門前後都有人 : 開始是打開狀態 , 後面馬上又來一個人 , 此時仍然保持 打開狀態 ;


5 . 自動機 表格方式: 紅色的是有效的狀態轉換 , 藍色的是不符合單向自動門常理的狀態轉換 ;


門前後都沒人 門前有人 ( 門後無人 ) 門後有人 ( 門前無人 ) 門前後都有人
當前是關閉狀態 關閉 打開 關閉 關閉
當前是打開狀態 關閉 打開 打開 打開

① 第 11 行第 11 列 : 自動門 “當前是關閉狀態” , 輸入一個人的 “門前後都沒人” 狀態 , 結果是自動門切換成 “關閉” 狀態 ;

② 第 11 行第 22 列 : 自動門 “當前是關閉狀態” , 輸入一個人的 “門前有人 ( 門後無人 )” 狀態 , 說明來人了 , 馬上開門 , 結果是自動門切換成 “打開” 狀態 ;


6 . 自動機引入 : 自動門的所有的狀態轉換 , 當前的 自動門 狀態 , 輸入一個人的狀態 , 自動門就會轉爲另外一個狀態 , 這就是一個自動機 ;



II . 簡單自動機示例 及 描述方式 ( 二進制數據處理 自動機 )



1 . 自動機由來 :


① 初始簡單模型 : 解決一個問題時 , 先搭建一個簡單計算模型 , 自動機 , 即 最簡單的模型就是自動機 ;

② 模型擴張 : 逐步擴張簡單計算模型 , 提高其計算能力 , 將計算能力擴展到極限 , 就是圖靈機 ;


2 . 這個自動機是用於處理二進制數字的 :


在這裏插入圖片描述


① 狀態含義 : A,B,CA,B,C 三個狀態 , 分別 類似於 上述 自動門示例的 門開狀態 , 門關狀態 , 這些狀態在 圖靈機中 主要反映 神經中樞 所處的狀態 ;

② 箭頭的含義 : 自動機當前所處的狀態 AA , 輸入一個狀態 11 後 , 變成另外一個狀態 BB , 那麼繪製一個箭頭 , 從 AA 指向 BB , 將輸入的狀態標識在箭頭上 ;

③ 箭頭本質 : 箭頭的本質相當於箭頭的一條指令 ;

④ Start 開始狀態 : Start 表示自動機的開始計算的起始位置 , 相當於 Main 函數入口 ;


3 . 狀態表示 : 有些狀態如 AABB 畫了兩個圈 , 有些狀態 如 CC 只畫了一個圈 ;


① 接收狀態 : 22 個圈表示該狀態是接收狀態 ;

② 非接受狀態 : 如果只有 11 個圈 , 表示該狀態是非接收狀態 ;



III . 簡單自動機示例 及 運行 ( 二進制數據處理 自動機 )



在這裏插入圖片描述

1 . 自動機功能 : 將字符串 “0101” 輸入到 自動機 中進行計算 ;


2 . 自動機啓動 : Start 開始後 , 自動機的狀態 是 AA 狀態 ;

自動機開始 -> 自動機 AA 狀態 ;


3 . 輸入字符 00 : 自動機 AA 狀態下 , 輸入 00 字符 , 仍然保持 AA 狀態不變 ;

自動機開始 -> 自動機 AA 狀態 -> 輸入 00 字符 -> 自動機 AA 狀態 ;


4 . 輸入字符 11 : 自動機 AA 狀態下 , 輸入 11 字符 , 自動機轉爲 BB 狀態 ;

自動機開始 -> 自動機 AA 狀態 -> 輸入 00 字符 -> 自動機 AA 狀態 -> 輸入 11 字符 -> 自動機 BB 狀態 ;


5 . 輸入字符 00 : 自動機 BB 狀態下 , 輸入 00 字符 , 自動機轉爲 AA 狀態 ;

自動機開始 -> 自動機 AA 狀態 -> 輸入 00 字符 -> 自動機 AA 狀態 -> 輸入 11 字符 -> 自動機 BB 狀態 -> 輸入 00 字符 -> 自動機 AA 狀態 ;


6 . 輸入字符 11 : 自動機 AA 狀態下 , 輸入 11 字符 , 自動機轉爲 BB 狀態 ;

自動機開始 -> 自動機 AA 狀態 -> 輸入 00 字符 -> 自動機 AA 狀態 -> 輸入 11 字符 -> 自動機 BB 狀態 -> 輸入 00 字符 -> 自動機 AA 狀態 -> 輸入 11 字符 -> 自動機 BB 狀態 ;


7 . 自動機 與 接收狀態 / 非接收狀態 : 字符串 01010101 四個字符都輸入到了自動機中 , 此時需要判定 計算完畢的時刻 自動機的當前狀態是否是 接收狀態 , 如果是接收狀態 , 說明自動機是可以接收 這個字符串的 , 否則就說明該自動機不接受該字符串 ;


8 . 接收狀態 與 非接收狀態 判定 : 雙圈是接收狀態 , 單圈是非接收狀態 , 此時自動機的狀態是 BB , 是雙圈狀態 , 是接收狀態 ;


9 . 本自動機示例總結 : 該自動機接收的 0101 字符串中 , 不能存在連續的兩個 11 , 否則該字符串就是不被自動機接收的 ;

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