freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

dijkstra算法的matlab實(shí)現(xiàn)-資料下載頁

2025-06-25 06:30本頁面
  

【正文】 paths(i) = sta。 end endendindex = 1。for i = 1:1:m if i ~= sta min = inf。 for j = 1:1:m count = isIn(know,j)。 if count == 0 amp。amp。 lengs(j) = min k = j。 min = lengs(j)。 end end know(index) = k。 index = index+1。 for j = 1:1:m count = isIn(know,j)。 if count == 0 amp。amp。 (lengs(i) + adj_mat(i,j)) lengs(j) lengs(j) = lengs(i) + adj_mat(i,j)。 paths(j) = i。 end end endendleng = lengs(dst)。k = dst。j = 1。path = dst。while paths(k)~= sta k = paths(k)。 path = [k path]。endpath = [sta path]。代碼的算法過程如下:(1)首先獲取結(jié)點(diǎn)的數(shù)量m(即矩陣的長度),然后生成三個(gè)長度為m的數(shù)組,分別為從已知結(jié)點(diǎn)計(jì)算得到的最短路徑lengs,該結(jié)點(diǎn)的最短路徑途經(jīng)的上一節(jié)點(diǎn)paths,已知結(jié)點(diǎn)的集合know,并把初始節(jié)點(diǎn)加入know。paths數(shù)組為最短路徑途徑中的上一節(jié)點(diǎn)位置。例如假設(shè)最短路徑是從152,則paths(2) = 5 , paths(5) = 1。這樣在輸出從i到j(luò)的路徑時(shí),可以由j開始逆向?qū)ふ?,輸出查?..paths(paths(j))..的值,直到值為i時(shí)停止查找,即為數(shù)據(jù)結(jié)構(gòu)中的“靜態(tài)鏈表”,這樣的好處是對應(yīng)每個(gè)結(jié)點(diǎn)只需要一個(gè)數(shù)就可以表示最短路徑的字符串,便于存儲(chǔ),但是要注意解析時(shí)需要逆向解析。(2) 接下來查看鄰接矩陣,如果存在從起始結(jié)點(diǎn)到結(jié)點(diǎn)i的路徑,則將lengs(i)的值更改為矩陣中的值,并將paths(i)更改為目的地。(3) 尋找在lengs中且不在know中最小的值(即未知結(jié)點(diǎn)中路徑最短的值),將對應(yīng)的結(jié)點(diǎn)i加入know中,用i來判斷,對于每個(gè)不在know中的結(jié)點(diǎn)j,如果lengs(i) + adj_mat(i,j) lengs(j),則更新lengs(j)的值。(4) 重復(fù)(3)m1次(5) 經(jīng)過計(jì)算后,paths和lengs中存放的即為最短的路徑,剩下的工作為返回正確的值。leng的值即為lengs(dst),而path的值即為重復(fù)(1)中說明的訪問過程一直到paths(n) = sta,由于需要逆序輸出所以得到新的值時(shí)將它插入path的開頭而不是末尾,形式為path = [ k path],最后將起始地址的值放入path最開頭,函數(shù)結(jié)束。附:5 測試報(bào)告 啟動(dòng)MATLAB(測試使用版本為MATLAB R2010b,操作系統(tǒng)為Windows 7 32位),輸入menu啟動(dòng)程序,出現(xiàn)菜單如圖所示(為了區(qū)分圖片與文字,所有圖片均經(jīng)過反色處理,因此盡管MATLAB中背景為白色,在圖片中顯示為黑色):輸入1使用默認(rèn)數(shù)據(jù),程序提示成功并再次輸出菜單:輸入3查看數(shù)據(jù),可以看到默認(rèn)數(shù)據(jù)已經(jīng)被正確存儲(chǔ):輸入4進(jìn)行最短路徑求取的測試,可以看到結(jié)果是正確的,接下來進(jìn)行更多的最短路徑求取測試:可以驗(yàn)證結(jié)果都是正確的,而對于不正確的輸入程序可以簡單識別,如下圖所示:接下來對自由輸入的數(shù)據(jù)進(jìn)行測試。在主菜單中輸入2開始進(jìn)行數(shù)據(jù)輸入,首先輸入結(jié)點(diǎn)個(gè)數(shù):接下來輸入鄰接矩陣。由于程序使用的是無向圖,所以不需要輸入(i,j)(ij)時(shí)的數(shù)據(jù):輸入完成后查看數(shù)據(jù)是否被正確存儲(chǔ),可以看到結(jié)果是正確的(inf是MATLAB中設(shè)定的無窮大常數(shù),在這里代表不存在路徑):進(jìn)行多次求最短路徑驗(yàn)證,可以看到結(jié)果均正確:測試結(jié)束。多次測試結(jié)果均為正確,可以認(rèn)為程序的算法是正確的,程序的結(jié)構(gòu)是可靠的。6 心得體會(huì) 接觸MATLAB已經(jīng)有不短的時(shí)間了,以前就聽說它的功能十分強(qiáng)大,不過沒有做什么實(shí)驗(yàn),也沒有深刻體會(huì)到這一點(diǎn),最多就只是有針對性地看一下書上的源程序,然后抄上去,看看運(yùn)行結(jié)果,能出來跟書上一樣的結(jié)果就已經(jīng)很開心了,后來漸漸覺得MATLAB在工科上似乎是無所不能,功能十分強(qiáng)大,可是也沒有很正式學(xué)習(xí)。對MATLAB基本運(yùn)算的學(xué)習(xí)讓我體會(huì)到了它在處理矩陣以及行列式這方面的獨(dú)到的優(yōu)點(diǎn),基本運(yùn)算看起來還是很簡單的,不過很多細(xì)節(jié)還是不容忽視,或許,越是簡單的東西越能檢測一個(gè)人的能力,因?yàn)樗简?yàn)了一個(gè)人的細(xì)心程度,并且,急功近利是不能夠做好的,從最初步的漸漸開始,一步一步的學(xué)習(xí),也使得我對MATLAB的基本運(yùn)算有了初步的了解,并能夠編寫簡單的函數(shù)來加以運(yùn)用。以前在學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的時(shí)候,就了解了關(guān)于最短路徑算法的相關(guān)知識,所以,這次看到有這個(gè)題目,我就想試著做一做。查閱了以前的數(shù)據(jù)結(jié)構(gòu)書籍以及MATLAB相關(guān)的內(nèi)容之后,我就開始寫程序了,在網(wǎng)上可以找到很多這樣的程序,不過,都或多或少有些毛病,所以還不如自己把算法思想研究透了,自己來寫。我實(shí)現(xiàn)的時(shí)候,把它做成了簡單的菜單形式,通過輸入選擇來實(shí)現(xiàn),同時(shí),還在內(nèi)部設(shè)置了一組默認(rèn)數(shù)據(jù),可以方便老師來進(jìn)行測試,結(jié)果在MATLAB主窗口輸出。在調(diào)試驗(yàn)證過程中,也出現(xiàn)了很多問題,最開始的時(shí)候,發(fā)現(xiàn)有的輸出的結(jié)果并不是最短的,因而,我只好再對程序進(jìn)行認(rèn)真的檢查,修改。幾經(jīng)努力,最后終于得到了完善,看到了那些正確的輸出結(jié)果,很有成就感。總之,這次課程設(shè)計(jì)讓我收獲了很多,不僅對MATLAB的基本運(yùn)算有了初步的認(rèn)識,還對Dijkstra算法有了更深刻的認(rèn)識和理解,自己認(rèn)真獨(dú)立完成了一件事,讓我覺得有了很大的成就感,MATLAB強(qiáng)大的功能我只學(xué)習(xí)了冰山一角,但是,我相信,努力過了總會(huì)有收獲的。 7 參考文獻(xiàn)[1].《MATLAB從入門到精通》周建興編著,人民郵電出版社[2].《精通MATLAB 7》王正林, 劉明編著,北京電子工業(yè)出版社[3].《MATLAB語言及其在電子信息工程中的應(yīng)用》 王洪元編清華大學(xué)出版社[4].《數(shù)據(jù)結(jié)構(gòu)(C語言版)》 嚴(yán)蔚敏編 北京清華大學(xué)出版社[5].百度百科 Dijkst
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1