精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

人妻少妇精品无码专区| 精品人妻一区二区三区四区| av在线私库| 久久久蜜桃精品| 国产欧美久久久久久| 久久久国产精品黄毛片| 国产99精品| 欧美一级xxx| 精品久久久久久久免费人妻| 动漫一区在线| 久久久777精品电影网影网| 国产日韩在线一区| 日韩少妇高潮抽搐| 亚洲高清资源在线观看| 亚洲精品福利视频| 最新免费av网址| 欧美亚洲韩国| 亚洲午夜久久久久久久久电影院| 亚洲精品永久www嫩草| 免费看黄色一级视频| 日本不卡123| 97av在线播放| 免费网站看av| 欧美aaaa视频| 亚洲人永久免费| 国产视频精品视频| 国产一精品一av一免费爽爽| 91黄色在线观看| 免费在线观看亚洲视频| 午夜av在线免费观看| 国产精品视频一二| 欧美一级二级三级| 香蕉久久一区二区三区| 国产成人99久久亚洲综合精品| 国产精品久久久久不卡| 91九色丨porny丨肉丝| 激情综合网址| 欧美精品电影在线| 日韩欧美123区| 日韩激情图片| 综合久久五月天| 69精品无码成人久久久久久| 国产91久久精品一区二区| 亚洲精品大尺度| 国产xxxxxxxxx| www.神马久久| 亚洲成人精品久久| www.黄色网| 国产精品xxx在线观看| 日韩一级高清毛片| 国产人妖在线观看| 亚洲精品午夜| 精品国精品自拍自在线| 杨幂一区二区国产精品| 色播一区二区| bl视频在线免费观看| 日韩中文欧美在线| 国产91网红主播在线观看| 人人草在线观看| 日日摸夜夜添夜夜添国产精品 | 精品欧美一区二区三区久久久 | 成人av午夜影院| 国产成人免费观看| 成人毛片在线精品国产| 高清在线成人网| 国产三区精品| 九九热视频在线观看| 国产日产欧美一区二区视频| 欧美一区二区三区精美影视| a√资源在线| 中文字幕在线观看不卡视频| 热这里只有精品| 久久不射影院| 欧美日韩国产一区中文午夜| 日韩中文字幕组| 精品久久在线| 精品国产免费久久| 91中文字幕永久在线| 日本一区二区三区视频| 久久精品小视频| 九九热国产视频| 日韩成人精品视频| 成人欧美一区二区三区在线| 国产 欧美 自拍| 91欧美一区二区| 亚洲图片在线观看| 久草在线新免费首页资源站| 欧美性xxxxx极品| 亚洲图色中文字幕| 久久精品福利| 日韩在线观看网址| 日本在线免费观看| 久久精品国产秦先生| 91国产在线播放| 国产精品四虎| 亚洲成人综合网站| 亚洲欧美日韩一级| 国产精品18hdxxxⅹ在线| 夜夜嗨av色一区二区不卡| 玖玖爱这里只有精品| 日韩中文首页| 国产成人免费视频精品含羞草妖精| 国产日韩换脸av一区在线观看| 亚洲黄色精品视频| 中文字幕乱码久久午夜不卡| youjizz.com在线观看| 老司机2019福利精品视频导航| 91精选在线观看| 无码人妻aⅴ一区二区三区69岛| 欧美激情视频一区二区三区在线播放| 欧美在线观看网址综合| 999免费视频| 久久久亚洲国产美女国产盗摄 | 好看的日韩av电影| 国产精品久久久久久久久男 | 丰满白嫩尤物一区二区| 视频一区二区精品| 偷拍自拍在线看| 亚洲精品一区二区精华| 亚洲国产精品一区二区久久hs| 日韩视频在线一区二区三区 | 农村少妇一区二区三区四区五区 | 国产丝袜精品丝袜| 欧美日韩亚洲综合一区二区三区| 自拍视频一区二区| 欧美日韩三级| 成人午夜激情免费视频| 99re在线视频| 在线一区二区三区| 亚洲色图14p| 影音先锋在线一区| 成人在线免费观看一区| 国内外激情在线| 欧美日韩高清在线播放| 国产jjizz一区二区三区视频| 新狼窝色av性久久久久久| 国产一区免费在线| freexxx性亚洲精品| 日韩精品中文字幕一区二区三区 | 日本高清视频免费观看| 国产精品久久免费| 欧洲一级黄色片| 91高清国产视频| 国产免费黄色小视频| 亚洲午夜精品久久| 国产伦精品一区二区三区照片91| 国产精品一区二区久久久久| 国产精品1区2区在线观看 | 福利视频在线看| 精品成人久久av| 中文字幕一区二区三区乱码不卡| 国产精品hd| 国产伦精品一区二区三区免| 欧美xxxx性xxxxx高清| 日韩免费观看高清完整版 | 91在线直播| 欧美精品乱码久久久久久| 国产aaaaaaaaa| 国产综合久久久久影院| 好吊色视频988gao在线观看| 美女久久精品| 久久久久久久久国产精品| 老牛影视av牛牛影视av| 欧美日韩亚洲高清| 精品人妻无码一区二区三区| 奇米精品一区二区三区四区| 亚洲精品欧洲精品| 91麻豆精品| 高清一区二区三区四区五区| 深夜福利视频在线免费观看| 在线精品国精品国产尤物884a| 天堂av免费在线| 国产一区二区不卡| 黄色一级片在线看| 蜜桃一区二区三区| 国产精品亚洲网站| 欧美xxxx性xxxxx高清| 日韩精品欧美国产精品忘忧草| 91青青草视频| 亚洲激情第一区| 波多野结衣av在线免费观看| 麻豆久久久久久久| 99er在线视频| 奇米狠狠一区二区三区| 亚洲精品欧美一区二区三区| h片在线观看视频免费免费| 亚洲欧美综合精品久久成人| 91 中文字幕| 亚洲国产欧美另类丝袜| 国产精品无码一区二区三区免费| 男人天堂久久久| 欧美天堂一区二区三区| www.毛片com| 夜夜春很很躁夜夜躁| 欧美福利电影在线观看| 久久久久高清| 精品精品视频| 日本久久久久久久久久久| 成人ww免费完整版在线观看| 日韩精品免费观看| 国产一区二区视频免费观看| 激情成人在线视频| 亚洲综合图片一区| 91在线免费视频观看| 欧美日韩理论片| 快she精品国产999| 国产激情片在线观看| 红桃成人av在线播放| 狠狠色综合欧美激情| 亚洲网站三级| 国产精品久久久久久久久久久久久久| 精品精品导航| 久久精品一本久久99精品| 黄色大片在线免费观看| 亚洲成av人影院在线观看| 亚洲综合精品国产一区二区三区| 精品成人av一区| 国产精品日日夜夜| 亚洲手机成人高清视频| 永久免费观看片现看| 久久久久综合网| 中文字幕第3页| 国产成人自拍网| 天天摸天天舔天天操| 丝袜亚洲精品中文字幕一区| 国产精品专区在线| 自拍偷拍欧美| 一区视频二区视频| 精品视频日韩| 日本黄网免费一区二区精品| 欧美一区二区三区久久| 超碰97在线资源| 老司机亚洲精品一区二区| 国产日韩精品电影| 成人在线高清| 国产精品美女久久久久久免费 | 欧美性xxxx极品hd欧美风情| 久久久久久久久艹| 亚洲品质自拍视频| 日韩激情小视频| 亚洲天堂a在线| 男人操女人的视频网站| 综合久久综合久久| 午夜国产福利一区二区| 亚洲乱码中文字幕| 神马午夜精品91| 亚洲激情图片qvod| 欧美黄片一区二区三区| 亚洲综合在线观看视频| avove在线播放| 亚洲v中文字幕| 久久午夜免费视频| 欧美日韩在线视频一区| 国产91精品一区| 在线亚洲欧美专区二区| 中文字幕一区二区三区免费看| 欧美日韩一区高清| 一区二区www| 日韩欧美一二区| 日韩性xxxx| 亚洲精品自拍偷拍| 国产精品一区二区婷婷| 最新亚洲国产精品| 成人黄色在线电影| 国模极品一区二区三区| 卡通欧美亚洲| 91九色在线视频| jizz国产精品| 欧美一区二区三区在线播放| 日韩午夜电影网| 丰满人妻一区二区三区53号| 精品成人国产| 欧美婷婷精品激情| 国内精品伊人久久久久av一坑 | 国模极品一区二区三区| 成人小电影网站| 成人h片在线播放免费网站| 日韩精品中文字幕吗一区二区| 成人精品水蜜桃| 精品中文一区| 91制片厂免费观看| 亚洲美女91| 在线观看免费av网址| 国产suv一区二区三区88区| 久久久久久久久久久国产精品| 中文字幕乱码亚洲精品一区| 久久久久成人精品无码| 日韩欧美国产激情| 国产精品国产一区二区三区四区| 精品国产a毛片| 91欧美在线视频| 91国内免费在线视频| 99久久精品一区二区成人| 懂色一区二区三区av片| av中文一区| 国产精品www在线观看| 蜜桃av一区二区在线观看| av电影中文字幕| 国产精品欧美极品| 日韩精品手机在线| 欧美一区二区三区四区五区| 亚洲欧洲国产综合| 久久91亚洲人成电影网站 | 在线亚洲高清视频| 人人妻人人澡人人爽人人欧美一区 | 婷婷婷国产在线视频| 色偷偷9999www| xxxxxx欧美| 国产在线一区二区三区欧美| 91精品久久久久久久久久不卡| 国产一区二区三区精彩视频| 极品销魂美女一区二区三区| 少妇光屁股影院| 亚洲成人7777| 国产成人久久精品77777综合 | 日韩成人影音| 欧美性大战久久久久久久蜜臀| 中文字幕在线播出| 日韩风俗一区 二区| 99热国产在线| 成人av番号网| 欧美一区二区三区激情视频| av黄色在线网站| 国产成人精品www牛牛影视| 亚洲精品国产精品乱码在线观看| 日本高清成人免费播放| 香蕉视频黄色片| 久久人人爽人人爽人人片av高清| 国产精品一区二区三区在线免费观看| 九九久久成人| 精品福利在线视频| 国产a免费视频| 在线电影院国产精品| 国产天堂在线| 国产va免费精品高清在线观看| 欧美亚洲国产日韩| 日本中文字幕网址| 99视频一区二区| 欧美三级韩国三级日本三斤在线观看 | 国产亚洲日本欧美韩国| 一区二区三区四区日本视频| 精品一区在线播放| 亚洲少妇诱惑| 人人妻人人澡人人爽人人精品| 好吊成人免视频| 日韩欧美在线番号| 日韩av黄色在线观看| 国产一区二区三区四区大秀| 北条麻妃在线观看| 久久综合九色欧美综合狠狠| 国产suv精品一区二区33| 亚洲欧美日韩综合| 欧美成人影院| 亚洲一区三区电影在线观看| 美女视频一区二区三区| 亚洲伦理一区二区三区| 欧美一区二区美女| 另类视频在线| 欧美精品二区三区四区免费看视频 | 深夜福利国产精品| 亚洲在线资源| 男人添女人下部视频免费| 成人污视频在线观看| 日韩三级小视频| 国产亚洲免费的视频看| 激情久久一区二区| 男人日女人的bb| 成人av在线影院| 亚洲国产精品久久久久婷蜜芽| 国产精品久久久久av电视剧| 欧美在线播放一区| 免费亚洲电影在线| 久草视频手机在线| 欧美成人aa大片| 亚洲色图官网| 国产免费色视频| aaa亚洲精品一二三区| 天天爱天天做天天爽| 精品国产一区二区三区久久久| 视频欧美一区| 国产精品无码专区av在线播放| 一区在线播放视频| 亚洲国产精品久久久久久久| 青草成人免费视频| 久久久久久久久99精品大| 91精品又粗又猛又爽| 欧美亚洲高清一区| 一区二区三区伦理| 日本一区视频在线观看| 国产精品1区2区| 老熟妇一区二区三区| 欧美成人亚洲成人日韩成人| 午夜精品福利影院| 91欧美一区二区三区| 日韩欧美国产激情| 欧美bbbxxxxx| 在线视频不卡国产| av亚洲精华国产精华精| 一级片视频免费| 日本精品免费观看|