一区二区免费_精品综合久久88少妇激情_2019中文字幕在线电影免费_成人影院在线播放

全球領(lǐng)先的云管理服務(wù)提供商

思普智云的管理團(tuán)隊(duì)都對(duì)云有深刻的理解,從搭建到運(yùn)營(yíng)和咨詢,團(tuán)隊(duì)成員分工明確,始終致力于為客戶提供專(zhuān)業(yè)的技術(shù)支持和服務(wù)。

漫畫(huà):圖的 “最短路徑” 問(wèn)題 | 技術(shù)頭條

發(fā)布時(shí)間:2019-04-12 02:14:07

技術(shù)頭條: 干貨、簡(jiǎn)潔、多維全面。更多云計(jì)算精華知識(shí)盡在眼前,get要點(diǎn)、solve難題,統(tǒng)統(tǒng)不在話下!

作者:蠢萌的小灰

轉(zhuǎn)自:程序員小灰

—————? 第二天? —————

如何遍歷呢?

第一層,遍歷頂點(diǎn)A:

第二層, 遍歷A的鄰接頂點(diǎn)B和C:

第三層,遍歷頂點(diǎn)B的鄰接頂點(diǎn)D、E,遍歷頂點(diǎn)C的鄰接頂點(diǎn)F:

第四層, 遍歷頂點(diǎn)E的鄰接頂點(diǎn)G,也就是目標(biāo)節(jié)點(diǎn):

由此得出,圖中頂點(diǎn)A到G的(第一條)最短路徑是A-B-E-G:

換句話說(shuō),就是尋找從A到G之間,權(quán)值之和最小的路徑。

————————————

究竟什么是迪杰斯特拉算法?它是如何尋找圖中頂點(diǎn)的最短路徑呢?

這個(gè)算法的本質(zhì),是不斷刷新起點(diǎn)與其他各個(gè)頂點(diǎn)之間的?“距離表”。

讓我們來(lái)演示一下 迪杰斯特拉的詳細(xì)過(guò)程:

第1步,創(chuàng)建距離表。表中的Key是頂點(diǎn)名稱(chēng),Value是 從起點(diǎn)A到對(duì)應(yīng)頂點(diǎn)的已知最短距離 。但是,一開(kāi)始我們并不知道A到其他頂點(diǎn)的最短距離是多少,Value默認(rèn)是無(wú)限大:

第2步,遍歷起點(diǎn)A,找到起點(diǎn)A的鄰接頂點(diǎn)B和C。從A到B的距離是5,從A到C的距離是2。把這一信息刷新到距離表當(dāng)中:

第3步,從距離表中找到從A出發(fā)距離最短的點(diǎn),也就是頂點(diǎn)C。

第4步,遍歷頂點(diǎn)C,找到頂點(diǎn)C的鄰接頂點(diǎn)D和F(A已經(jīng)遍歷過(guò),不需要考慮)。從C到D的距離是6,所以A到D的距離是2+6=8;從C到F的距離是8,所以從A到F的距離是2+8=10。把這一信息刷新到表中:

接下來(lái)重復(fù)第3步、第4步所做的操作:

第5步,也就是第3步的重復(fù),從距離表中找到從A出發(fā)距離最短的點(diǎn) (C已經(jīng)遍歷過(guò),不需要考慮) ,也就是頂點(diǎn)B。

第6步, 也就是第4步的重復(fù), 遍歷頂點(diǎn)B,找到頂點(diǎn)B的鄰接頂點(diǎn)D和E(A已經(jīng)遍歷過(guò),不需要考慮)。從B到D的距離是1,所以A到D的距離是5+1=6, 小于距離表中的8 ;從B到E的距離是6,所以從A到E的距離是5+6=11。把這一信息刷新到表中:

(在第6步,A到D的距離從8刷新到6,可以看出距離表所發(fā)揮的作用。距離表通過(guò)迭代刷新,用新路徑長(zhǎng)度取代舊路徑長(zhǎng)度,最終可以得到從起點(diǎn)到其他頂點(diǎn)的最短距離)

第7步, 從距離表中找到從A出發(fā)距離最短的點(diǎn) (B和C不用考慮) ,也就是頂點(diǎn)D。

第8步,遍歷頂點(diǎn)D,找到頂點(diǎn)D的鄰接頂點(diǎn)E和F。從D到E的距離是1,所以A到E的距離是6+1=7, 小于距離表中的11 ;從D到F的距離是2,所以從A到F的距離是6+2=8 小于距離表中的10 。把這一信息刷新到表中:

第9步,從距離表中找到從A出發(fā)距離最短的點(diǎn),也就是頂點(diǎn)E。

