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

正文內(nèi)容

基于dijkstra算法的最短路徑搜索仿真畢業(yè)設(shè)計(jì)說(shuō)明書(shū)-在線瀏覽

2025-05-01 09:18本頁(yè)面
  

【正文】 個(gè)重要的位置上,可以更好地提高時(shí)間效率。后兩種算法在 Dijkstra算法的基礎(chǔ)上,使用桶結(jié)構(gòu),大大提高了對(duì)永久標(biāo)記點(diǎn)的搜索速度。計(jì)算公式為: F( N) = G( N) +H( N) F( N)是節(jié)點(diǎn) n從初始點(diǎn)到目標(biāo)點(diǎn)的估價(jià)函數(shù), G( n)是實(shí)際成本從最初的節(jié)點(diǎn)到 n個(gè)節(jié)點(diǎn),在狀態(tài)空間里, H( N)是從 n到目標(biāo)節(jié)點(diǎn)的路徑的估計(jì)成本。但可以獲得最佳的解決方案。估計(jì) 值和實(shí)際值接近,就能獲得更好的評(píng)估函數(shù)。一般的 A *算法可以用四個(gè)方向,八個(gè)方向,矢量網(wǎng)絡(luò)連接,可以用來(lái)遍歷路徑方法的路徑探討。 A *算法可以找到任何一個(gè)因素的因素與其他各點(diǎn)之間的最短路徑。雖然它的搜索速度更快,理 論上能夠找到最佳的解決方案,但在實(shí)際應(yīng)用過(guò)程中,往往由于選擇不當(dāng)啟發(fā)式功能,往往不能找到最短路徑,搜索成功率不是很高。自然進(jìn)化的生物學(xué)現(xiàn)象,包括基因突變,自然選擇和雜交都被進(jìn)化算法用來(lái)參考。為優(yōu)化問(wèn)題,一些數(shù)量的候選解(稱為個(gè)體)抽象(所謂染色體)的種群進(jìn)化為一個(gè)更好的解。進(jìn)化從完全隨機(jī)個(gè)體的種群開(kāi)始,代代發(fā)生。在遺傳算法,優(yōu)化問(wèn)題的解被稱為個(gè)人,它代表一個(gè)變量序列,稱為染色體或基因的字符串。首先,算法隨機(jī)生成一定數(shù)量的個(gè)體,有時(shí)操作者可以在隨機(jī)生成的過(guò)程中進(jìn)行干預(yù),以提高初始種群的質(zhì)量。個(gè)體按照適應(yīng)排度序,在前面的通常是適應(yīng)度高的。 下一步是產(chǎn)生下一代的個(gè)體組成種群。選擇是根據(jù)的 新的個(gè)體的適應(yīng)程度來(lái)執(zhí)行,但在同一時(shí)間并不意味著徹底的用適應(yīng)度的高低來(lái)作為標(biāo)準(zhǔn)參考,因?yàn)橹皇沁x擇適應(yīng)度高的個(gè)體將可能導(dǎo)致,算法快速收斂到局部最優(yōu)解最佳的解決方案但不是全局的最有解決方案,我們稱之為早熟。通過(guò)對(duì)初始數(shù)據(jù)的選擇,可組成一個(gè)相對(duì)最優(yōu)的群體。遺傳算法有交配的概率(也稱為交叉概率),通常的范圍是 1,這個(gè)交配的概率反映了兩個(gè)選定的個(gè)體交配的概率。通過(guò)交配,每?jī)蓚€(gè)人產(chǎn)生兩個(gè)新個(gè)體,而原來(lái)的“老”的個(gè)體將會(huì)被替代。這里位置被稱為是隨機(jī)生成的交叉點(diǎn),所指的半段并不是真正意義以上的一半。下一步是突變基因突變產(chǎn)生新的“孩子”個(gè)體。根據(jù)這個(gè)概率,新個(gè)體的染色體隨機(jī)突變通常是改變一個(gè)字節(jié)( 0到 1,或 0的變化)的染色體。這個(gè)過(guò)程不斷重復(fù):每個(gè)個(gè)體都被評(píng)估,計(jì)算每一個(gè)個(gè)體的適應(yīng)度,兩個(gè)個(gè)體交配和突變,產(chǎn)生第三代。一般的終止條件有以下幾種: 進(jìn)化次數(shù)限制; 計(jì)算消耗的資源約束(如計(jì)算時(shí)間,計(jì)算所占用的內(nèi)存) 。 適應(yīng)已經(jīng)達(dá)到飽和,繼續(xù)進(jìn)化不會(huì)有適應(yīng)度更好 的個(gè)體 。 超過(guò)兩個(gè)或兩個(gè)以上的組合。算法反復(fù)選擇最短路徑估計(jì)頂點(diǎn) i∈ VS,將 I并入 S, I所有的出邊松弛 原始的 Dijkstra算法在圖形數(shù)據(jù)存儲(chǔ)和節(jié)點(diǎn)之間的關(guān)系和距離的計(jì)算時(shí),基于網(wǎng)絡(luò)的權(quán)重矩陣,形成關(guān)聯(lián)矩陣,鄰接矩陣和距離矩陣,需要定義 n n數(shù)組進(jìn)行儲(chǔ)存數(shù)據(jù),其中 N為網(wǎng)絡(luò)節(jié)點(diǎn),網(wǎng)絡(luò)節(jié)點(diǎn)太多時(shí),將占用大量的計(jì)算 機(jī)內(nèi)存。網(wǎng)絡(luò)中的所有節(jié)點(diǎn)初始化為未標(biāo)記的節(jié)點(diǎn),在搜索的過(guò)程中與最短路徑的節(jié)點(diǎn)連接的節(jié)點(diǎn)為臨時(shí)標(biāo)記的節(jié)點(diǎn),每循環(huán)從臨時(shí)標(biāo)記節(jié)點(diǎn)的路徑長(zhǎng)度最短的節(jié)點(diǎn)的節(jié)作為永久性標(biāo)志的節(jié)點(diǎn),直到找到目標(biāo)節(jié)點(diǎn)或所有節(jié)點(diǎn)搜索算法結(jié)束前都將被永久標(biāo)記節(jié)點(diǎn)。 設(shè)計(jì)方案的可行性分析和預(yù)期目標(biāo) 預(yù)期目標(biāo): 1. 廣泛收集相關(guān)資料,研究經(jīng)典 Dijkstra算法的主要思想及其實(shí)現(xiàn) 2.對(duì)目前應(yīng)用于 Dijkstra算法的數(shù)據(jù)結(jié)構(gòu)和搜索技術(shù)進(jìn)行學(xué)習(xí)研究 3. 采用圖的鄰接矩陣或鄰接表實(shí)現(xiàn)最短路徑問(wèn)題中圖的存儲(chǔ) 4.采用 Dijkstra算法求從某個(gè)源點(diǎn)到其余各頂點(diǎn)的最短路徑 5.將上述功能作為類的成員函數(shù)實(shí)現(xiàn),編寫(xiě)主函數(shù)測(cè)試上述功能 6. 以 C作為開(kāi)發(fā)工具實(shí)現(xiàn)改進(jìn)最短路徑算法的代碼編制,完成算法的實(shí)現(xiàn) 可行性分析: 個(gè)人能力方面:有一定的專業(yè)知識(shí),技術(shù)能力,了解行業(yè)背景,有相應(yīng)的資料 個(gè)人環(huán)境方面:又上網(wǎng)條件,有充足的相關(guān)資料和書(shū) 籍,可以獲得充分的研引言 10 究資源 軟件方面: C,它具有簡(jiǎn)單,面向過(guò)程,穩(wěn)定,與平臺(tái)無(wú)關(guān),解釋型,多線程,動(dòng)態(tài)等特點(diǎn),因此將其作為首選工具。所以完全具備設(shè)計(jì)方案所需要的軟件條件。主要研究并實(shí)現(xiàn)以下內(nèi)容功能: 1 加載、更換地圖,并可以在地圖上標(biāo)注大 量節(jié)點(diǎn),使之連接成各個(gè)路線,提供大量路線選擇方案 2選擇任意起點(diǎn)和終點(diǎn),只需要查詢起點(diǎn)和終點(diǎn)間的最短路徑,便可快速計(jì)算出之間的最短距離,挑選最短的路線 3添加數(shù)據(jù)庫(kù),實(shí)現(xiàn)儲(chǔ)存、加載數(shù)據(jù)的功能,使先前的操作得到保留并可以隨時(shí)調(diào)用 Dijkstra 經(jīng)典算法的研究 11 第二章 Dijkstra 經(jīng)典算法的研究 Dijkstra算法原理 EW 提出的 Dijkstra算法圖表理論,一個(gè)眾所周知的最短路徑算法Dijkstra算法是在 1959年設(shè)計(jì)的,使用的數(shù)字點(diǎn)到其他頂點(diǎn)的最短路徑可以得到。網(wǎng)絡(luò)中的所有節(jié)點(diǎn)啟動(dòng)的第一個(gè)節(jié)點(diǎn)未標(biāo)記的節(jié)點(diǎn),在搜索的過(guò)程當(dāng)中,與最短路徑中的結(jié)點(diǎn)相互連通的結(jié)點(diǎn)為臨時(shí)標(biāo)記結(jié)點(diǎn),每個(gè)周期的循環(huán)全部是從臨時(shí)標(biāo)記節(jié)點(diǎn)的最短的路徑長(zhǎng)度作為永久紀(jì)節(jié)點(diǎn),直到找到目標(biāo)節(jié)點(diǎn)或所有節(jié)點(diǎn)成為永久標(biāo)記節(jié)點(diǎn)算法結(jié)束。 PJ JJ是從 s到前一個(gè)點(diǎn)的最短路徑。原點(diǎn)設(shè)置:① WS= 0, PS是空的 。從所有未標(biāo)記的節(jié)點(diǎn),選擇 WJ最小的一個(gè) I: WI=MIN WJ,I點(diǎn)選擇為的最短路徑點(diǎn),并設(shè)置為已標(biāo)記 . 4)找到 I的第一點(diǎn)。 5)標(biāo)記點(diǎn) I。 Dijkstra 經(jīng)典算法的研究 12 Dijkstra算法最短路徑應(yīng)用演示 圖 Dijkstra算法最短路徑應(yīng)用演示圖 圖 從 0節(jié)點(diǎn)到 4節(jié)點(diǎn)的最短路徑 Dijkstra算法的仿真實(shí)現(xiàn) 根據(jù)上面的理論與思想,本文使用 Microsoft公司的 visual studio2021軟件,visual C語(yǔ)言, Access數(shù)據(jù)庫(kù)編寫(xiě),制作以 Dijkstra算法為基礎(chǔ)的可以查詢最短路徑的軟件,使最短路徑搜索查詢的功能得到了實(shí)現(xiàn)。 i NUM。 //鄰接矩陣第 s行元素賦值到 dist中 S[i] = 0。amp。 } else path[i] = 1。 //頂點(diǎn) s加入頂點(diǎn)集合 dist[s] = 0。 i NUM 1。 int u = s。 j NUM。amp。 min = dist[j]。 //將頂點(diǎn) u加入集合 S,表示它已在最短路徑上 for (int w = 0。 w++) { //修改 if (S[w] == 0 amp。 [u, w] amp。 dist[u] + [u, w] dist[w]) { dist[w] = dist[u] + [u, w]。 } } } } public void getdata(int s, int e) { D[0] = e。 for (k = 0。 k++) { if (D[k] == 1) { (抱歉,沒(méi)有找到通路 )。 } D[k + 1] = path[D[k]]。 k != 1。 (D[k])。 } } } else { //沒(méi)有路徑 } ()。 C是微軟公司 研究員 Anders Hejlsberg的最新成果。但是 C與 Java有著明顯的不同,它借鑒了 Delphi的一個(gè)特點(diǎn),與 COM(組件對(duì)象模型 )是直接集成的,而且它是微軟公司 .NET windows網(wǎng)絡(luò)框架的主角。其次我將討論一些存在于 Java和 C之間的高層次的和基礎(chǔ)的差別。目前, C和 .NET還只能以 C語(yǔ)言規(guī)則,以及Windows 2021的一個(gè) “d 預(yù)覽版本 ” ,還有 MSDN上迅速增多的文檔集子的形式獲得(還沒(méi)有最終定型)。 C在設(shè)計(jì)者從 C++繼承的可選選項(xiàng)方面比 JAVA要廣泛一些(比如說(shuō)struts),它還增加了自己新的特點(diǎn)(比方說(shuō) 源代碼 版本定義)。 C還需要進(jìn)化成一種開(kāi)發(fā)者能夠接受和采用的語(yǔ)言。目前大家的反應(yīng)是: “ 這是對(duì) JAVA的反擊 ” 。這也是意料中的事情,因?yàn)?JAVA近來(lái)很成功而使用 JAVA的公司都報(bào)告說(shuō)它們?cè)谏a(chǎn)效率上比 C++獲得了提高。由這種語(yǔ)言寫(xiě)成的應(yīng)用程序的數(shù)量是令人驚訝的并已經(jīng)滲透了每一個(gè)級(jí)別的計(jì)算,包 括無(wú)線計(jì)算和移動(dòng)電話(比如 日本 發(fā)明的 JAVA電話)。如果 C不存在,我們總能回到 JAVA或 C和 C++。我們必須給他們時(shí)間安頓下來(lái)看看這些是不是真的對(duì) IT工業(yè)有什么影響。 C是一種最新的、面向?qū)ο蟮木幊陶Z(yǔ)言。 正是由于 C面向?qū)ο蟮淖吭皆O(shè)計(jì),使它成為構(gòu)建各類組件的理想之選 —— 無(wú)論是高級(jí)的商業(yè)對(duì)象還是系統(tǒng)級(jí)的應(yīng)用程序。 最重 要的是, C使得 C++程序員可以高效的開(kāi)發(fā)程序,而絕不損失 C/C++原有的強(qiáng)大的功能。 從 Java 繼承而來(lái)的特點(diǎn) 結(jié)構(gòu)形式 類:在 C中類的聲明與 Java很相似,這是合理的,因?yàn)榻?jīng)驗(yàn)告訴我們 Java模型工作得很好。一個(gè)類開(kāi)始執(zhí)行的起點(diǎn)是靜態(tài) Main()方法下面的 Hello World程序 展示了程序基本結(jié)構(gòu)形式: using System。 ()。類可以是抽象的和不可 繼承的:一個(gè)被申明成 abstract的類不能被實(shí)例化,它只能被用做一個(gè)基類, C關(guān)鍵字 lock就象 Java關(guān)鍵字 final,它申明一個(gè)類不是抽象的,但是它也不能被用做另一個(gè)類的基類界面:就象在 Java中一樣,一個(gè)界面是一組方法集合的抽象定義。一個(gè)單一的類可以實(shí)現(xiàn)幾個(gè)界面,也許以后會(huì)出現(xiàn)一些微妙的差別,但是這個(gè)特點(diǎn)看起來(lái)與 Java相比沒(méi)有變化。錯(cuò)誤處理:如 Java中那樣,通過(guò)拋出和捕捉異常 對(duì)象 來(lái)管理錯(cuò)誤處理過(guò)程。一個(gè)基本的 C類中包含數(shù)據(jù)成員、屬性、構(gòu)造器和方法。 強(qiáng)類型 C是一個(gè)強(qiáng)類型的語(yǔ)言,它的數(shù)值類型有一些可以進(jìn)行隱式轉(zhuǎn)換,其他的必須顯式轉(zhuǎn)換,隱式轉(zhuǎn)換的類型只能是長(zhǎng)度短的類型轉(zhuǎn)換成長(zhǎng)的類型,例如 int可以轉(zhuǎn)換成 long、 float、 double、 decimal,反之必須顯式的轉(zhuǎn) 換。 float b=a。 //和 C++一樣必須加上后綴 L才能定義為 long型不然就為 int型了 a=(int)c。 從 C 和 C++繼承的特點(diǎn) 編譯: 程序直接編譯成標(biāo)準(zhǔn)的二進(jìn)制可執(zhí)行形式 .如果前面的 Hello World程序被保存成一個(gè) 文本文 件 并被命名為 ,它將被編譯成命名 序。 預(yù)編譯: C中存在預(yù)編譯指令支持 條件編譯 ,警告, 錯(cuò)誤報(bào)告 和編譯行控制 .可用的預(yù)編譯指令有: define undef if elif else endif warning error line [] 沒(méi)有了 include 偽指令 .你無(wú)法再用define 語(yǔ)句對(duì)符號(hào) 賦值 ,所以就不存在源代碼替換的概念 這些符號(hào)只能用在軟件開(kāi)發(fā)、設(shè)計(jì)工具簡(jiǎn)介 18 if和 elif偽指令里 .在 line偽指 令里的數(shù)字(和可選的名字)能夠修改行號(hào)還有 warning和 error輸出結(jié)果的文件名。命名空間可以嵌套使用并可以跨程序集使用。在一個(gè)命名空間中,所有的類型必須有一個(gè)唯一的名稱。命名空間是組織和重用代碼的編譯單元。 using語(yǔ)句是用來(lái)在使用類型時(shí)不需要用全限定名的類型,全限定名也可以被使用。 操作符重載: 一些操作符能夠被重載,而另一些則不能 .特別的是,沒(méi)有一個(gè)賦值 運(yùn)算符 能夠被重載 .能夠被重載的單目操作符是 : + ! ~ ++ true false 能夠被重載的二元運(yùn)算符是 : + * / % amp。 dynamic calc = GetCalculator()。 具名參數(shù)與可選參數(shù) public StreamReader OpenFile( string path, int bufferSize =1024) { ... } 調(diào)用 OpenFile 時(shí),順序可以完全顛倒: OpenFile(bufferSize:4096,path:)。它提供了表、查詢、 窗體 、報(bào)表、
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1