回覆列表
  • 1 # dadazhu2

    . 搜尋

    搜尋(Search),設法在龐大狀態空間圖中找到目標。

    主要分為兩類性質的搜尋:

    基本搜尋,是一種沒有任何經驗和知識起作用的、由某種規則所確定的非智慧性的搜尋;

    啟發式搜尋(Heuristic Search):其特點在於是一種有準備的、追求效率而有的放矢的智慧搜尋,它要求依據某種知識及資訊的指導,透過逐一狀態比較而找到符合規定條件的目標狀態解。

    2. 問題的狀態空間圖搜尋

    問題的狀態空間可用有向圖來表達,又常稱其為狀態樹(State Tree)。圖中,節點Sk表示狀態,狀態之間的連線採用有向弧(Arc),弧上標以運算元OK來表示狀態之間的轉換關係。

    圖1 問題求解的狀態樹表示

    用狀態空間法搜尋求解問題:

    首先要把待求解的問題表示為狀態空間圖;

    把問題的解表示為目標節點Sg。

    求解就是要找到從根節點S0到達目標節點Sg的搜尋路徑。

    狀態空間圖在計算機中有兩種儲存方式:一種是圖的顯式儲存,另一種是圖的隱式儲存。

    3. 狀態空間表示法

    狀態空間

    狀態,描述某一類事物在不同時刻所處於的資訊狀況

    操作,描述狀態之間的關係

    問題的狀態空間可用一個三元序組來表示:

    :問題的全部初始狀態的集合

    :操作的集合

    :目標狀態的集合

    利用狀態空間圖求解的具體思路和步驟:

    (1)設定狀態變數及確定值域;

    (2)確定狀態組,分別列出初始狀態集和目標狀態集;

    (3)定義並確定操作集;

    (4)估計全部狀態空間數,並儘可能列出全部狀態空間或予以描述之;

    (5)當狀態數量不是很大時,按問題的有序元組畫出狀態空間圖,依照狀態空間圖搜尋求解。

    傳教士和野人問題(The Missionaries and Cannibals Problem)

    在河的左岸有三個傳教士、一條船和三個野人,傳教士們想用這條船將所有的成員都運過河去,但是受到以下條件的限制:

    ① 教士和野人都會划船,但船一次最多隻能裝運兩個;

    ② ②在任何岸邊野人數目都不得超過傳教士,否則傳教士就會遭遇危險:被野人攻擊甚至被吃掉。

    此外,假定野人會服從任何一種過河安排,試規劃出一個確保全部成員安全過河的計劃。

    (1)設定狀態變數及確定值域。

    為了建立這個問題的狀態空間,設左岸傳教士數為m,則

    m ={0,1,2,3};

    對應右岸的傳教士數為3-m; 左岸的野人數為c,則有

    c ={0,1,2,3};

    對應右岸野人數為3-c;左岸船數為b,故又有b={0,1},右岸的船數為1-b.

    (2)確定狀態組,分別列出初始狀態集和目標狀態集。

    問題的狀態可以用一個三元陣列來描述,以左岸的狀態來標記,即

    Sk =(m,c,b),

    右岸的狀態可以不必標出。

    初始狀態一個: S0 =(3,3,1),初始狀態表示全部成員在河的左岸;

    目標狀態也只一個: Sg =(0,0,0),表示全部成員從河左岸渡河完畢。

    (3)定義並確定操作集。

    仍然以河的左岸為基點來考慮,把船從左岸划向右岸定義為Pij操作。其中,第一下標i表示船載的傳教士數, 第二下標j表示船載的野人數;同理,從右岸將船劃回左岸稱之為Qij操作,下標的定義同前。則共有10種操作,操作集為

    F={P01,P10,P11,P02,P20,Q01,Q10,Q11,Q02,Q20}

    (4)估計全部的狀態空間數,並儘可能列出全部的狀態空間或予以描述之。

    在這個問題世界中,S0 =(3,3,1)為初始狀態,S31 = Sg =(0,0,0)為目標狀態。全部的可能狀態共有32個,如表所示。

    表1 傳教士和野人問題的全部可能狀態

    注意:按題目規定條件,應劃去非法狀態,從而加快搜索效率。

    1)首先可以劃去左岸邊野人數目超過傳教士的情況,即S4、S8、S9、S20、S24、S25等6種狀態是不合法的;

    2)應劃去右岸邊野人數目超過修道士的情況,即S6、S7、S11、S22、S23、S27等情況;

    3)應劃去4種不可能出現狀態:劃去S15和S16——船不可能停靠在無人的岸邊;劃去S3——傳教士不可能在數量佔優勢的野人眼皮底下把船安全地劃回來;劃去S28——傳教士也不可能在數量佔優勢的野人眼皮底下把船安全地划向對岸。可見,在狀態空間中,真正符合題目規定條件的只有16個合理狀態。

    (5)當狀態數量不是很大時,按問題的有序元組畫出狀態空間圖,依照狀態空間圖搜尋求解。

    根據上述分析,共有16個合法狀態和允許的操作,可以劃出傳教士和食人者問題的狀態空間圖,如圖所示。

    圖2 傳教士和野人問題的狀態空間

    任何一條從S0到達S31的路徑都是該問題的解。

  • 中秋節和大豐收的關聯?
  • 《駱駝祥子》第十八章500字讀後感?