精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

七夕都怎么找和女神的最近距離?

開發 前端
對于Dijkstra算法,很多人可能感覺熟悉而又陌生,可能大部分人比較了解bfs和dfs,而對dijkstra和floyd算法可能知道大概是圖論中的某個算法,但是可能不清楚其中的作用和原理,又或許,你曾經感覺它很難,那么,這個時候正適合你重新認識它。

[[417618]]

本文轉載自微信公眾號「bigsai」,作者bigsai。轉載本文請聯系程序員bigsai公眾號。

前言

大家好,我是bigsai,今天給大家講講Dijkstra算法,下次拿著這個算法找女神少繞路,有女朋友的可以試試行不行的通。

對于Dijkstra算法,很多人可能感覺熟悉而又陌生,可能大部分人比較了解bfs和dfs,而對dijkstra和floyd算法可能知道大概是圖論中的某個算法,但是可能不清楚其中的作用和原理,又或許,你曾經感覺它很難,那么,這個時候正適合你重新認識它。

Dijkstra是啥?

其實Dijkstra(迪科斯徹)是一個人,被稱為結構程序設計之父,他提出goto有害論、信號量、原語等,創造解決銀行家算法、哲學家進餐問題、Dijkstra算法等等,在1972年獲得圖靈獎(計算機界諾?爾獎),今天咱們就學習Dijkstra算法。

Dijkstra算法干啥的?

Dijkstra是用來求單源最短路徑的,也就是在一個圖中,從一個點計算到達其他點的最短距離,再形象一點,就是比如七夕你捧著鮮花去找女神,有點距離,在不堵?沒紅綠燈情況下怎么找到一條最短的路徑:

這不是一眼就能看出來嘛!還要什么算法?enum,如果路徑很多像這樣呢?

就拿上圖來說,如果各條路?度都已知,那么可以使用dijkstra算法計算你到圖中所有節點的最短距離(不過你想要的就是和女神的距離最近)。不過這個單源最短路徑你可能產生一些疑惑:

單源什么意思?

一個源頭,從一個頂點出發,Dijkstra算法只能求一個頂點到其他點的最短距離而不能任意兩點。

和bfs求的最短路徑有什么區別?

bfs求的與其說是路徑,不如說是次數。因為bfs他是按照隊列一次一次進行加入相鄰的點,而兩點之間沒有權值或者權值相等(代價相同)。bfs求最短路徑一般無權值路徑(只代表聯通性)或者權值相等,僅僅用次數就能表示路徑?短的情況,最典型的就是迷宮問題bfs搜索移動一次路徑為1就加一次。

Dijkstra在處理具體實例的應用還是很多的,因為具體的問題其實帶權更多一些。比如一個城市有多個鄉鎮,鄉鎮可能有道路,也可能沒有,整個鄉鎮需要聯通,如果想計算每個鄉鎮到a鎮的最短路徑,那么Dijkstra就派上了用場。

算法分析

對于一個算法,首先要理解它的運行流程,對于Dijkstra算法而言,首先要知道其適用條件和環境:

一個連通圖,若干節點(節點可能有數值),但是路徑一定有權值并且不能為負(否則Dijkstra就不適用)。

Dijkstra的核心思想是貪心算法的思想,那什么是貪心呢?

貪心算法(又稱貪婪算法)是指,在對問題求解時,總是做出在當前看來是最好的選擇。也就是說,不從整體最優上加以考慮,他所

做出的是在某種意義上的局部最優解。

貪心算法不是對所有問題都能得到整體最優解,關鍵是貪心策略的選擇,選擇的貪心策略必須具備無后效性,即某個狀態以前的過程不會影響以后的狀態,只與當前狀態有關。

對于貪心算法,在很多情況都能用到,下面舉2個不恰當的例子!

1 .上學時,每周只能帶5個蘋果,你想帶最多,那么選五個蘋果你每次都選最大的那個五次下來你就選的最重的那個。

