




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、精品好資料學(xué)習(xí)推薦 14 / 13 實驗 傳教士野人過河問題 37030602 王世婷 一、實驗問題 傳教士和食人者問題(The Missionaries and Cannibals Problem)。在河的左岸有3 個傳教士、1條船和3個食人者,傳教士們想用這條船將所有的成員運過河去,但是受 到以下條件的限制:(1)傳教士和食人者都會劃船,但船一次最多只能裝運兩個;(2) 在任何岸邊食人者數(shù)目都不得超過傳教士,否則傳教士就會遭遇危險:彼食人者攻擊甚 至被吃掉。此外,假定食人者會服從任何一種過河安排,試規(guī)劃出一個確保全部成員安 全過河的計劃。 二、解答步驟 (1) 設(shè)置狀態(tài)變量并確定值域 M為
2、傳教士人數(shù),C為野人人數(shù),B為船數(shù),要求MHCJ1M+C = 3, L表示左岸, R表示右岸。 (2) 確定狀態(tài)組,分別列出初始狀態(tài)集和目標(biāo)狀態(tài)集 用三元組來表示S:(ML , CL , BL)(均為左岸狀態(tài)) 其中0ML3,0CL 1) (3, 0, 0) J f=2 Qoi 3, 1, 1) + f=4 Pzo n break end 辻node(j, 4)=1 %判斷結(jié)點是否可擴(kuò)展 if node (j, 3)=1 %船在左岸 if ( (node(j, 1)=0) I I (node(j, 1)=3) ) end if (node(j, 1)=1 end if (node (j, 1)
3、=1 end if (node (j, l)=0 node (j, 1)=3) end if (node(j, 1)=2 end elseif node (j, 3)=0%船在右岸 if ( (node(j, 1)=0) I (node(j, 1)=3) ) end if (node(j, 1)=2 end if (node (j, 1)=2 end if (node (j, l)=0 node(j, 1)=3) BoatWildNum=node (result (j), 2)-node (result (jT), 2); if node(result(j), 3)=1 fprintf(第%d
4、次:左岸到右岸,傳教士過去d人,野人過去d人 n, StepNum, abs(BoatPriNum), abs(BoatWi1dNum); S t epNum= S t epNum*1; end if node(result(j), 3)=0 fprintf(*第%d次:右岸到左岸,傳教士過去%d人,野人過去%d人 n, StepNum, abs(BoatPriNum), abs(BoatWi1dNum); StepNum=StepNum+1; end j 二 jT; end pause (0. 2); fprintf(,n); solveNum=solveNum+l; end end fpr
5、intfC問題結(jié)束); $從左岸到右岸,船上傳教士 x個,野人y個 function =forward(z, x, y) global n; global node; node (n, l)=node (z, l)x; node(n, 2)=node(z, 2)-y; node(n,3)=0; r=search (z); 辻(r) return end node(z, 4)=0; node (n, 4)=1; node(n,5)=z; s=destination(); if s node (n, 4)=_1; end n=n+l; % 觥從右岸到左岸,船上傳教士 x個,野人y個 functio
6、n =afterward(z, x, y) global n; global node; node (n, l)=node (z, l)+x; node(n,2)=node(z, 2)+y; node(n, 3)=1; r=search (z); 辻(r) return end node(z, 4)=0; node(n, 4)=1; node (n, 5)=z; s=destination(); if s node (n, 4)=T; end n=n+l; % function r=search(x) global n node; i=x; while node(i, 5)=1 if node
7、(i, 1) =node(n, 1) return end i=node(i, 5); end 弔跟初始節(jié)點比較 if node(i, l)=node(n, 1) return end r=l;%均不相同 % function s=destination。 global n node; if node (n, 1)=0 return end s=0; 2.運用啟發(fā)式函數(shù) % %野人和傳教士過河問題 %date:2010/12/15 %author:wang shi ting function =guohe() clear all; close all; global n node open_l
8、ist index; n=2; result=zeros(100,1); node=zeros(100,5); node(l, :) = 3, 3,1, 1,-lJ ;%初始化 沁左岸傳教士數(shù)2左岸野人數(shù)3船(1為左岸,0為右岸) $4是否可擴(kuò)展(1為可擴(kuò)展)5父節(jié)點號(-1表示無父節(jié)點,即為初始節(jié)點) index=l; open_list=l, 0. 01J :%節(jié)點號 啟發(fā)函數(shù)值 while (1) Erow, 二size(open_list); if row=0 fprintf C all the nodes in open list have been expanded); retur
9、n end for il=l:row open_list(il, 2)=6 01-node(open_list(il, 1), l)-node(open_list(il, 1), 2);% 定義啟發(fā)函數(shù) if node(open_list (il, 1), 4)=1%如果該結(jié)點是目標(biāo)結(jié)點,則打印結(jié)果 fprintf (*傳教士野人過河問題n); J=l; k=open_list(il, 1); StepNum 二1; while (k=-l) result(j)=k; k=node(k,5); j二j+l; end fprintf(方法如下n); while jl BoatPriNum=nod
10、e(result(j), 1)node(result(jl),1); BoatWildNum=node (result (j), 2)-node (result (jT), 2); if node(result(j), 3)=1 fprintfC第d次:左岸到右岸,傳教士過去d人,野人過去d人 n, StepNum, abs(BoatPriNum), abs(BoatWi1dNum); S t epNum= S t epNum*1; end if node(result(j), 3)=0 fprintfC第%d次:右岸到左岸,傳教士過去%d人,野人過去%d人 n, StepNum, abs(B
11、oatPriNum), abs(BoatWi1dNum); S t epNum= S t epNum1; end end pause (0.2); fprintfC問題結(jié)束n); return end end r_row,=find(open_list(:, 2)=max(open_list (:,2); j=open_list(r_row(l, 1), 1); if node (j, 3)=1 %船在左岸 if ( (node(j, 1)=0)| (node (j, 1)=3) ) end if (node(j, 1)=1 end if (node (j, 1)=1 end if (node
12、 (j, l)=0 node (j, 1)=3) end if (node(j, 1)=2 end elseif node (j, 3)=0%船在右岸 if ( (node (j, 1)=0)| (node (j, 1)=3) ) end if (node(j, 1)=2 end if (node (j, 1)=2 end if (node (j, l)=0 node (j, 1)=3) end if (node (j, 1)=1 end end %display(open_list); open_list(r_row(l),:)=E ; index=indexl; %open 表個數(shù)減 1
13、%display (open_list); end % $從左岸到右岸,船上傳教士 x個,野人y個 function L=forward(z, x, y) global n; global node open_list index; node (n, l)=node (z, l)x; node(n,2)=node(z, 2)-y; node (n, 3)=0; r=search (z); 辻(F return end node(z, 4)=0; node (n, 4)=1; node (n, 5)=z; s二destination (); if s node (n, 4)=-1; end in
14、dex=index+l; open_list(index, l)=n; n=n+l; % 眥從右岸到左岸,船上傳教士 X個,野人y個 function =afterward(z, x, y) global n; global node open_list index; node (n, l)=node (z, l)+x; node(n,2)=node(z, 2)+y; node (n, 3)=1; r=search(z); 辻(F return end node(z, 4)=0; node (n, 4)=1; node(n, 5)=z; s=destination(); if s node (n, 4)=-1; end index=index+l; open_list(index, l)=n; n=n+l; % function r=sear
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 統(tǒng)編版語文六年級下冊習(xí)作《家鄉(xiāng)的風(fēng)俗》精美課件
- 緊急救援設(shè)備種類及操作考核試卷
- 環(huán)境保護(hù)與水資源節(jié)約利用考核試卷
- 港口市場營銷策略考核試卷
- 煤炭行業(yè)的礦產(chǎn)資源評估與開發(fā)潛力考核試卷
- 介紹杭州初二語文作文
- 海洋油氣資源開發(fā)工程安全文化建設(shè)路徑考核試卷
- 社區(qū)兒童友好空間設(shè)計考核試卷
- 砼結(jié)構(gòu)構(gòu)件的預(yù)制件市場需求預(yù)測分析考核試卷
- 稀土金屬礦選礦廠工藝優(yōu)化與生產(chǎn)成本控制考核試卷
- 2025-2030中國汽車金融行業(yè)市場深度調(diào)研及發(fā)展策略與投資前景研究報告
- 2025年鐵路車輛鉗工(高級)職業(yè)技能鑒定參考試題庫(含答案)
- 跨越高原勇敢前行 課件 2025屆高考學(xué)習(xí)的高原期主題班會
- 2025年中國共青團(tuán)入團(tuán)團(tuán)員必知知識考試題與答案
- 2024年鄭州鐵路職業(yè)技術(shù)學(xué)院單招職業(yè)傾向性測試題庫必考題
- 2025年山東省濟(jì)南市平陰縣中考一模英語試題(原卷版+解析版)
- 2025年安徽省示范高中皖北協(xié)作區(qū)第27屆聯(lián)考 生物學(xué)(含解析)
- 移動業(yè)務(wù)代辦協(xié)議書
- 2025年CSCO胃癌診療指南解讀
- 2025屆廣東省高三一模生物學(xué)試卷(原卷版+解析版)
- 述職報告:崗位認(rèn)知
評論
0/150
提交評論