野人與修道士問(wèn)題
這是一個(gè)古典的問(wèn)題.假設(shè)有n個(gè)修道士和n個(gè)野人準(zhǔn)備渡河,但只有一條能容納c人的小船,為了防止野人侵犯修道士,要求無(wú)論在何處,修道士的個(gè)數(shù)不得少于野人的人數(shù)(除非修道士個(gè)數(shù)為0).如果兩種人都會(huì)劃船,試設(shè)計(jì)一個(gè)算法,確定他們能否渡過(guò)河去,若能,則給出一個(gè)小船來(lái)回次數(shù)最少的最佳方案.
要求:
(1) 用一個(gè)三元組(x1,x2,x3)表示渡河過(guò)程中各個(gè)狀態(tài).其中,x1表示起始上岸修道士個(gè)數(shù),x2表示起始岸上野人個(gè)數(shù),x3表示小船位置(0-在目的岸,1-在起始岸).例如(2,1,1),表示起始岸有兩個(gè)修道士,一個(gè)野人,小船在起始岸一邊.
采用鄰接表做為存儲(chǔ)結(jié)構(gòu),將各種狀態(tài)之間的遷移圖保存下來(lái).
(2)采用廣度搜索法,得到首先搜索到邊數(shù)最少的一條通路.
(3)輸出數(shù)據(jù)
若問(wèn)題有解(能渡過(guò)河去),則輸出一個(gè)最佳方案.用三元組表示渡河過(guò)程中的狀態(tài),并用箭頭指出這些狀態(tài)之間的遷移:
目的狀態(tài)<-...中間狀態(tài)<-...初始狀態(tài).
若問(wèn)題無(wú)解,則給出"渡河失敗"的信息.
(4)求出所有的解.
標(biāo)簽:
納
防止
上傳時(shí)間:
2016-02-23
上傳用戶:chenlong