2 .錢幣找零,指定幣值和相應的數量,用最少的數量湊?某金額。利用貪心策略,優先選擇面值大的錢幣,直到湊?總金額。

3 .活動選擇問題,知道多個活動開始時間、結束時間,想在一個時間內參加最多活動,按照活動結束時間遞增排序即可。

上面的策略雖然沒有很強的理論數學依據,或者不太好說明,更像一種事實規律經驗,并且對于貪心問題具體處理上大部分都需要排序,還可能會遇到規則繁雜的類排序。那么我們的Dijkstra是如何貪心的呢?對于一個點,求圖中所有點的最短路徑,如果沒有正確的方法胡亂想確實很難算出來,并且如果暴力匹配復雜度呈指數級上升不適合解決實際問題。那么我們該怎么想呢?

首先,Dijkstra算法實現上需要這些前提:

  • Dijkstra處理的是帶正權值的有權圖,那么就需要一個二維數組(如果空間大用List數組)存儲各個點到點之間邊的權值大小 (鄰接矩陣或者鄰接表存儲) ,各個點距離初始化為無窮大。
  • 需要一個boolean數組判斷哪些點已經確定最短?度路徑,那些點沒有確定。用一個 int數組記錄距離(在算法執行過程有些點最短路徑可能被多次更新)。
  • 需要優先隊列加入已經確定點的周圍點。每次拋出從起點最短路徑的那個點,直到所有點路徑確定最短為止。

簡單的概括流程為:

第一步一般從選定點開始拋入優先隊列(路徑一般為0),boolean數組標記0的位置(最短為0) , 然后0周圍連通的點拋入優先隊列中(可能是node類),并把各個點的距離記錄到對應數組內,此時周圍點只是等待調度可能是最短距離,也可能被更新。(如果小于就更新,大于就不動,初始第一次是無窮肯定會更新),第一次就結束了。

從等待調度隊列中拋出距離最近的那個點B(第一次就是0周圍鄰居)。這個點距離一定是最近可以確定的(所有權值都是正的,點的距離只能越來越?,而它的路徑是所有可能中的最小的)標記這個點為true表示已經確定,并且將這個點的鄰居加入隊列(下一次等待調度點為隊列中原有的和這個點周圍未確定的鄰居),并同時判斷是否更新B點鄰居?度,如果小于則更新!

重復二的操作,直到所有點都確定。

算法實現

