設計一個用於處理二進位制輸入序列的 Moore 機。
問題
設計一個 Moore 機,用於處理二進位制輸入序列。如果序列包含子串 "101",則輸出 A;如果包含子串 "110",則輸出 B;否則輸出 C。
解答
為了設計這樣的機器,我們將檢查兩個條件:"101" 和 "110"。如果檢測到 "101",則輸出 A;如果檢測到 "110",則輸出 B;對於其他字串,輸出 C。
Moore 機有 6 個元組
(Q, q0, Σ, O, δ, λ)
其中:
- Q:有限狀態集
- q0:初始狀態
- Σ:有限輸入符號集
- O:輸出字母表
- δ:狀態轉移函式,Q × Σ → Q
- λ:輸出函式,Q → O
部分狀態圖如下所示:

示例 1
現在,我們將為每個狀態插入 0 和 1 的可能性。
因此,Moore 機如下所示:

解釋
- **步驟 1** - q0 是起始狀態,輸入 '0' 轉到 q0,輸入 '1' 轉到 q1,輸出 C。
- **步驟 2** - q1,輸入 '0' 轉到 q2,輸入 '1' 轉到 q4,輸出 C。
- **步驟 3** - q2,輸入 '0' 轉到 q0,輸入 '1' 轉到 q3,輸出 C。
- **步驟 4** - q3,輸入 '0' 轉到 q0,輸入 '1' 轉到 q4,輸出 A。
- **步驟 5** - q4,輸入 '0' 轉到 q5,輸入 '1' 轉到 q4,輸出 C。
- **步驟 6** - q5,輸入 '1' 轉到 q3,輸出 B。
示例 2
構建一個 Moore 機,對於輸入字串 "bababbb",輸出為 "01100100"。
輸入字母表 - Σ = {a, b}
輸出字母表 - Γ = {0, 1}
狀態 - q0, q1, q2, q3
狀態轉移表
狀態轉移表如下所示:
| 當前狀態 | a | b | 輸出 |
|---|---|---|---|
| q0 | q3 | q2 | 0 |
| q1 | q1 | q0 | 0 |
| q2 | q2 | q3 | 1 |
| q3 | q0 | q1 | 0 |
狀態轉移圖
狀態轉移圖如下所示:

廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP