下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 1) 實(shí)驗(yàn)內(nèi)容 “旅行商問題”常被稱為“旅行推銷員問題”,是指一名推銷員要拜訪多個(gè)地點(diǎn)時(shí),如何找到在拜訪每個(gè)地點(diǎn)一次后再回到起點(diǎn)的最短路徑。旅行商問題在本實(shí)驗(yàn)中的具體化:從a城市出發(fā),到達(dá)每個(gè)城市并且一個(gè)城市只允許訪問一次,最后又回到原來的城市,尋找一條最短距離的路徑。2) 實(shí)驗(yàn)?zāi)康?加深對(duì)a星算法的理解了解啟發(fā)式圖搜索策略3) a*算法中f(n)=g(n)+h(n)如何選?。?對(duì)于某一已到達(dá)的現(xiàn)行狀態(tài), 如已到達(dá)圖中的n節(jié)點(diǎn), 它是否可能成為最佳路徑上的一點(diǎn)的估價(jià), 應(yīng)由估價(jià)函數(shù)f(n)值來決定。假設(shè)g*(n)函數(shù)值表示從起始節(jié)點(diǎn)s 到任意一個(gè)節(jié)點(diǎn)n 的一條最佳路徑上的實(shí)際耗散值。h*(n
2、)函數(shù)值表示從任意節(jié)點(diǎn)n 到目標(biāo)節(jié)點(diǎn)ti 的最佳路徑的實(shí)際耗散值。其中ti 是一個(gè)可能的目標(biāo)節(jié)點(diǎn)。f*(n)函數(shù)值表示從起始s,通過某一指定的n 到達(dá)目標(biāo)節(jié)點(diǎn)ti的一條最佳路徑的實(shí)際耗散值,并有f*(n)=g*(n)+h*(n)。 假設(shè)f 函數(shù)是對(duì)f* 函數(shù)的一種估計(jì), 并有f(n)=g(n)+h(n),其中g(shù) 函數(shù)是對(duì)g* 的估計(jì),h 函數(shù)是對(duì)h* 的一種估計(jì)。f( n) 包括兩個(gè)部分,其中g(shù)(n)表示到達(dá)n 節(jié)點(diǎn)時(shí),已付出代價(jià)的估計(jì);而h(n)表示從n 節(jié)點(diǎn)到達(dá)目標(biāo)節(jié)點(diǎn)ti 將要付出代價(jià)的估計(jì)。按f(n)=g*(n)+h*(n)的值來排序ff 表的節(jié)點(diǎn),f 值小者優(yōu)先。通常稱這種算法為a算
3、法。在a 算法的基礎(chǔ)上,進(jìn)一步限制h(n)函數(shù),使得搜索圖中的每一個(gè)節(jié)點(diǎn)n,能滿足h(n)=h*(n)、稱h 函數(shù)取h* 的下界。這種算法叫a* 算法。對(duì)ff里的每一個(gè)節(jié)點(diǎn)做評(píng)估函數(shù)f分為兩部分g和h:假設(shè)從a城市走到x城市,又走到y(tǒng)城市,所以g可表示為:g = a到x的距離 + x到y(tǒng)的距離;未走的的城市數(shù)=(總城市數(shù)+1)-目前城市的層數(shù)。為什得加1,因?yàn)樽詈蟮米呋爻跏汲鞘?,所以總路徑的城市?shù)為總城市數(shù)+1。h = 未走的城市數(shù)目前的最小距離;f = g + h ;計(jì)算ff表里每個(gè)節(jié)點(diǎn)的f值,f值最小的節(jié)點(diǎn)作為活路徑,把它加到bestpath中。4) 完整的源代碼 (加注釋說明) #inc
4、lude stdio.hconst int max=9999;const int ax=50;int isbest(int i,int bestpath,int p)/檢測(cè)改節(jié)點(diǎn)是否已經(jīng)加入bestpath中 for(int k=1;k=p;k+)if(i=bestpathk)break;if(k!=p+1)/新測(cè)試節(jié)點(diǎn)在a中 return 1;elsereturn 0;void main() int min=max;int minf=max;int num;/城市數(shù)量int mataxax;/城市間距離int bestpathax;/最佳路徑int f=0,g=0,h=0;int ffax;
5、/依次求每個(gè)城市的f值int ggax;/城市的g值printf(城市個(gè)數(shù)為:);scanf(%d,&num);printf(城市間的距離為:n);/輸入各城市間距離的矩陣for(int i=0;inum;i+)for(int j=0;jnum;j+)scanf(%d,&matij); bestpath0=0;/起點(diǎn)為0,即城市afor(int p=0;pnum-1;p+)/依次求每個(gè)最優(yōu)節(jié)點(diǎn),每次循環(huán)得到一個(gè)新的最優(yōu)城市放到bestpath中for(int kk=0;kknum;kk+)ffkk=max;/便于后面求最小值for(i=1;inum;i+)/起點(diǎn)a不算,從非起點(diǎn)開始找尋最優(yōu)城市
6、if(isbest(i,bestpath,p)/該點(diǎn)已經(jīng)在bestpath中的話,忽略continue;else/計(jì)算該點(diǎn)的g值ggi=g+matbestpathpi;/i點(diǎn)的g值 for(int m=0;mnum;m+)/開始計(jì)算h值 if(isbest(m,bestpath,p)/該點(diǎn)已經(jīng)在bestpath中的話,忽略 continue;for(int t=m+1;tnum;t+)if(isbest(t,bestpath,p)continue;if(m!=0|t!=i|p=num-2)/不是最后一個(gè)點(diǎn)的話,不算a點(diǎn)到這個(gè)點(diǎn)長度if(matmtmin)min=matmt; h=min*(nu
7、m-p-1);/h值ffi=ggi+h;/第i個(gè)節(jié)點(diǎn)的f值min=max;/重新賦值最大,以便下次循環(huán)for(i=0;inum;i+)/找尋最優(yōu)點(diǎn),即f值最小者if(ffiminf)minf=ffi;bestpathp+1=i;minf=max;/重新賦值最大,以便下次循環(huán)g=g+matbestpathpbestpathp+1;/更新g值printf(最優(yōu)路徑為:); for(i=0;inum;i+) printf(%c ,bestpathi+65);printf(an);printf(總路程為:); int sum=0;for(i=0;inum-1;i+) sum=sum+matbestpa
8、thibestpathi+1;sum=sum+matbestpathnum-10;/總路程最后一個(gè)城市要回到a,所以加上其距離printf(%dn,sum);5) 實(shí)驗(yàn)運(yùn)行過程截圖6) 實(shí)驗(yàn)過程中遇到的問題 1. 程序剛寫好問題還是挺多的,總是得不到正確的結(jié)果,程序不算大,但是循環(huán)比較多,所以發(fā)現(xiàn)錯(cuò)誤還是挺難的,通過程序的分步執(zhí)行,才逐漸發(fā)現(xiàn)錯(cuò)誤所在,比如說 g值要及時(shí)的更新2. 循環(huán)的終點(diǎn)要確定,一開始運(yùn)行時(shí),一直崩潰。 問題出在if(m!=0|t!=i)這里,計(jì)算h值時(shí),取余下路徑時(shí),假設(shè)現(xiàn)在bestpath中有ad現(xiàn)在在測(cè)試b點(diǎn),那么ba不會(huì)在下面路徑中走到,不用考慮,但是如果b是最后一個(gè)點(diǎn),那么在剩下路徑中只能走ba,必須考慮。所以在判定條件中必須添加一個(gè) p=num-2,變成 if(m!=0|t!=i|p=num-2),p=num-2就是在尋找回到a前的最后一個(gè)點(diǎn)7) 實(shí)驗(yàn)心得體會(huì)。 通過本次實(shí)驗(yàn),我深入了解了一下a星算法,
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年網(wǎng)絡(luò)安全風(fēng)險(xiǎn)評(píng)估及防范服務(wù)合同
- 2025彩鋼復(fù)合材料研發(fā)與應(yīng)用推廣合作協(xié)議3篇
- 2024年離婚后贍養(yǎng)費(fèi)協(xié)議:無子女離異雙方協(xié)定
- 《土壤耕作和管理》課件
- 《A葉片結(jié)構(gòu)管理》課件
- 2025年度膩?zhàn)赢a(chǎn)品銷售與客戶滿意度調(diào)查協(xié)議3篇
- 2024年飯店管理運(yùn)營權(quán)承包合同書樣例版B版
- 2024藥品安全監(jiān)管與合規(guī)合同
- 團(tuán)隊(duì)協(xié)作創(chuàng)新財(cái)務(wù)部年終工作總結(jié)
- 能源行業(yè)管理制度培訓(xùn)
- 小學(xué)生科普人工智能
- 物流運(yùn)籌學(xué)附錄習(xí)題答案
- 市政府副市長年道路春運(yùn)工作會(huì)議講話稿
- GB_T 37514-2019 動(dòng)植物油脂 礦物油的檢測(cè)(高清版)
- 肝臟的常見腫瘤的超聲診斷
- 閘門水力計(jì)算說明
- 大型塔器“立裝成段整體就位”工法
- 車輛使用授權(quán)書
- 常用函數(shù)圖像(1)
- 說明書ZWY-150(120)-45L煤礦用挖掘式裝載機(jī)
- 《鍋爐及鍋爐房設(shè)備》課程設(shè)計(jì)北京市某燃煤廠區(qū)蒸汽鍋爐房設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論