




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)專心-專注-專業(yè)精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè) 人工智能 上機(jī)實(shí)驗(yàn)報(bào)告學(xué)號(hào): 姓名: 閆偉明 所在系: 信息學(xué)院 班級(jí): 惠普測(cè)試142班 實(shí)驗(yàn)名稱: 知識(shí)表示方法及應(yīng)用 實(shí)驗(yàn)日期 2016年12月3日 實(shí)驗(yàn)指導(dǎo)教師 李輝 實(shí)驗(yàn)機(jī)房 A401 -實(shí)驗(yàn)?zāi)康模涸谡莆諣顟B(tài)空間搜索策略的基礎(chǔ)上,理解知識(shí)表示的方法。能夠應(yīng)用知識(shí)表示方法,解決實(shí)際問題。實(shí)驗(yàn)內(nèi)容:(1) M-C問題描述有n個(gè)牧師和n個(gè)野人準(zhǔn)備渡河,但只有一條能容納c個(gè)人的小船,為了防止野人侵犯牧師,要求無論在何處,牧師的人數(shù)不得少于野人的人數(shù)(除非牧師人數(shù)為0
2、),且假定野人與牧師都會(huì)劃船,試設(shè)計(jì)一個(gè)算法,確定他們能否渡過河去,若能,則給出小船來回次數(shù)最少的最佳方案。(2) 基本要求:輸入:牧師人數(shù)(即野人人數(shù)):n;小船一次最多載人量:c。輸出:若問題無解,則顯示Failed,否則,顯示Successed輸出一組最佳方案。用三元組(X1, X2, X3)表示渡河過程中的狀態(tài)。并用箭頭連接相鄰狀態(tài)以表示遷移過程:初始狀態(tài)-中間狀態(tài)-目標(biāo)狀態(tài)。例:當(dāng)輸入n=2,c=2時(shí),輸出:221-110-211-010-021-000其中:X1表示起始岸上的牧師人數(shù);X2表示起始岸上的野人人數(shù);X3表示小船現(xiàn)在位置(1表示起始岸,0表示目的岸)。要求:寫出算法的設(shè)
3、計(jì)思想和源程序,并以圖形用戶界面實(shí)現(xiàn)人機(jī)交互,進(jìn)行輸入和輸出結(jié)果,如:Please input n: 2 Please input c: 2Successed or Failed?: SuccessedOptimal Procedure: 221-110-211-010-021-000算法設(shè)計(jì)package cn.xiaoyangege.mvc.yerenguohe;/CrossRiverQuestion.javaimport java.util.ArrayList;import java.util.List;import java.util.Scanner;public class Cros
4、sRiverQuestion public static void main(String args) Scanner scanner = new Scanner(System.in);int n = 0;int c = 0;String ns = null;String cs = null;boolean flag;do flag = false;System.out.print(Please input n:);ns = scanner.nextLine();System.out.print(Please input c:);cs = scanner.nextLine();try n =
5、Integer.parseInt(ns);c = Integer.parseInt(cs); catch (NumberFormatException e) System.out.println(輸入不合法。);flag = true;continue;if (!flag & (n 0 | c 0) System.out.println(輸入不合法。);flag = true; while (flag);scanner.close();CrossRiverQuestion q = new CrossRiverQuestion(n, c);q.solveQuestion();private in
6、tpeoNum;private intsavageNum;private ListresultList= new ArrayList();public List solveQuestion() Node n = new Node(peoNum, savageNum, 0, 0, 0, new ArrayList(),0, 0);boolean dfsResult = dfs(n);System.out.print(Succeed or Failed?: );if (dfsResult) System.out.println(Succeed.);System.out.print(Optimal
7、Procedure: );resultList.add(0, n);for (Node node : resultList) System.out.print(node.getLeftPeo() + + node.getLeftSavage()+ + (1 - node.getCURR_STATE() + -);System.out.println(End);return resultList; else System.out.println(Failed.);return null;public CrossRiverQuestion(int peoNum, int savageNum) su
8、per();this.peoNum = peoNum;this.savageNum = savageNum;private boolean dfs(Node n) if (n.hasVisited() return false;n.addCheckSum();if (n.getLeftPeo() = 0 & n.getLeftSavage() = 0) return true;if (n.getLeftPeo() 0 | n.getRightPeo() 0 | n.getLeftSavage() 0| n.getRightSavage() 0) return false;if (n.getLe
9、ftPeo() 0) return false;if (n.getRightPeo() 0) return false;if (n.getCURR_STATE() = n.getStateBoatLeft() Node n1 = new Node(n.getLeftPeo() - 1, n.getLeftSavage() - 1,n.getRightPeo() + 1, n.getRightSavage() + 1,n.getStateBoatRight(), n.getNodesCheckSum(), 1, 1);if (dfs(n1) resultList.add(0, n1);retur
10、n true;Node n4 = new Node(n.getLeftPeo() - 2, n.getLeftSavage(),n.getRightPeo() + 2, n.getRightSavage(),n.getStateBoatRight(), n.getNodesCheckSum(), 2, 0);if (dfs(n4) resultList.add(0, n4);return true;Node n5 = new Node(n.getLeftPeo(), n.getLeftSavage() - 2,n.getRightPeo(), n.getRightSavage() + 2,n.
11、getStateBoatRight(), n.getNodesCheckSum(), 0, 2);if (dfs(n5) resultList.add(0, n5);return true; else Node n6 = new Node(n.getLeftPeo(), n.getLeftSavage() + 1,n.getRightPeo(), n.getRightSavage() - 1,n.getStateBoatLeft(), n.getNodesCheckSum(), 0, 1);if (dfs(n6) resultList.add(0, n6);return true;Node n
12、7 = new Node(n.getLeftPeo() + 1, n.getLeftSavage(),n.getRightPeo() - 1, n.getRightSavage(),n.getStateBoatLeft(), n.getNodesCheckSum(), 1, 0);if (dfs(n7) resultList.add(0, n7);return true;Node n1 = new Node(n.getLeftPeo() + 1, n.getLeftSavage() + 1,n.getRightPeo() - 1, n.getRightSavage() - 1,n.getSta
13、teBoatLeft(), n.getNodesCheckSum(), 1, 1);if (dfs(n1) resultList.add(0, n1);return true;Node n4 = new Node(n.getLeftPeo() + 2, n.getLeftSavage(),n.getRightPeo() - 2, n.getRightSavage(),n.getStateBoatLeft(), n.getNodesCheckSum(), 2, 0);if (dfs(n4) resultList.add(0, n4);return true;Node n5 = new Node(
14、n.getLeftPeo(), n.getLeftSavage() + 2,n.getRightPeo(), n.getRightSavage() - 2,n.getStateBoatLeft(), n.getNodesCheckSum(), 0, 2);if (dfs(n5) resultList.add(0, n5);return true;return false;public List getResultList() return resultList;class Node private ListnodesCheckSum= new ArrayList();private intle
15、ftPeo;private intrightPeo;private intleftSavage;private intrightSavage;private intCURR_STATE= 0;private intonBoatPeoNum= 0;private intonBoatSavageNum= 0;private final intSTATE_BOAT_LEFT= 0;private final intSTATE_BOAT_RIGHT= 1;public Node(int leftPeo, int leftSavage, int rightPeo, int rightSavage,int
16、 state, List checkSumList, int onBoatPeoNum,int onBoatSavageNum) CURR_STATE = state;this.leftPeo = leftPeo;this.leftSavage = leftSavage;this.rightPeo = rightPeo;this.rightSavage = rightSavage;nodesCheckSum.addAll(checkSumList);this.onBoatPeoNum = onBoatPeoNum;this.onBoatSavageNum = onBoatSavageNum;p
17、ublic int getLeftPeo() return leftPeo;public void setLeftPeo(int leftPeo) this.leftPeo = leftPeo;public int getRightPeo() return rightPeo;public void setRightPeo(int rightPeo) this.rightPeo = rightPeo;public int getLeftSavage() return leftSavage;public void setLeftSavage(int leftSavage) this.leftSav
18、age = leftSavage;public int getRightSavage() return rightSavage;public void setRightSavage(int rightSavage) this.rightSavage = rightSavage;Overridepublic String toString() return leftPeo + , + leftSavage + , + rightPeo + , + rightSavage+ , + CURR_STATE;public int getCURR_STATE() return CURR_STATE;pu
19、blic void setCURR_STATE(int cURR_STATE) CURR_STATE = cURR_STATE;public int getStateBoatLeft() return STATE_BOAT_LEFT;public int getStateBoatRight() return STATE_BOAT_RIGHT;public int calcCheckSum() return 1 * getCURR_STATE() + 10 * getLeftPeo() + 100 * getLeftSavage()+ 1000 * getRightPeo() + 10000 * getRightSavage();public void addCheckSum() int checkSum = calcCheckSum();nodesCheckSum.add(checkSum);public boolean hasVisited() int sum = calcCheckSum();for (Integer checkSum : nodesCheckSum) if (checkSum = sum) return true;return false;public List getNodesCheckSum() return n
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- JJF 2194-2025氧化鋅避雷器測(cè)試儀校準(zhǔn)規(guī)范
- LY/T 3350-2023展平竹砧板
- 2025至2030年中國半胱胺酒石酸鹽數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025年軍隊(duì)文職人員招聘之軍隊(duì)文職管理學(xué)與服務(wù)通關(guān)題庫(附帶答案)
- 2025年消防設(shè)施操作員之消防設(shè)備基礎(chǔ)知識(shí)強(qiáng)化訓(xùn)練試卷A卷附答案
- 模擬卷浙江寧波2025屆高三一模語文試題及答案
- (一模)哈三中2025屆高三第一次模擬考試 語文試題(含答案)
- 公司管理理念宣傳手冊(cè)(講座內(nèi)容)
- 中學(xué)生讀書勵(lì)志征文
- 化工圖標(biāo)知識(shí)培訓(xùn)課件
- 梨狀窩囊腫的護(hù)理查房
- GB/T 15558.1-2023燃?xì)庥寐竦鼐垡蚁?PE)管道系統(tǒng)第1部分:總則
- 公路工程安全風(fēng)險(xiǎn)辨識(shí)與防控手冊(cè)
- 實(shí)驗(yàn)室安全檢查表
- 初中政治答題卡模板A4
- 供應(yīng)商滿意度調(diào)查表
- 無圍標(biāo)、串標(biāo)行為承諾書
- 第三次全國國土調(diào)查土地分類
- 發(fā)展?jié)h語初級(jí)綜合1電子版
- 某鐵路注漿處理工藝性試驗(yàn)方案
- 軟件工程?hào)|北大學(xué)信息科學(xué)與工程學(xué)院課件
評(píng)論
0/150
提交評(píng)論