第10步,遍歷頂點(diǎn)E,找到頂點(diǎn)E的鄰接頂點(diǎn)G。從E到G的距離是7,所以A到G的距離是7+7=14。把這一信息刷新到表中:

第11步,從距離表中找到從A出發(fā)距離最短的點(diǎn),也就是頂點(diǎn)F。

第10步,遍歷頂點(diǎn)F,找到頂點(diǎn)F的鄰接頂點(diǎn)G。從F到G的距離是3,所以A到G的距離是8+3=11, 小于距離表中的14 。把這一信息刷新到表中:

就這樣,除終點(diǎn)以外的全部頂點(diǎn)都已經(jīng)遍歷完畢,距離表中存儲(chǔ)的是從起點(diǎn)A到所有頂點(diǎn)的最短距離。顯然,從A到G的最短距離是11。(路徑:A-B-D-F-G)

按照上面的思路,我們來(lái)看一下代碼實(shí)現(xiàn):

  1. /**

  2. * Dijkstra最短路徑算法

  3. */

  4. publicstaticMap<Integer,Integer> dijkstra(Graph graph,int startIndex){

  5. //創(chuàng)建距離表,存儲(chǔ)從起點(diǎn)到每一個(gè)頂點(diǎn)的臨時(shí)距離

  6. Map<Integer,Integer> distanceMap =newHashMap<Integer,Integer>();

  7. //記錄遍歷過(guò)的頂點(diǎn)

  8. Set<Integer> accessedSet =newHashSet<Integer>();

  9. //圖的頂點(diǎn)數(shù)量

  10. int size = graph.vertexes.length;

  11. //初始化最短路徑表,到達(dá)每個(gè)頂點(diǎn)的路徑代價(jià)默認(rèn)為無(wú)窮大

  12. for(int i=1; i<size; i++){

  13. distanceMap.put(i,Integer.MAX_VALUE);

  14. }

  15. //遍歷起點(diǎn),刷新距離表

  16. accessedSet.add(0);

  17. List<Edge> edgesFromStart = graph.adj[startIndex];

  18. for(Edge edge : edgesFromStart)

  19. {

  20. distanceMap.put(edge.index, edge.weight);

  21. }

  22. //主循環(huán),重復(fù) 遍歷最短距離頂點(diǎn)和刷新距離表 的操作

  23. for(int i=1; i<size; i++)

  24. {

  25. //尋找最短距離頂點(diǎn)

  26. int minDistanceFromStart =Integer.MAX_VALUE;

  27. int minDistanceIndex =-1;

  28. for(int j=1; j<size; j++)

  29. {

  30. if(!accessedSet.contains(j)&& distanceMap.get(j)< minDistanceFromStart)

  31. {

  32. minDistanceFromStart = distanceMap.get(j);

  33. minDistanceIndex = j;

  34. }

  35. }

  36. if(minDistanceIndex ==-1){

  37. break;

  38. }

  39. //遍歷頂點(diǎn),刷新距離表

  40. accessedSet.add(minDistanceIndex);

  41. for(Edge edge : graph.adj[minDistanceIndex])

  42. {

  43. if(accessedSet.contains(edge.index)){

  44. continue;

  45. }

  46. int weight = edge.weight;

  47. int preDistance = distanceMap.get(edge.index);

  48. if(weight !=Integer.MAX_VALUE &&(minDistanceFromStart+ weight < preDistance))

  49. {

  50. distanceMap.put(edge.index, minDistanceFromStart + weight);

  51. }

  52. }

  53. }

  54. return distanceMap;

  55. }

  56. publicstaticvoid main(String[] args){

  57. Graph graph =newGraph(7);

  58. initGraph(graph);

  59. Map<Integer,Integer> distanceMap = dijkstra(graph,0);

  60. int distance = distanceMap.get(6);

  61. System.out.println(distance);

  62. }

  63. /**

  64. * 圖的頂點(diǎn)

  65. */

  66. privatestaticclassVertex{

  67. String data;

  68. Vertex(String data){

  69. this.data = data;

  70. }

  71. }

  72. /**

  73. * 圖的邊

  74. */

  75. privatestaticclassEdge{

  76. int index;

  77. int weight;

  78. Edge(int index,int weight){

  79. this.index = index;

  80. this.weight = weight;

  81. }

  82. }

  83. /**

  84. * 圖

  85. */

  86. privatestaticclassGraph{

  87. privateVertex[] vertexes;

  88. privateLinkedList<Edge> adj[];

  89. Graph(int size){

  90. //初始化頂點(diǎn)和鄰接矩陣

  91. vertexes =newVertex[size];

  92. adj =newLinkedList[size];

  93. for(int i=0; i<adj.length; i++){

  94. adj[i]=newLinkedList<Edge>();

  95. }

  96. }

  97. }

  98. privatestaticvoid initGraph(Graph graph){

  99. graph.vertexes[0]=newVertex("A");

  100. graph.vertexes[1]=newVertex("B");

  101. graph.vertexes[2]=newVertex("C");

  102. graph.vertexes[3]=newVertex("D");

  103. graph.vertexes[4]=newVertex("E");

  104. graph.vertexes[5]=newVertex("F");

  105. graph.vertexes[6]=newVertex("G");

  106. graph.adj[0].add(newEdge(1,5));

  107. graph.adj[0].add(newEdge(2,2));

  108. graph.adj[1].add(newEdge(0,5));

  109. graph.adj[1].add(newEdge(3,1));

  110. graph.adj[1].add(newEdge(4,6));

  111. graph.adj[2].add(newEdge(0,2));

  112. graph.adj[2].add(newEdge(3,6));

  113. graph.adj[2].add(newEdge(5,8));

  114. graph.adj[3].add(newEdge(1,1));

  115. graph.adj[3].add(newEdge(2,6));

  116. graph.adj[3].add(newEdge(4,1));

  117. graph.adj[3].add(newEdge(5,2));

  118. graph.adj[4].add(newEdge(1,6));

  119. graph.adj[4].add(newEdge(3,1));

  120. graph.adj[4].add(newEdge(6,7));

  121. graph.adj[5].add(newEdge(2,8));

  122. graph.adj[5].add(newEdge(3,2));

  123. graph.adj[5].add(newEdge(6,3));

  124. graph.adj[6].add(newEdge(4,7));

  125. graph.adj[6].add(newEdge(5,3));

  126. }

