【计算理论】计算理论总结 ( 自动机设计 ) ★★
文章目錄
- 一、自動(dòng)機(jī)設(shè)計(jì)
- 二、自動(dòng)機(jī)設(shè)計(jì) 1
- 三、自動(dòng)機(jī)設(shè)計(jì) 2
- 四、自動(dòng)機(jī)設(shè)計(jì) 3
- 五、自動(dòng)機(jī)設(shè)計(jì)技巧
一、自動(dòng)機(jī)設(shè)計(jì)
設(shè)計(jì)自動(dòng)機(jī) : 之前是根據(jù)給定的自動(dòng)機(jī) , 找到自動(dòng)機(jī)所能識(shí)別的語言 ; 現(xiàn)在是 給定語言 , 設(shè)計(jì)出能識(shí)別該語言的自動(dòng)機(jī) ;
自動(dòng)機(jī)設(shè)計(jì)需求 : 設(shè)計(jì)一個(gè)又窮自動(dòng)機(jī) MMM , 滿足以下的給定的語言要求 ; 即語言已經(jīng)存在 , 求自動(dòng)機(jī) ;
1 . 自動(dòng)機(jī)語言字符集 : Σ={0,1}\Sigma = \{0, 1\}Σ={0,1} , 字符集是 000 和 111 組成 , 該自動(dòng)機(jī)語言由 0,10 , 10,1 組成 , 如 010101010101 , 100111100111100111 等 ;
2 . 自動(dòng)機(jī)語言描述 :
① 自動(dòng)機(jī)語言集合 : 自動(dòng)機(jī) MMM 所能接受的字符串都放在集合 AAA 中 , 集合 AAA 就是該自動(dòng)機(jī)語言 ;
② 自動(dòng)機(jī)語言要求 : 自動(dòng)機(jī) MMM 的語言 AAA 集合 中的字符串中都有 奇數(shù) 個(gè) 111 ;
3 . 接受狀態(tài) 與 非接受狀態(tài) : 根據(jù)上述自動(dòng)機(jī)語言要求 , 定義接受狀態(tài)和非接受狀態(tài) ;
① 接受狀態(tài) : 如果當(dāng)前輸入的字符串中 , 含有奇數(shù)個(gè) 111 那么當(dāng)前狀態(tài)是 接受狀態(tài) ;
② 非接受狀態(tài) : 如果當(dāng)前輸入字符串中 , 有偶數(shù)個(gè) 111 , 那么當(dāng)前的狀態(tài)就是 非接受狀態(tài) ;
參考博客 :
- 【計(jì)算理論】確定性有窮自動(dòng)機(jī) ( 自動(dòng)機(jī)組成 | 自動(dòng)機(jī)語言 | 自動(dòng)機(jī)等價(jià) )
- 【計(jì)算理論】自動(dòng)機(jī)設(shè)計(jì) ( 設(shè)計(jì)自動(dòng)機(jī) | 確定性自動(dòng)機(jī)設(shè)計(jì)示例 | 確定性與非確定性 | 自動(dòng)機(jī)中的不確定性 )
二、自動(dòng)機(jī)設(shè)計(jì) 1
設(shè)計(jì) L={w∣w以1開始,以0結(jié)束}\rm L = \{ w | w 以 1 開始 , 以 0 結(jié)束 \}L={w∣w以1開始,以0結(jié)束} 語言對應(yīng)的 確定性有限自動(dòng)機(jī) ; 字母表為 {0,1}\rm \{ 0, 1 \}{0,1} ;
1 . 開始狀態(tài) : 首先要考慮 第一個(gè)狀態(tài) q1\rm q_1q1? 是 接受狀態(tài) 還是非接受狀態(tài) ,
如果是 接受狀態(tài) , 使用雙圈表示 ,
如果是 非接受狀態(tài) , 使用單圈表示 ;
第一個(gè)狀態(tài)時(shí) , 還沒有讀取字符 , 不符合 L\rm LL 語言要求 , 使用單圈表示 ;
2 . 開始狀態(tài) q1\rm q_1q1? 狀態(tài)指令 : 讀取的第一個(gè)字符必須是 111 , 讀取 111 字符 后進(jìn)入 q2\rm q_2q2? 狀態(tài) ;
如果讀取 000 字符 , 則不符合 L\rm LL 語言要求 , 卡在開始狀態(tài) , 自動(dòng)機(jī)停機(jī) ;
3 . q2\rm q_2q2? 狀態(tài)指令 : 可以讀取 0,10, 10,1 字符 ,
讀取 000 字符即進(jìn)入 q3\rm q_3q3? 接受狀態(tài) ,
讀取 111 字符后回到 q2\rm q_2q2? 非接受狀態(tài) ;
4 . q3\rm q_3q3? 狀態(tài)指令 : 可以讀取 0,10, 10,1 字符 ,
讀取 000 字符還是進(jìn)入本 q3\rm q_3q3? 接受狀態(tài) ,
讀取 111 字符后回到 q2\rm q_2q2? 非接受狀態(tài) ;
自動(dòng)機(jī)設(shè)計(jì)如下 :
三、自動(dòng)機(jī)設(shè)計(jì) 2
設(shè)計(jì) L={w∣w至少含有3個(gè)1}\rm L = \{ w | w 至少含有 3 個(gè) 1 \}L={w∣w至少含有3個(gè)1} 語言對應(yīng)的 確定性有限自動(dòng)機(jī) ; 字母表為 {0,1}\rm \{ 0, 1 \}{0,1} ;
1 . 開始狀態(tài) : 首先要考慮 第一個(gè)狀態(tài) q1\rm q_1q1? 是 接受狀態(tài) 還是非接受狀態(tài) ,
如果是 接受狀態(tài) , 使用雙圈表示 ,
如果是 非接受狀態(tài) , 使用單圈表示 ;
第一個(gè)狀態(tài)時(shí) , 還沒有讀取字符 , 肯定沒有 333 個(gè) 111 , 不符合 L\rm LL 語言要求 , 使用單圈表示 ;
2 . 開始狀態(tài) q1\rm q_1q1? 狀態(tài)指令 :
如果讀取 000 字符 , 原地不動(dòng) , 保持 q1\rm q_1q1? 狀態(tài)不變 ;
如果讀取 111 字符 , 則跳轉(zhuǎn)到 q2\rm q_2q2? 狀態(tài) ;
3 . q2\rm q_2q2? 狀態(tài)指令 :
如果讀取 000 字符 , 原地不動(dòng) , 保持 q2\rm q_2q2? 狀態(tài)不變 ;
如果讀取 111 字符 , 則跳轉(zhuǎn)到 q3\rm q_3q3? 狀態(tài) ;
4 . q3\rm q_3q3? 狀態(tài)指令 :
如果讀取 000 字符 , 原地不動(dòng) , 保持 q3\rm q_3q3? 狀態(tài)不變 ;
如果讀取 111 字符 , 則跳轉(zhuǎn)到 q4\rm q_4q4? 狀態(tài) ;
5 . q4\rm q_4q4? 狀態(tài)指令 : 截止到此處 , 前面已經(jīng)讀取了 333 個(gè) 111 字符 , 達(dá)到接受狀態(tài)標(biāo)準(zhǔn) ;
自動(dòng)機(jī)設(shè)計(jì)如下 :
四、自動(dòng)機(jī)設(shè)計(jì) 3
設(shè)計(jì) L={w∣w含有子串0101}\rm L = \{ w | w 含有子串 0101 \}L={w∣w含有子串0101} 語言對應(yīng)的 確定性有限自動(dòng)機(jī) ; 字母表為 {0,1}\rm \{ 0, 1 \}{0,1} ;
分析 : L\rm LL 語言中每個(gè)字符串的形式為 x0101y\rm x0101yx0101y , 其中 x,y\rm x, yx,y 可以是空字符 , 也可以是若干個(gè)字符 ;
1 . 開始狀態(tài) : 首先要考慮 第一個(gè)狀態(tài) q1\rm q_1q1? 是 接受狀態(tài) 還是非接受狀態(tài) ,
如果是 接受狀態(tài) , 使用雙圈表示 ,
如果是 非接受狀態(tài) , 使用單圈表示 ;
第一個(gè)狀態(tài)時(shí) , 還沒有讀取字符 , 肯定沒有讀取到 010101010101 子串 , 不符合 L\rm LL 語言要求 , 使用單圈表示 ;
起始狀態(tài) q1\rm q_1q1?
讀取完第一個(gè) 子串 字符 000 后的狀態(tài) q2\rm q_2q2?
讀取完第二個(gè) 子串 字符 111 后的狀態(tài) q3\rm q_3q3?
讀取完第三個(gè) 子串 字符 000 后的狀態(tài) q4\rm q_4q4?
讀取完第四個(gè) 子串 字符 111 后的狀態(tài) q5\rm q_5q5?
2 . 開始狀態(tài) q1\rm q_1q1? 狀態(tài)指令 :
如果讀取 111 字符 , 不符合子串起始字符 000 , 原地不動(dòng) , 保持 q1\rm q_1q1? 狀態(tài)不變 ;
如果讀取 000 字符 , 則跳轉(zhuǎn)到 q2\rm q_2q2? 狀態(tài) ;
3 . q2\rm q_2q2? 狀態(tài)指令 :
如果讀取 000 字符 , 不符合子串第二個(gè)字符 111 , 但是這個(gè)字符有可能是 010101010101 子串第一個(gè)字符 , 保持 q2\rm q_2q2? 狀態(tài)不變 , 將該子串當(dāng)做第一個(gè)字符 ;
如果讀取 111 字符 , 則跳轉(zhuǎn)到 q3\rm q_3q3? 狀態(tài) ;
4 . q3\rm q_3q3? 狀態(tài)指令 :
如果讀取 111 字符 , 不符合子串第三個(gè)字符 000 , 直接跳轉(zhuǎn)到起始狀態(tài) q1\rm q_1q1? , 繼續(xù)讀取后續(xù)字符 ;
如果讀取 000 字符 , 則跳轉(zhuǎn)到 q4\rm q_4q4? 狀態(tài) ;
5 . q4\rm q_4q4? 狀態(tài)指令 :
如果讀取 000 字符 , 不符合子串第四個(gè)字符 111 , 可以當(dāng)做第一個(gè)字符 , 這里跳轉(zhuǎn)到 q2\rm q_2q2? 狀態(tài) ;
如果讀取 111 字符 , 則跳轉(zhuǎn)到 q5\rm q_5q5? 狀態(tài) ;
6. q5\rm q_5q5? 狀態(tài)指令 : 此時(shí)已經(jīng)讀取完 010101010101 子串 , 達(dá)到接受狀態(tài) ; 不管后續(xù)讀取什么字符 , 都保持不變即可 ;
如果讀取 000 字符 , 保持本狀態(tài)不變 ;
如果讀取 111 字符 , 保持本狀態(tài)不變 ;
自動(dòng)機(jī)設(shè)計(jì)如下 : 下圖中從左到右就是 q1,q2,q3,q4,q5\rm q_1 , q_2, q_3, q_4, q_5q1?,q2?,q3?,q4?,q5? 五個(gè)狀態(tài) ;
五、自動(dòng)機(jī)設(shè)計(jì)技巧
可以先將主干設(shè)計(jì)出來 , 然后再考慮每個(gè)狀態(tài)的其它分支字符 , 只要合理即可 ;
設(shè)計(jì)出的自動(dòng)機(jī)可能不是最右的 ;
總結(jié)
以上是生活随笔為你收集整理的【计算理论】计算理论总结 ( 自动机设计 ) ★★的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【计算理论】计算理论总结 ( P 、NP
- 下一篇: 【计算理论】计算理论总结 ( 非确定性有