【賽局理論在狀態機中的運用,從高度視角來觀測全局】


狀態機,是個非常強而有力的數學模型,可應用在很多場合,程式方面,機械設計,金融等。但是他很難去做描述跟說明,而且往往也脫離不了數學表達,於是乎,這邊從比較簡單的情境去做說明,我們會先走過定義,接著從簡單的情境到複雜的情境來帶領各位看狀態機的應用。
我們先簡單定義一個狀態機,首先把幾個狀態寫下來,接著就可以把這些狀態包覆起來,再來嘗試描述一大堆事件,而這些事件在任意時間中,有 95% 都會落在你所描述的狀態當中,且能夠自我保持(self-contain)。好比在地板上畫個圓,之後把數個小紙球往天空一灑,接著看紙球的分布狀況,紙球為我們所描述的事件,落在圓圈外的會是 Exception (例外事件),把這些例外事件也包覆在狀態機中的話,就可以是完整狀態機。
我們先從情境比較簡單的例子開始著手:電燈。電燈會有開、關兩個狀態,我將電燈關掉就是從「開的狀態」接收到事件(關燈),變成「關的狀態」,反之亦然,那麼會不會有從「開的狀態」接收某事件後,依然維持在「開的狀態」呢?當然會有,當我們進行開燈動作之後,反之亦然。「如圖一所示」
至此我們其實對於狀態機有個大略模糊的概念,但是過程其實滿痛苦的,讓我們用有效的方式來重新審視這一切,首先畫出井字格,並在上方與左方空格各填入屬性(properties),填入開、關,那下面的空格就是來思考看看這些狀態之間的轉換,之間的事件是否存在於合理,例如說開可以到開嗎?可以,我們寫下event1,開可以到關嗎?可以,我們寫下event2,以此類推把各個狀態之間的轉換寫完,「如圖二所示」,如此一來,就是用很高的視角在觀測全局的樣貌。
讓我們稍微整理一下現在的資訊,我們剛剛找出開、關兩個屬性,與之間的事件,之間的動作,用另一個圖案來表達剛剛的資訊。
「如圖三所示」
我的老天爺呀!這不就是 class diagram 的基本款 嗎?我們剛剛定義了名為電燈的 class ,並同時說明這個 class 是什麼跟可以做什麼。
(題外話,因為開關燈之間的轉換其實不太容易被打斷或干擾,畢竟時間短暫,所以這個轉換稱為 statement,但是換成核彈的啟動流程呢?是就很多打斷的機會了吧,例如說飛彈點火失敗,發射站按錯密碼等,這個可以被打斷,我們稱為 expression)
>
希望上面的例子有稍微讓你了解狀態機是什麼。當然狀態機不只可以應用在程式上面,日常的知識也可以用狀態機做描述,我用下面的例子做說明。
<
例如說高麗菜一顆220元,這時候你會遲疑一下,是因為品種、天氣、生產量⋯什麼來使其有如此昂貴的價格?因為你夠聰明,有足夠的生活經驗來讓你 map(映射)這個價格的合理性,生活經驗讓你知道說這個價格,這個定位是不是可以讓別人相信的,例如說梅雨季與颱風的關係,使高麗菜的價格在台灣通常比較高,可以信服時,你就多少知道這個定位的範圍到哪裡,這個範圍的邊界或多或少有些模糊,但我們可以先定義成 exception,如此一來我們就得到了我們的狀態機,名為「菜價」的狀態機。
>
反思一下,狀態機裡面可以有狀態機嗎?當然是可以,我們可以定義出「菜價」、「天氣」、「家庭人口數」這幾個狀態機,接著把三個狀態機一次包覆起來,並命為「市場媽媽的買菜慾望」,在這個時候,我們突然了解到,狀態機間是存在關係的,在模糊的範圍找到定位之後,並找到其他狀態機連結,形成關係,這時候,狀態機就會有某個角色的存在。當我們再把其他狀態機納入考慮之後,就是生態系的呈現,一個生態系內有很多狀態機,狀態機裡面也可以包含狀態機,這代表生態系也可以跟其他生態系有關係。
希望至此,身為讀者的你可以稍微了解到狀態機在各個事情的應用。

留言

這個網誌中的熱門文章

Raspberry pi 樹莓派系列 :安裝瀏覽器

『如何說出好故事|故事架構介紹|輕鬆做出大師級故事架構』

『目標管理|SMART原則|最有效的目標管理原則』