Computing--状态机
Computing--狀態機和圖靈機
- Computing--狀態機
- 狀態機(State Machine)
- 實例1
- 實例2
- 實例3
Computing–狀態機
第一次寫博客,不足之處請見諒,分享一下自己之前學信息基礎的時候做過的講義,主要是介紹Computing這塊的State Machine。大家有什么好的建議可以在評論區給我留言一下,謝謝。
狀態機(State Machine)
State Machine 由三部分組成:Inputs,Outputs,StateTransitions。
State Machine 根據當前狀態和輸入決定輸出和下一次的狀態。所以狀態機就可以看做是具有計算能力的一種工具。
實例1
輸入為0 時表示Stay(狀態不變),輸入為1 時表示Change(狀態改變)?!?0 或/1”表示狀態機的輸出.
根據狀態轉換圖得到狀態轉換表
| Outputs | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 0 |
| States | a | a | b | b | b | a | b | b | b | b |
從狀態轉換表可以看出這個狀態機的功能就是: 當輸入奇數個1 時輸出為1,當輸入偶數個1 時輸出為0。更進一步說這個狀態機實現XOR。
那么如何Relay Circuits去實現這個狀態機呢?
紅色的線代表 1 ,藍色的線代表 0。所以當Inputs 為奇數個1 時電路連通,而Inputs為偶數個1 時電路不連通。
實際上這種思維方式就很類似于數電當中的時序邏輯電路的分析。因此當我們拿到狀態機的狀態轉換圖或者狀態轉換表的時候,我們需要找到輸入-輸出關系(Inputs-Outputs Relationship),從而分析出狀態機的計算功能。同樣當我們需要設計實現布爾函數的時候,也可以先畫出狀態轉換圖或狀態轉換表從而去設計一個狀態機。
實例2
根據狀態機的狀態轉換圖,判斷輸入序列(11100000100和100000101001100)后是否能輸出1?
實際上要想這個狀態機輸入序列后輸出1,從狀態轉換圖來看只有一條途徑能夠輸出1,那就是序列中必須存在能使狀態機從D狀態返回到C狀態的小段子序列。那這個小段子序列就是“0101”。因此可見序列11100000100不可以使狀態機輸出1,而序列100000101001100則可以。
實例3
實例1的升級變式。當初始狀態在a時,輸入什么可以達到其他的狀態?
1:如果輸入為偶數個1時,則會到達狀態a或者c
2:如果輸入為偶數個0時,則會到達狀態a或者b
3:如果輸入為奇數個1時,則會到達狀態b或者d
4:如果輸入為奇數個0時,則會到達狀態c或者d
因此從狀態a要到達b,則輸入必須為偶數個0和奇數個1. 同理,從狀態a要到達c,則輸入必須為偶數個1和奇數個0;從狀態a到達d,則輸入必須為奇數個1和奇數個0.
好啦,就寫到這里了,希望對大家理解狀態機有所幫助。
總結
以上是生活随笔為你收集整理的Computing--状态机的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 天涯社区服务器位置,天涯到底怎么了,哪份
- 下一篇: 信息基础---LDPCcodes随机矩阵