状态空间表示
前言
本文隸屬于專欄《人工智能》,該專欄為筆者原創(chuàng),引用請注明來源,不足和錯誤之處請在評論區(qū)幫忙指出,謝謝!
本專欄目錄結(jié)構(gòu)和參考文獻請見人工智能
引子
人工智能的多個研究領(lǐng)域從求解現(xiàn)實問題的過程來看,都可抽象為一個“問題求解”過程,問題求解過程實際上就是一個搜索過程。
在搜索過程開始之前,必須先用某種方法或某幾種方法的混和來表示問題。
問題求解技術(shù)主要涉及兩個方面:
- 問題的表示
- 求解的方法
狀態(tài)空間表示法就是用來表示問題及其搜索過程的一種方法。
問題的狀態(tài)空間表示
狀態(tài)空間方法:基于解答空間的問題表示和求解方法,它是以狀態(tài)和算符為基礎(chǔ)來表示和求解問題的。
主要包括:
- 狀態(tài)
- 算符
- 狀態(tài)空間
典型的例子:下棋、迷宮、各種游戲等。
狀態(tài)( State )
狀態(tài)是問題求解過程中每一步問題狀況的數(shù)據(jù)結(jié)構(gòu),一般用一組數(shù)據(jù)表示:
式中每個元素為集合的分量,稱為狀態(tài)變量。
- 每一個分量給予確定的值時,得到一個具體的狀態(tài)。
- 任何一種類型的數(shù)據(jù)結(jié)構(gòu)都可以用來描述狀態(tài),只要它有利于問題求解。
- 在程序中用字符、數(shù)字、記錄、數(shù)組、結(jié)構(gòu)、對象等表示狀態(tài)。
算符( Operator )
當(dāng)對一個問題狀態(tài)使用某個可用操作時,它將引起該狀態(tài)中某些分量值的變化,從而使問題從一個具體狀態(tài)變?yōu)榱硪粋€具體狀態(tài)。
- 算符可理解為狀態(tài)集合上的一個函數(shù),它描述了狀態(tài)之間的關(guān)系。
- 算符可以是某種操作、規(guī)則、行為、變換、函數(shù)、算子、過程等。
- 算符也稱為操作,問題的狀態(tài)也只能經(jīng)定義在其上的這種操作而改變。
問題的狀態(tài)空間( Statespace )
用來描述一個問題的全部狀態(tài)以及這些狀態(tài)之間的相互關(guān)系。
狀態(tài)空間常用一個三元組表示:
( S, F, G )- S :為問題的所有初始狀態(tài)的集合
- F :算符的集合
- G :為目標狀態(tài)的集合
狀態(tài)空間圖
狀態(tài)空間可用有向圖來描述,圖的節(jié)點表示問題的狀態(tài),圖的弧表示狀態(tài)之間的關(guān)系。
初始狀態(tài)對應(yīng)于實際問題的已知信息,是圖中的根結(jié)點。
在問題的狀態(tài)空間描述中,尋找從一種狀態(tài)轉(zhuǎn)換為另一種狀態(tài)的某個操作算子序列等價于在一個圖中尋找某一路徑。
如下圖所示為用有向圖描述的狀態(tài)空間。
該圖表示對狀態(tài) S0 允許使用算符 O1 , O2 及 O3 ,分別使 S0 轉(zhuǎn)換為 S1 , S2 及 S3 。
這樣一步步利用操作算子轉(zhuǎn)換下去,如 S10 ∈ G ,則 O2 , O6 , O10 就是一個解。
實踐-八數(shù)碼問題
在 3 × 3 的棋盤,擺有八個棋子,每個棋子上標有 1 至 8 的某一數(shù)字。 棋盤上還有一個空格,與空格相鄰的棋子可以移到空格中。
如何將棋盤從某一初始狀態(tài)變成最后的目標狀態(tài)?
八數(shù)碼問題的狀態(tài)
| X8 | X0 | X4 |
| X7 | X6 | X5 |
用向量 S =( X0, X1, X2, X3, X4, X5, X6, X7, X8 ) 表示狀態(tài) Xi 為變量, Xi 的值就是方格 Xi 內(nèi)的數(shù)字,取值為{ 0, 1, 2 … 8 },其中 0 表示空格。
于是,向量 S 就是該問題的狀態(tài)表達式。
則上圖中的狀態(tài)變化為:
- 初始狀態(tài): S0=(028345671)
- 目標狀態(tài): Sg=(012345678)
八數(shù)碼問題的算符
制定操作算符集:
- 直觀方法一為每個棋牌制定一套可能的走步:左、上、右、下四種移動。這樣就需 32 個操作算子。
- 簡易方法一僅為空格制定這 4 種走步,因為只有緊靠空格的棋牌才能移動。空格移動的唯一約束是不能移出棋盤。
八數(shù)碼問題的狀態(tài)空間圖
- 從初始棋局開始,試探由每一合法走步得到的各種新棋局,然后再走一步而得到的下一組棋局。這樣繼續(xù)下去,直至達到目標棋局為止。
- 把初始狀態(tài)可達到的各狀態(tài)所組成的空間設(shè)想為一幅由各種狀態(tài)對應(yīng)的節(jié)點組成的圖。 這種圖稱為狀態(tài)空間圖。
- 圖中每個節(jié)點是它所代表的棋局。首先把適用的算符用于初始狀態(tài),以產(chǎn)生新的狀態(tài);算符可以看成狀態(tài)空間圖的邊。
- 狀態(tài)空間的圖示形式稱為狀態(tài)空間圖(有向圖)。 其中圖的節(jié)點表示狀態(tài),圖的邊表示算符問題求解過程就是尋求圖的某一路徑的問題,實際上是一個搜索過程。
比如我們從下面這個初始棋局開始:
繪制的八數(shù)碼問題的狀態(tài)空間圖(部分)如下所示:
總結(jié)
- 上一篇: alitum designer 的PCB
- 下一篇: oracle11g安装程序闪退,win1