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

2021-10-05 23:43:46 字數 542 閱讀 7891

設有3 個傳教士和3 個野人來到河邊,打算乘乙隻船從右岸渡到左岸去。該船的負載能力為兩人。在任何時候,如果野人人數超過傳教士人數,那麼野人就會把傳教士吃掉。如何用狀態空間法來表示該問題?給出具體的狀態表示和算符。

第一步

根據題目要求設定好約束條件

例如通過船的負載能力為兩人得出:

船上的人m(傳教士)+c(野人)小於等於2

第二步

用三個引數表示左岸轉狀態

並且列出所有可用的狀態

第三步

列出所有的操作集

從左岸划向右岸 +從右岸划向左岸 =共10種操作集合(詳情請參考)

第四步列出最短路徑一共四條 ,且都由11次操作構成(參考)

傳教士野人過河問題

這個問題是人工智慧中經典的搜尋問題,下面用深度優先搜尋演算法來解這個題,示例 如下 include include include using namespace std typedef struct mcnode listfringe 相當於佇列 vectorclosed closed表 判斷是否...

野人傳教士問題 盲目搜尋

從前有一條河,河的左岸有 m個傳教士 missionary 和m 個野人 cannibal 和一艘最多可乘 n人的小船。約定左岸,右岸和船上或者沒有傳教士,或者野人數量少於傳教士,否則野人會把傳教士吃掉。程式設計,接收m和 n,搜尋一條可讓所有的野人和傳教士安全渡到右岸的方案。我們先假設左岸有 3個...

演算法 傳教士和野人問題

有n個傳教士和n個野人來到河邊準備渡河,河岸有一條船,每次至多可供k人乘渡。問傳教士為了安全起見,應如何規劃擺渡方案,使得任何時刻,在河的兩岸以及船上的野人數目總是不超過傳教士的數目。即求解傳教士和野人從左岸全部擺渡到右岸的過程中,任何時刻滿足m 傳教士數 c 野人數 和m c k 的擺渡方案。te...