<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當(dāng)前位置: 首頁 - 科技 - 知識(shí)百科 - 正文

        js圖數(shù)據(jù)結(jié)構(gòu)處理 迪杰斯特拉算法代碼實(shí)例

        來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 21:50:40
        文檔

        js圖數(shù)據(jù)結(jié)構(gòu)處理 迪杰斯特拉算法代碼實(shí)例

        js圖數(shù)據(jù)結(jié)構(gòu)處理 迪杰斯特拉算法代碼實(shí)例:這篇文章主要介紹了js圖數(shù)據(jù)結(jié)構(gòu)處理 迪杰斯特拉算法代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下 /*//1、確定數(shù)據(jù)結(jié)構(gòu), mapf[i][j] 為點(diǎn)i到點(diǎn)j的距離 [ Infinity 2 5 Infi
        推薦度:
        導(dǎo)讀js圖數(shù)據(jù)結(jié)構(gòu)處理 迪杰斯特拉算法代碼實(shí)例:這篇文章主要介紹了js圖數(shù)據(jù)結(jié)構(gòu)處理 迪杰斯特拉算法代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下 /*//1、確定數(shù)據(jù)結(jié)構(gòu), mapf[i][j] 為點(diǎn)i到點(diǎn)j的距離 [ Infinity 2 5 Infi

        這篇文章主要介紹了js圖數(shù)據(jù)結(jié)構(gòu)處理 迪杰斯特拉算法代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

        /*//1、確定數(shù)據(jù)結(jié)構(gòu), mapf[i][j] 為點(diǎn)i到點(diǎn)j的距離
         [
         Infinity 2 5 Infinity Infinity
         Infinity Infinity 2 6 Infinity
         Infinity Infinity Infinity 7 1
         Infinity Infinity 2 Infinity 4
         Infinity Infinity Infinity Infinity Infinity
         ];
         
         
         //2、如果源點(diǎn)為1,則 s = {1}, 則 v-s = {2,3,4,5}; s為已經(jīng)規(guī)劃好的點(diǎn),v-s是需要規(guī)劃的點(diǎn) 
         var dist = []; //dist[i] = mapf[1][i];dist[1] = 0;
         //源點(diǎn)1到i有邊相連,初始化前驅(qū)為1(源點(diǎn)為前驅(qū)),否則初始化為-1
         var p = [-1,1,1,-1,-1];
         
         
         //3、找到 v-s = {2,3,4,5}集合里面,到源點(diǎn)1,最近的點(diǎn)
         //得出
        結(jié)果為2,節(jié)點(diǎn)為 t = 2,則 v-s={3、4、5},s={1、2}; //4、借道t=2,所有t的相鄰點(diǎn),借道t;例如相鄰點(diǎn)3,則 a = dist[2] + maf[2][3]; b = dist[3]; //兩個(gè)取較小值,得a < b; 2-3為捷徑,則記錄下dist[3] = a;記錄下3的前驅(qū)點(diǎn) p[3] = 2; //經(jīng)過第4步,計(jì)算了2的相鄰點(diǎn),3、4; //5、比較v-s={3、4、5}的到源點(diǎn)的最近距離,即是 v-s={3、4、5}時(shí),執(zhí)行第3步,此時(shí)相當(dāng)于源點(diǎn)為2會(huì)再次得出最小 t //6、重復(fù) 3、4、5步*/ function Dijkstra(){ //初始化構(gòu)造一個(gè)集合,mapt[i][j]為點(diǎn)i到j(luò)的距離,不通的為無窮大 var mapt = [ [undefined,undefined,undefined,undefined,undefined,undefined], [undefined,Infinity,2,5,Infinity,Infinity], [undefined,Infinity,Infinity,2,6,Infinity], [undefined,Infinity,Infinity,Infinity,7,1], [undefined,Infinity,Infinity,2,Infinity,4], [undefined,Infinity,Infinity,Infinity,Infinity,Infinity], ]; var n = mapt.length - 1; //開始計(jì)算 this.dijkstra = function(u){ //u為源點(diǎn) var dist = []; //dist[i]為點(diǎn)i到y(tǒng)的最短距離 var p = []; //p[i] 為點(diǎn)i的前溯點(diǎn) var flag = []; //flag[i] 是否已經(jīng)加入 s集合 //初始化數(shù)據(jù) dist,p,flag for(var i = 1; i <= n; i++){ dist[i] = mapt[u][i]; //從源點(diǎn)到i的距離 if(dist[i] == Infinity){ //前溯點(diǎn)如果不通過為-1 p[i] = -1; }else{ p[i] = u; } flag[i] = false; //都沒有選中 } flag[u] = true; //選擇了源點(diǎn),s集合只有 u for(var i = 1; i <= n; i++){ var t = u; var temp = Infinity; for(var j = 1; j <= n ; j++){ //獲取dist里面,v-s集合的最短距離 if(!flag[j] && dist[j] <= temp){ temp = dist[j]; t = j; } } //查看是否找到最短的距離 if(t == u){ return { dist:dist, p:p }; } //找到了,將t加入集合 s flag[t] = true; for(var k = 1 ; k <= n; k++){ //以t為捷徑點(diǎn)(t為前溯點(diǎn)),尋找所有滿足條件的點(diǎn) if(!flag[k] && mapt[t][k] < Infinity ){ if(dist[k] > (dist[t] + mapt[t][k])){ dist[k] = dist[t] + mapt[t][k]; //源點(diǎn)到k的距離 > 源點(diǎn)到t的距離 + t到k的距離 p[k] = t; } } } } return { dist:dist, p:p } } this.getpath = function(u){ var process = this.dijkstra(u); var dist = process.dist; var p = process.p; for(var i = 1; i <= n; i++){ var start = i; var str = i; while(start != -1){ start = p[start]; //迭代出路徑 if(start != -1){ str = str + '、' + start; } } console.log(str); } } } var Dijk = new Dijkstra(); //console.log(Dijk.dijkstra(1)); console.log(Dijk.getpath(1));

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        js圖數(shù)據(jù)結(jié)構(gòu)處理 迪杰斯特拉算法代碼實(shí)例

        js圖數(shù)據(jù)結(jié)構(gòu)處理 迪杰斯特拉算法代碼實(shí)例:這篇文章主要介紹了js圖數(shù)據(jù)結(jié)構(gòu)處理 迪杰斯特拉算法代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下 /*//1、確定數(shù)據(jù)結(jié)構(gòu), mapf[i][j] 為點(diǎn)i到點(diǎn)j的距離 [ Infinity 2 5 Infi
        推薦度:
        標(biāo)簽: js 代碼 算法
        • 熱門焦點(diǎn)

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲黄色三级视频| 337p日本欧洲亚洲大胆精品555588 | 亚洲不卡中文字幕| 24小时免费看片| 中文字幕 亚洲 有码 在线| jjizz全部免费看片| 亚洲一区二区影视| 在线观看av永久免费| 亚洲人成网站999久久久综合| 四虎在线视频免费观看| 精品国产日韩亚洲一区91| 亚洲M码 欧洲S码SSS222| 一级做a爱过程免费视| 中文字幕在线亚洲精品| 久久九九全国免费| 亚洲视频免费在线播放| 成人看的午夜免费毛片| 婷婷国产偷v国产偷v亚洲| 亚洲区小说区图片区| 日本在线免费播放| 天天爽亚洲中文字幕| 日韩成人免费在线| 51午夜精品免费视频| 亚洲国产精品一区| 卡一卡二卡三在线入口免费| 日韩在线观看免费完整版视频| 亚洲精品乱码久久久久久| 精品福利一区二区三区免费视频 | 国产精品亚洲综合一区| 三年片在线观看免费| 亚洲国产精品综合久久网各| 国产一级淫片a免费播放口之| 99久久免费国产精品热| 亚洲国产日产无码精品| 国产一区二区三区免费看| 99久久国产精品免费一区二区| 亚洲激情视频图片| 国产亚洲精品资在线| 在线v片免费观看视频| 一区二区3区免费视频| 亚洲国产综合第一精品小说|