代碼實現上面有些繁瑣,但是也不是很復雜,這里給個Dijkstra算法實現代碼:

  1. package 圖論; 
  2.  
  3. import java.util.ArrayDeque; 
  4. import java.util.Comparator; 
  5. import java.util.PriorityQueue; 
  6. import java.util.Queue; 
  7. import java.util.Scanner; 
  8.  
  9. public class dijkstra { 
  10.     static class node 
  11.     { 
  12.         int x; //節點編號 
  13.         int lenth;//長度 
  14.         public node(int x,int lenth) { 
  15.             this.x=x; 
  16.             this.lenth=lenth; 
  17.         } 
  18.     } 
  19.  
  20.     public static void main(String[] args) { 
  21.  
  22.         int[][] map = new int[6][6];//記錄權值,順便記錄鏈接情況,可以考慮附加鄰接表 
  23.         initmap(map);//初始化 
  24.         boolean bool[]=new boolean[6];//判斷是否已經確定 
  25.         int len[]=new int[6];//長度 
  26.         for(int i=0;i<6;i++) 
  27.         { 
  28.             len[i]=Integer.MAX_VALUE; 
  29.         } 
  30.         Queue<node>q1=new PriorityQueue<node>(com); 
  31.         len[0]=0;//從0這個點開始 
  32.         q1.add(new node(0, 0)); 
  33.         int count=0;//計算執行了幾次dijkstra 
  34.         while (!q1.isEmpty()) { 
  35.             node t1=q1.poll(); 
  36.             int index=t1.x;//節點編號 
  37.             int length=t1.lenth;//節點當前點距離 
  38.             bool[index]=true;//拋出的點確定 
  39.             count++;//其實執行了6次就可以確定就不需要繼續執行了  這句可有可無,有了減少計算次數 
  40.             for(int i=0;i<map[index].length;i++) 
  41.             { 
  42.                 if(map[index][i]>0&&!bool[i]) 
  43.                 { 
  44.                     node node=new node(i, length+map[index][i]); 
  45.                     if(len[i]>node.lenth)//需要更新節點的時候更新節點并加入隊列 
  46.                     { 
  47.                         len[i]=node.lenth; 
  48.                         q1.add(node); 
  49.                     } 
  50.                 } 
  51.             } 
  52.         }        
  53.         for(int i=0;i<6;i++) 
  54.         { 
  55.             System.out.println(len[i]); 
  56.         } 
  57.     } 
  58.     static Comparator<node>com=new Comparator<node>() { 
  59.  
  60.         public int compare(node o1, node o2) { 
  61.             return o1.lenth-o2.lenth; 
  62.         } 
  63.     }; 
  64.  
  65.     private static void initmap(int[][] map) { 
  66.         map[0][1]=2;map[0][2]=3;map[0][3]=6; 
  67.         map[1][0]=2;map[1][4]=4;map[1][5]=6; 
  68.         map[2][0]=3;map[2][3]=2; 
  69.         map[3][0]=6;map[3][2]=2;map[3][4]=1;map[3][5]=3; 
  70.         map[4][1]=4;map[4][3]=1; 
  71.         map[5][1]=6;map[5][3]=3;     
  72.     } 

當然,dijkstra算法比較靈活,實現方式也可能有點區別,但是思想是不變的:一個貪心思路。dijkstra執行一次就能夠確定一個點,所以只需要執行點的總和次數即可完成整個算法。

一句話概況一下,就是從一個點開始找周圍最短的一個,更新相應數據,再找已經確定直接連接的第二個最短點、第三個一直到所有點確定,dijkstra算法就完成了。

 

責任編輯:武曉燕 來源: bigsai
相關推薦

2023-11-27 17:03:45

syncGo

2022-02-28 19:32:27

I/O磁盤

2015-01-19 09:13:39

CloudStack云計算架構虛擬機管理

2011-03-02 15:10:43

國產數據庫

2010-10-07 20:57:37

2013-04-23 09:15:59

Windows 8.1

2015-06-04 16:35:00

2023-08-22 21:39:25

2011-05-06 15:28:00

SMB數據中心

2009-09-29 11:23:53

互聯網

2021-08-23 10:49:02

鴻蒙HarmonyOS應用

2021-08-20 14:26:17

鴻蒙HarmonyOS應用

2013-07-16 14:36:43

天河2號超級計算機國防科技大學

2018-03-05 08:56:10

物聯網無線通信終端設備

2019-04-30 10:08:22

Windows 功能系統

2023-11-29 11:28:21

智能視覺

2022-03-21 18:27:38

Linux計算機函數

2017-09-19 12:08:13

Google

2012-08-24 10:49:51

備份恢復

2021-08-23 11:03:54

鴻蒙HarmonyOS應用
點贊
收藏

51CTO技術棧公眾號

国产xxx69麻豆国语对白| 精品成人一区二区三区| 26uuu成人| 亚洲精品字幕在线| 亚洲综合激情| xvideos亚洲| 中文字幕一区在线观看| 亚洲v日韩v综合v精品v| 天天干在线播放| 久久精品一区二区不卡| 国产丝袜一区二区三区免费视频| 免费av不卡在线| 亚洲午夜天堂| 一区二区日韩av| 亚洲欧洲一区二区福利| 日韩一级在线播放| 精品亚洲porn| 国产成人一区二区在线| 精品无码免费视频| 亚洲成人精品| 国产一区二区三区毛片| 800av在线播放| 久久久久久亚洲精品美女| 在线亚洲欧美专区二区| 18禁网站免费无遮挡无码中文| 日本成人在线播放| 久久一二三国产| 国产精品免费在线| aa视频在线免费观看| 青青草成人在线观看| 欧洲精品毛片网站| 国产无遮挡又黄又爽| 亚洲影视一区二区三区| 中文字幕久久久| 国产熟妇久久777777| 美女网站色精品尤物极品姐弟| 欧美一区二区三区公司| 不卡的av中文字幕| 久久久成人av毛片免费观看| 欧美色视频日本版| 欧美丰满熟妇bbbbbb百度| 欧洲在线视频| 亚洲图片欧美综合| www.夜夜爱| 亚洲wwwww| 亚洲男人天堂av| 亚洲免费视频播放| 成人福利片网站| 亚洲免费观看高清| 老司机午夜网站| 最新超碰在线| 亚洲国产美女搞黄色| 丁香六月激情网| 欧美xxxx少妇| 亚洲成人在线网站| 少妇高潮毛片色欲ava片| heyzo在线| 福利视频导航一区| 激情视频综合网| 成人国产精品入口免费视频| 欧美日韩三级一区| 色偷偷中文字幕| 136福利精品导航| 亚洲黄页视频免费观看| a级在线观看视频| 激情五月色综合国产精品| 一区二区av在线| 福利视频第一页| 你懂的国产精品| 久久久久久网址| 亚洲天堂一区在线| 日本美女一区二区| 92国产精品久久久久首页| 国精品人妻无码一区二区三区喝尿| 成人在线一区二区三区| 免费日韩av电影| 男人天堂久久久| 一区二区三区91| 国产偷人视频免费| 只有精品亚洲| 日韩va亚洲va欧洲va国产| 久久久久久国产免费a片| 国产精品久久久久久久免费观看| 欧美大片在线看| 成年人免费高清视频| 麻豆免费精品视频| 国产精品日韩二区| 二区三区在线播放| 一区二区三区**美女毛片| 日本免费黄视频| 亚洲精品69| 亚洲国产日韩精品在线| 黄色片在线观看免费| 你懂的视频一区二区| 国产成人精品电影久久久| 国产乱人乱偷精品视频a人人澡| eeuss影院一区二区三区| 亚洲精品电影在线一区| 国产在线xxx| 欧美日韩你懂得| 亚洲AV无码国产精品| 偷拍欧美精品| 国产91在线播放| 国产高清不卡视频| 国产精品嫩草99a| av高清在线免费观看| 色综合.com| 亚洲欧美日韩爽爽影院| 久久久综合久久久| 另类中文字幕网| 欧美日本韩国一区二区三区| 91黄色在线| 欧美性生活久久| 中文字幕影片免费在线观看| 中文无码久久精品| 国产精品自拍小视频| 深夜福利免费在线观看| 亚洲福利一区二区| 美女被艹视频网站| 天堂网在线观看国产精品| 青青草原一区二区| 日批视频免费播放| 亚洲精品国产成人久久av盗摄| 一区二区xxx| 少妇精品久久久一区二区| 亚州精品天堂中文字幕| 亚洲av永久无码国产精品久久 | 成人午夜小视频| 好男人免费精品视频| 天天操天天色综合| 日本一级片在线播放| 国产精品啊v在线| 亚洲专区中文字幕| 99视频免费在线观看| 欧美日本国产视频| 少妇高潮在线观看| 久色婷婷小香蕉久久| 亚洲无玛一区| 日韩免费在线电影| 日韩在线精品一区| 国产精品久久久久久久久毛片 | 原创国产精品91| 香蕉污视频在线观看| 国产亚洲午夜高清国产拍精品 | 亚洲天堂av电影| 伊人中文字幕在线观看| 久久久久久9999| 久久黄色免费看| 日本女优一区| 成人激情视频小说免费下载| 18加网站在线| 亚洲精品一区二区三区在线观看| 久久久综合久久| 91免费在线播放| 青青青国产在线视频| sdde在线播放一区二区| 国产精品亚洲第一区| 免费成人黄色| 日韩欧美一卡二卡| 91porny在线| 国产亚洲自拍一区| 亚洲色图偷拍视频| 一区精品久久| 久久久久久久久一区| 69堂免费精品视频在线播放| 色偷偷偷综合中文字幕;dd| 国产乱色精品成人免费视频| 亚洲国产欧美在线人成| 性欧美13一14内谢| 韩国成人在线视频| 青青草国产精品视频| 国产99久久精品一区二区300| 国产精品午夜一区二区欲梦| 污污影院在线观看| 亚洲美女性视频| 亚洲综合精品国产一区二区三区| 一区二区国产视频| 97超碰在线资源| 精品一区二区三区免费观看| 欧美精品久久久久久久自慰| 国产成人精品999在线观看| 国产专区欧美专区| 多野结衣av一区| 日韩在线不卡视频| 少妇高潮一区二区三区99小说| 欧洲人成人精品| 18精品爽视频在线观看| 国产日韩欧美精品电影三级在线| 熟妇无码乱子成人精品| 天堂一区二区在线免费观看| 日本三级中文字幕在线观看| 欧美热在线视频精品999| 51成人做爰www免费看网站| 小草在线视频免费播放| 久久成年人免费电影| 欧美日韩视频精品二区| 欧美一级国产精品| 中文字幕乱码在线观看| 性感美女极品91精品| 国产精品嫩草影院俄罗斯| 91视频免费看| avtt中文字幕| 精品一区二区三区的国产在线播放| 国产原创popny丨九色 | 欧美日韩国产二区| 高清日韩av电影| 日韩av影视综合网| 精品国产av一区二区| 欧美日韩五月天| 亚洲午夜18毛片在线看| 一区二区三区在线视频观看| 俄罗斯毛片基地| 91麻豆精东视频| 伊人久久一区二区三区| 国产一区三区三区| 特级丰满少妇一级| 国产模特精品视频久久久久| 国产www免费| 欧美黄免费看| av磁力番号网| 久久中文视频| 亚洲欧洲中文| 精品国产乱码久久久| 久久亚洲综合网| 欧美绝顶高潮抽搐喷水合集| 国产成人精品日本亚洲11 | 噜噜噜噜噜久久久久久91| 国产厕拍一区| 国产一区二区三区色淫影院| 亚洲综合网站| 97人人澡人人爽| 久久99精品久久久野外观看| 成人观看高清在线观看免费| 久久亚洲精品人成综合网| 国产精品电影网| 78精品国产综合久久香蕉| 国产精品视频一| 美女视频一区| 成人黄色午夜影院| 青草伊人久久| 国产成人精品免费视频大全最热| 福利电影一区 | 精品色999| 视频一区二区三区在线观看| 精品国产一区二区三区香蕉沈先生| 蜜桃麻豆91| 国产一区二区三区探花| 少妇特黄a一区二区三区| 日韩精品免费一区二区在线观看| 午夜午夜精品一区二区三区文| 日韩在线观看| 黄瓜视频免费观看在线观看www| 永久亚洲成a人片777777| 草草草视频在线观看| 亚洲福利一区| 欧美一级黄色影院| 精品一区中文字幕| 亚洲妇女无套内射精| 成人av在线一区二区| 精品人妻一区二区三区香蕉 | 香蕉视频在线网址| 亚洲一区二区三区无吗| 日韩伦理在线免费观看| 免费日韩一区二区| 亚洲欧美久久久久| 国产成人综合网| 亚洲欧美日韩偷拍| 国产清纯美女被跳蛋高潮一区二区久久w | www.日本在线视频| 性欧美长视频| 日本超碰在线观看| 高清shemale亚洲人妖| 九色porny自拍视频| 亚洲欧美在线高清| 日韩精品成人一区| 欧美亚洲动漫另类| www.av导航| 亚洲欧美制服第一页| 国产在线激情| 69av在线播放| 亚洲欧洲一二区| 精品一区久久| 97人人精品| 九九九九免费视频| 精品一区二区三区视频在线观看 | 国产91ⅴ在线精品免费观看| 欧美日韩五区| 国产精品久久精品国产| 欧美熟乱15p| 丁香婷婷综合激情| 老司机午夜精品99久久| 在线观看国产免费视频| 综合久久一区二区三区| 国产成人无码精品亚洲| 337p亚洲精品色噜噜| 青青青免费视频在线2| 欧美大秀在线观看| 久久精品xxxxx| 欧美另类一区| 精品91在线| 欧美视频在线一区| 亚洲乱熟女一区二区| 色哟哟入口国产精品| 丝袜诱惑一区二区| 91在线精品观看| 四虎8848精品成人免费网站| 国产精品沙发午睡系列| 国产丶欧美丶日本不卡视频| 欧美激情视频二区| 欧美性xxxxxxxxx| 国模私拍视频在线| 欧美另类xxx| 99国内精品久久久久| 人禽交欧美网站免费| 国产欧美不卡| 欧美xxxxx少妇| 亚洲欧美另类在线| 一区二区三区黄色片| 亚洲最新av网址| 欧美黄色激情视频| a91a精品视频在线观看| 中文字幕成人免费视频| 中文字幕av一区二区三区免费看| 中文字幕第15页| 亚洲国产精品资源| 久草在线视频福利| 国产成人女人毛片视频在线| 欧美成人嫩草网站| 红桃视频一区二区三区免费| 国产精品伦一区| 在线观看日批视频| 在线日韩av观看| 国产精品天堂蜜av在线播放| 日本在线播放不卡| 秋霞国产午夜精品免费视频| 成人无码av片在线观看| 欧美性受xxxx黑人xyx性爽| 精品久久久久一区二区三区 | 亚洲区免费影片| 欧美magnet| 日韩欧美亚洲v片| 蜜桃视频第一区免费观看| 貂蝉被到爽流白浆在线观看| 欧美日本一区二区在线观看| 日本在线观看视频| 成人黄色短视频在线观看| 香蕉av一区二区| 国产中文字幕日韩| 欧美xxav| 亚洲一级片免费观看| 亚洲毛片av在线| 午夜美女福利视频| 国内揄拍国内精品少妇国语| 欧美大奶一区二区| 国产福利视频在线播放| 国产欧美日韩不卡免费| 亚洲怡红院av| 麻豆国产va免费精品高清在线| 亚洲精品一区二区三区中文字幕| 亚洲人成无码网站久久99热国产| 91网址在线看| 中文字幕视频二区| 操91在线视频| 欧美一区 二区| www.99av.com| 一区二区三区在线看| 日本黄色大片视频| 国产精品久久久av| 一区二区三区在线| 欧美精品欧美极品欧美激情| 欧美性感一区二区三区| 亚洲精品白浆| 久久日韩精品| 另类小说综合欧美亚洲| 国产精品成人aaaa在线| 亚洲天堂影视av| 秋霞一区二区| 免费看a级黄色片| 亚洲精品美腿丝袜| 精品影院一区| 亚洲综合日韩在线| 男人的天堂亚洲在线| 永久免费看片直接| 亚洲精品午夜精品| 精品入口麻豆88视频| www黄色在线| 亚洲毛片av在线| 成年人在线观看| 国产乱码精品一区二区三区不卡| 日韩av一二三| 日韩美女一级片| 日韩一区二区久久久| 欧美精品国产白浆久久久久| 亚洲第一成肉网| 色诱亚洲精品久久久久久| 性爱视频在线播放| 亚州欧美一区三区三区在线| caoporm超碰国产精品| 国产又粗又长又大视频| 欧美在线视频a|