福利

掃描添加小編微信,備注“ 姓名+公司職位 ”,加入【 云計(jì)算學(xué)習(xí)交流群 】,和志同道合的朋友們共同打卡學(xué)習(xí)!

推薦閱讀:

  • 為什么給黑洞拍照需要這么長(zhǎng)時(shí)間?

  • V神玩起freestyle! 5位以太坊核心大咖在悉尼的演講精華全在這了! |?直擊EDCON

  • “重構(gòu)”黑洞: 26歲MIT研究生的新算法?|?人物志

  • 零編程基礎(chǔ)的?15?歲少年,僅用?9?個(gè)月開(kāi)發(fā)了?9?款?App? !

  • 京東“地震”

  • 程序員?996?再上熱搜,黑名單增至?84?家!

真香,朕在看了!
一区二区免费_精品综合久久88少妇激情_2019中文字幕在线电影免费_成人影院在线播放
亚洲毛片av在线| 欧美午夜电影完整版| 欧美福利在线| 亚洲第一主播视频| 欧美11—12娇小xxxx| 在线观看成人一级片| 久久久久久久网站| 亚洲高清在线| 欧美日韩亚洲激情| 午夜精品一区二区三区四区| 国产一区二区精品丝袜| 久久人人97超碰精品888 | 99re在线精品| 欧美日韩日本国产亚洲在线| 亚洲女同同性videoxma| 国内精品视频久久| 欧美另类变人与禽xxxxx| 亚洲欧美中文另类| 在线精品国产成人综合| 欧美精品尤物在线| 欧美一区二区三区四区视频| 91久久精品网| 国产精品日韩欧美综合| 久热精品在线视频| 中国av一区| 在线播放亚洲一区| 国产精品成人一区| 免费在线看一区| 亚洲主播在线观看| 国产专区综合网| 欧美极品一区二区三区| 久久爱www久久做| 一区二区三区产品免费精品久久75 | 亚洲一区美女视频在线观看免费| 国产婷婷97碰碰久久人人蜜臀| 免费亚洲电影在线| 欧美影片第一页| 在线综合亚洲欧美在线视频| 亚洲大片av| 国内成+人亚洲| 国产精品视频专区| 欧美日韩亚洲91| 欧美成人免费在线| 久久综合给合久久狠狠狠97色69| 欧美成人中文字幕| 欧美日韩免费观看一区三区| 国产日产欧产精品推荐色 | 欧美激情一区二区三区| 久久国产精品久久久久久| 亚洲国产老妈| 欧美一二三视频| 欧美国产视频在线| 欧美日韩国产在线播放| 麻豆久久久9性大片| 欧美激情二区三区| 狠狠色综合网| 欧美日韩播放| 亚洲一区二区三区成人在线视频精品| 欧美久久综合| 国产精品自拍一区| 日韩一本二本av| 久久成人18免费网站| 亚洲一区二区在线免费观看| 久久婷婷人人澡人人喊人人爽| 亚洲在线播放| 亚洲深夜福利视频| 在线天堂一区av电影| 中文一区字幕| 国产精品99久久久久久有的能看 | 国产欧美日韩一区| 国产九色精品成人porny| 国产精品免费aⅴ片在线观看| 欧美日韩一区不卡| 国产精品久久久久久五月尺 | 欧美日韩hd| 欧美午夜宅男影院在线观看| 欧美日韩另类国产亚洲欧美一级| 欧美色中文字幕| 国产精品免费观看在线| 国产欧美精品va在线观看| 狠狠狠色丁香婷婷综合久久五月 | 亚洲午夜一二三区视频| 亚洲欧美美女| 久久久久久久久久久一区 | 欧美日韩精品免费观看视频| 欧美日韩精品一区二区三区| 国产精品毛片va一区二区三区| 国产噜噜噜噜噜久久久久久久久| 国产一区二区成人久久免费影院| 伊人狠狠色j香婷婷综合| 最新中文字幕一区二区三区| 亚洲私人影吧| 久久视频免费观看| 国产精品99一区| 国产亚洲成av人在线观看导航 | 亚洲第一色在线| 亚洲特色特黄| 麻豆精品91| 国产精品久久久久久久7电影| 国产中文一区| 一本色道久久综合精品竹菊 | 亚洲一区日本| 免费成人av在线| 国产精品视频xxxx| 亚洲激情成人在线| 欧美亚洲在线| 欧美精品系列| 黄色亚洲大片免费在线观看| 日韩一级大片| 久久亚洲综合色一区二区三区| 欧美日韩国产免费| 激情综合网址| 亚洲欧美在线磁力| 欧美成人精品在线视频| 国产亚洲精品7777| 亚洲一区激情| 欧美日韩亚洲高清一区二区| 在线不卡免费欧美| 亚洲综合国产激情另类一区| 欧美激情一区二区三区在线| 黄页网站一区| 久久精品九九| 国产精品人人做人人爽人人添| 亚洲久久一区| 欧美刺激性大交免费视频| 国外成人性视频| 久久成人综合视频| 国产欧美精品日韩精品| 亚洲一区二区精品视频| 欧美日韩亚洲一区二区三区四区| 亚洲国产欧美一区二区三区久久| 久久久久久久一区| 国产一区二区三区久久久久久久久| 亚洲午夜电影在线观看| 欧美性一二三区| 亚洲一区二区高清视频| 国产精品扒开腿做爽爽爽视频 | 亚洲精品一区二区三区婷婷月| 免费成人你懂的| 亚洲高清精品中出| 欧美成人精品激情在线观看| 亚洲高清在线| 欧美日韩国产在线播放网站| 亚洲午夜久久久| 国产在线观看一区| 麻豆精品91| 一区二区精品| 国产欧美日韩另类视频免费观看 | 免费黄网站欧美| 亚洲精品乱码久久久久久蜜桃91| 欧美成人自拍视频| 亚洲视频第一页| 国产日韩欧美一区二区三区在线观看 | 亚洲国产欧美另类丝袜| 欧美电影在线| 一本色道88久久加勒比精品| 国产精品v欧美精品v日本精品动漫 | 国内精品久久久久久久97牛牛| 亚洲一区精品视频| 欧美色综合天天久久综合精品| 亚洲一区在线观看视频| 欧美日韩在线播放三区四区| 一二三四社区欧美黄| 国产九九精品视频| 欧美在线观看网站| 国产一区二区三区的电影 | 国产女主播一区二区| 亚洲欧美综合国产精品一区| 国产精品一区久久久久| 野花国产精品入口| 国产一区二区三区在线观看视频| 久久成人在线| 亚洲高清视频在线观看| 国产精品av久久久久久麻豆网| 亚洲一区二区伦理| 国产日韩1区| 老司机一区二区| 亚洲色图制服丝袜| 国产精品一二三| 久久久亚洲高清| 在线观看欧美日韩| 欧美午夜精品久久久久免费视| 亚洲欧美日韩综合国产aⅴ| 国产欧美日韩免费| 欧美成人免费视频| 久久精品中文字幕一区| 亚洲黄色免费| 国产精品亚洲产品| 久久久久久久久久久成人| 亚洲午夜视频在线观看| 伊人激情综合| 国产精品播放| 美国十次了思思久久精品导航| 亚洲欧美日韩国产精品| 在线观看久久av| 国产精品美女诱惑| 欧美丰满高潮xxxx喷水动漫| 国产精品久久国产精麻豆99网站| 亚洲主播在线| 亚洲福利专区|