第三十四章-有限狀態機
很快,第二場比賽開始了。
主持人簡單的描述了一下規則,大概的意思就是,三十分鐘討論,需要交上一份簡單的文字論述。之後每組進行十分鐘的答疑,最後由評委評分。
接著主持人就公布了題目:
薯片工廠有著一套固定的流程生產薯片:煮熟,切片,清洗,油炸,瀝油,加配料,包裝等
同時,在這個過程中,有可能會出現某部分故障,或者機器重啟等情況。
現在工廠需要設計一個程序來自動化製作薯片。如何編碼能夠讓系統更加穩定?(忽略具體執行的部分,如薯片切片怎麼切的實現)
各個地區的選手拿到題目,面面相覷。他們很多都學習了大量的演算法,卻沒有多少應用的機會,在這方面並沒有多大的經驗。
唯獨瀚安地區的選手,得意的笑了起來。原來,他們都是六年級的學生,他們特訓的時候,老師教他們做了一個簡單的請假系統。
他們想起來,請假的審批流程,好像跟這個有著一些同樣的東西,於是他們一起討論了起來。
而在其他隊伍,包括瀚騰他們,都有些思路缺缺,正在苦思冥想。不過他們都是腦袋靈活的人,不一會就有了一些思路。
在趙鈞霆他們隊伍這邊,黎芭拉和黎昊也是一籌莫展,轉頭齊刷刷的看著趙鈞霆。
趙鈞霆神秘地一笑:「各位,我有幸看過一本書,對於這個問題,我覺得我們還是能夠,秒殺他們!」
「真的嗎?你給我們說說你是怎麼想的,肯定能贏得過他們的想法?」,黎芭拉有些不信,一年級的小朋友不可能是全能的吧~
「我相信你,趙鈞霆,你給我們說說唄?」,黎昊卻是非常相信他,他已經將鈞霆王看作偶像一般的存在了。
「很簡單啦,我邊寫出來邊跟你們講。」
很快,三十分鐘就到了,瀚安區的選手信心滿滿的交上了答卷,瀚陽和瀚城的同學卻有著忐忑。趙鈞霆也是一臉淡定,看著黎昊把卷子交了上去。
各位評委互相傳閱,眉頭微皺。當那位拿到趙鈞霆他們卷子的評委仔細看完這份答案后,猛的起身,站到其他人跟前,招呼他們一起看。
他們討論了一圈,回到座位上坐定。
一個帶著老款眼鏡,眼角有些皺紋,頭髮稀疏的評委發話了。
「各位同學的回答,都很不錯,但是略微有著稚嫩了。」,他停頓了一下,拿起一張答卷,站了起來:「唯有這一份卷子,我覺得是滿分,是標準答案,有了它,我們不需要再進行接下來的環節。為了防止別人說我們評委組是不是收了好處,搞黑幕。我將這份答卷拿出來,與各位一起品鑒。」
場下一片嘩然,瀚安區的同學驚喜不定:難道,是我們的卷子?可是我們雖然寫的還可以,卻沒有到這種地步吧!
但是他們還是有些竊喜,覺得還是他們贏的概率比較高。除了他們,還能有誰?
一位西裝革履,內襯格子襯衫的老師從那位老老師手中接過答卷,雙手一揮。一個程序顯現,試卷被掃描了一下,接著虛空中化處一堆數據流,往熒幕而去。
有限狀態機的應用
有一種名為有限狀態機的設計方法,可以將事件很好的概括出來。
題目描述的流程,具有有限的若干個狀態,也具有有限的若干個事件。
首先,我們必須有且僅有一個開始的狀態,我們可以對應到啟動一個薯片自動製作機器。
其次,每一道薯片的製作工序,都能夠歸結為,由一個狀態,因為某些事件跳轉到了下一個事件。而假設事件正常,它就會進入下一道工序。事件是異常的,它就會進入一個錯誤的狀態,不再進行流轉。
假設這個過程工具被關閉了,那麼我們只需要在重啟時恢復狀態即可。
要注意的是,這裡的狀態流轉是一種調度程序,它只對一批薯片進行控制,而不是控制機器。工廠的生產機器可以用另一個程序去分配資源。
在答卷的下方,也簡單的畫了一個流程圖。加了一個腳註:只要能夠畫出流程圖,就能實現一個狀態機。
眾人非常震驚,雖然趙鈞霆已經寫得非常淺顯,但是還是非常的晦澀難懂。比起其他人寫的,類似給每個流程標註一個數字之類的寫法,他這個顯然是非常成熟的。
這個狀態機的理論,其實是一個非常有名的設計理念。但是一般對於小學生而言,很少會聽到這類東西。只有到大學,才有人能從圖書館,或者其他地方學習到。
毫無疑問,這場比賽又是趙鈞霆他們的勝利。本來評委會視情況,將固定的十分獎勵給表現良好的隊伍,但是現在這種情況,他們做出了一個決定,瀚南縣,再積十分!