6.4.2_3最短路徑問題_Floyd算法

Floyd弗洛伊德

膜拜大佬,給大佬鞠躬鞠躬鞠躬。。。。。。。。。

Floyd算法?----解決頂點間的最短路徑:

過程:

如下:

初始化(沒有中轉點):2個鄰接矩陣A和path,第一個是沒有中轉點的2個頂點之間的最短路徑(注意是2個頂點之間的直接路徑,中間沒有經過其他頂點,如果2個頂點比如A->B沒有直接路徑,A->C->B有路徑,此時也寫∞),第2個是目前能找到的最短路徑中2個頂點之間的中轉點,剛開始沒有中轉點所以各2個頂點之間的中轉點都設為-1

中轉點加入V0頂點:在沒有加入V0中轉點時,A[2][1]即V2->V1路徑長度根據A鄰接矩陣知是∞,加入V0后即K=0,可以V2->V0,V0->V1,即A[2][0]+A[0][1]=5+6=11(根據A第一個鄰接矩陣得出)得出加了中轉點后V2->V1最短路徑由∞變為11,則修改A[2][1]即第一個鄰接矩陣V2->V1最短路徑為11,修改第二個鄰接矩陣V2->V1中轉點為0,所有的頂點都需要加入以上判斷,然后修改A和Path,目前看只有V2、V1頂點需要(A(0)[2][1]=11即加入了0號中轉點的V2->V1的最短路徑長度為11,path(0)[2][1]=0,即當前的V2->V1最短路徑長度加入了0號中轉點,每次都要判斷未加入中轉點的最小路徑長度>加入了中轉點之后的最小路徑長度,只有滿足這個式子才會修改A和Path)

中轉點加入V1頂點:在沒有加入V1中轉點時,V0->V2路徑長度是13,加入后V0->V1->V2即6+4=10,加入后值小滿足規則條件A(0)[0][2]>A[0][0][1]+A(1)[1][2],修改A(1)[0][2]=10,path(1)[0][2]=1,其他頂點無需更改,加入中轉點后路徑沒有變化

中轉點加入V2頂點:在沒有加入V2中轉點時,V1->V0路徑長度是10,加入后V1->V2->V0即4+5=9,加入后值小滿足規則條件A(1)[1][2]>A(1)[1][2]+A(1)[2][0],修改A(2)[1][0]=9,path(2)[1][0]=2

path寫的是中轉點,把誰加入了中轉點對應的path路徑上的值就寫誰,A寫的是最短路徑長度

經過n(頂點個數)輪中轉之后得到A(n-1)path(n-1)

如下:由A(n-1)即A(2)得,V1->V2最短路徑是4,由path(2)得V1->V2是-1,即V1->V2最短路徑4沒有經過中轉點,即為V1->V2,V0->V2最短路徑是10,由path(2)得V1->V2是1,即V0->V2最短路徑10經過中轉點1,即為V0->V1->V2即V0_V1_V2

代碼如下:?

準備一個圖的鄰接矩陣A+path矩陣初始值都設為-1,開始每循環一次增加一個中轉點,每增加一個中轉點遍歷一次A鄰接矩陣(遍歷行和列),看加了中轉點之后的路徑長度和不加誰小,如果加了小更新鄰接矩陣A最短路徑長度和path中轉點

時間復雜度:要根據頂點個數遍歷3次即O(|V3|)

空間復雜度:矩陣的存儲空間行和列即O(|V2|)

5個頂點例子:

中轉點V0:沒有需要更新的

中轉點V1:既然是V1作為中間點出現,那必然要找指向V1的點作為起點V2和從V1指出的點(此時不要直接看圖,要看鄰接矩陣)V3、V4,可得V1作為中間點、V2作為起點有2條路徑,V2->V1->V3=1+1=2,但是V2->V3沒有直接路徑即∞,修改A(1)[2][3]=2,path(1)[2][3]=1,另一條V2->V1->V4=1+5=6,V2直接到V4=7,則修改A(1)[2][4]=6,path(1)[2][4]=1【修改對應path上的橫縱坐標確定的值為1】

中轉點V2:既然是V2作為中間點出現,那必然要找指向V2的點作為起點V0和從V2指出的點(直接看鄰接矩A中V2作為橫坐標V2所在行有值的點,不要看圖!!!)即V1、V3(V2->V3在圖中并沒有直接指向,但是在鄰接矩陣A中(2,3)=2,是因為上一步已經加入了中轉點V1,V2->V3沒有直接路徑,但是可以V2->V1->V3=2有中轉點路徑,即在使用中轉點V2時也使用了中轉點V1的結果,在已經有了一個中轉點的情況下計算某2個頂點最短路徑時也要看鄰接矩陣而不是看圖上邊的權值!!!)、V4,可得V2作為中間點、V0作為起點有3條路徑,V0->V2->V1=1+1=2(鄰接矩陣中V0->V2是1,V2->V1是1) <V0->V1是∞,修改A(2)[0][1]=2,path(2)[0][1]=2,另一條V0->V2->V4=1+6=8(注意不要看圖上的權值,看鄰接矩陣中的最短路徑!!!否則就變成了1+7=8,鄰接矩陣A上V0->V2=1,V2->V4=6即1+6=7),V0直接到V4=10,則修改A(2)[0][4]=8,path(2)[0][4]=2,另一條V0->V2->V3=1+2=3(鄰接矩陣A上V0->V2=1,V2->V3=2即1+2=3) < V0->V3=∞,則修改A(2)[0][3]=3,path(2)[0][3]=2【修改對應path上的橫縱坐標確定的值為2】

中轉點V3:上同

中轉點V4:上同

根據最終中轉矩陣找路徑:

如下為最終中轉的A和path,找V0->V4路徑,由A知V0->V4最短路徑為4,由path知V0->V4中轉點是3,再由A知V3->V4最短路徑1,由path知V3->V4=-1即V3和V4之間沒有中轉點,再看V0->V3,由A知V0->V3最短路徑3,由path知V0->V3=2級V0->V3中轉點V2,即V0->V2->V3,看V0->V2,由A知V0->V2最短路徑1,由path知V0->V2=-1即V0->V2沒有中轉點,再看V2->V3,由A知V2->V3最短路徑2,由path知V2->V3=1即V2->V3有中轉點V1,即V2->V1->V3,看V2->V1,由A知V2->V1最短路徑1,由path知V2->V1=-1即V2->V1沒有中轉點,再看V1->V3,由A知V1->V3最短路徑1,由path知V1->V3=-1即V1->V3沒有中轉點

V0->V3->V4? 第一輪? ?V3->V4不動路徑為1,看V0->V3有哪些中轉點

V0->V2->V3->V4第二輪? V0->V2不動路徑1、V3->V4不動路徑1,看V2->V3有哪些中轉點

V0->V2->V1->V3->V4第三輪? V0->V2、V2->V1、V1->V3、V3->V4不動路徑1,各路徑無中轉點

練習:

弗洛伊德算法可解決帶負權值,但不能解決帶回路的負權值

??

知識回顧:

?

下次再見?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/82840.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/82840.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/82840.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

uniapp|實現多端圖片上傳、拍照上傳自定義插入水印內容及拖拽自定義水印位置,實現水印相機、圖片下載保存等功能

本文以基礎視角,詳細講解如何在uni-app中實現圖片上傳→水印動態編輯→圖片下載的全流程功能。 目錄 引言應用場景分析(社交媒體、內容保護、企業素材管理等)uniapp跨平臺開發優勢核心功能實現?圖片上傳模塊多來源支持:相冊選擇(`uni.chooseImage`)與拍照(`sourceType:…

2021年認證杯SPSSPRO杯數學建模B題(第二階段)依巴谷星表中的畢星團求解全過程文檔及程序

2021年認證杯SPSSPRO杯數學建模 B題 依巴谷星表中的畢星團 原題再現&#xff1a; 依巴谷衛星&#xff08;High Precision Parallax Collecting Satellite&#xff0c;縮寫為 Hip-parcos&#xff09;&#xff0c;全稱為“依巴谷高精度視差測量衛星”&#xff0c;是歐洲空間局發…

行為型:解釋器模式

目錄 1、核心思想 2、實現方式 2.1 模式結構 2.2 實現案例 3、優缺點分析 4、適用場景 5、注意事項 1、核心思想 目的&#xff1a;針對某種語言并基于其語法特征創建一系列的表達式類&#xff08;包括終極表達式與非終極表達式&#xff09;?&#xff0c;利用樹結構模式…

Redis分布式緩存核心架構全解析:持久化、高可用與分片實戰

一、持久化機制&#xff1a;數據安全雙引擎 1.1 RDB與AOF的架構設計 Redis通過RDB&#xff08;快照持久化&#xff09;和AOF&#xff08;日志持久化&#xff09;兩大機制實現數據持久化。 ? RDB架構&#xff1a;采用COW&#xff08;寫時復制&#xff09;技術&#xff0c;主進程…

換臉視頻FaceFusion3.1.0-附整合包

2025版最強換臉軟件FaceFusion來了&#xff08;附整合包&#xff09;超變態的換臉教程 2025版最強換臉軟件FaceFusion來了&#xff08;附整合包&#xff09;超變態的換臉教程 整合包地址&#xff1a; 「Facefusion_V3.1.0」 鏈接&#xff1a;https://pan.quark.cn/s/f71601a920…

論文閱讀筆記——Step1X-Edit: A Practical Framework for General Image Editing

Step1X-Edit 論文 當前圖像編輯數據集規模小&#xff0c;質量差&#xff0c;由此構建了如下數據構造管線。 高質量三元組數據&#xff08;源圖像、編輯指令、目標圖像&#xff09;。 主體添加與移除&#xff1a;使用 Florence-2 對專有數據集標注&#xff0c;然后使用 SAM2 進…

使用Python在PyCharm中進行交通工程數據分析的完整流程,包括數據清洗、挖掘、關聯、可視化和應用整合等各個階段

交通工程領域數據分析流程 下面我將詳細介紹使用Python在PyCharm中進行交通工程數據分析的完整流程,包括數據清洗、挖掘、關聯、可視化和應用整合等各個階段。 1. 數據準備與清洗 1.1 導入必要庫 import pandas as pd import numpy as np import matplotlib.pyplot as plt…

《軟件工程》第 2 章 -UML 與 RUP 統一過程

在軟件工程領域&#xff0c;UML&#xff08;統一建模語言&#xff09;與 RUP&#xff08;統一過程&#xff09;是進行面向對象軟件開發的重要工具和方法。接下來&#xff0c;我們將深入探討第 2 章的內容&#xff0c;通過案例和代碼&#xff0c;幫助大家理解和掌握相關知識。 …

Vue收集表單數據

在 Web 開發中&#xff0c;表單是用戶與系統交互的重要方式。無論是注冊、登錄、提交評論還是其他操作&#xff0c;都需要通過表單獲取用戶輸入的數據。Vue.js 提供了強大的響應式系統和指令&#xff0c;使得表單數據的收集變得簡單而高效。本文將詳細介紹如何在 Vue 中實現表單…

R基于多元線性回歸模型實現汽車燃油效率預測及SHAP值解釋項目實戰

說明&#xff1a;這是一個機器學習實戰項目&#xff08;附帶數據代碼文檔視頻講解&#xff09;&#xff0c;如需數據代碼文檔視頻講解可以直接到文章最后關注獲取。 1.項目背景 在全球環保意識日益增強和技術進步的推動下&#xff0c;汽車燃油效率成為了汽車行業關注的核心指標…

解決Window10上IP映射重啟失效的問題

問題 在實際網絡搭建過程中&#xff0c;大家有可能會遇到在局域網范圍內&#xff0c;在自己本機上搭建一個網站或者應用時&#xff0c;其他設備通過本機的IP地址無法訪問的問題,這個問題可以通過設置IP映射來解決&#xff0c;但是通過netsh interface命令設置的IP映射&#xf…

一臺手機怎樣實現多IP上網?方法有多種

在數字時代&#xff0c;多IP上網已成為許多手機用戶的剛需。本文將詳細介紹如何通過不同技術手段實現手機多IP上網&#xff0c;幫助讀者根據實際需求選擇適合的解決方案。 一、為什么一臺手機要實現多IP上網 手機實現多IP上網的典型場景包括&#xff1a; ①防止同一IP操作多個…

git子模塊--常見操作

克隆倉庫 標準化克隆流程 基本命令git clone <父倉庫遠程URL> [本地文件名] cd <本地倉庫名> git submodule init # 初始化子模塊配置 git submodule update # 拉取子模塊內容一次性完成克隆和初始化流程 基本命令git clone --recurse-submodules <父倉庫遠…

ceph 剔除 osd

剔除 osd 參考官網文檔 Removing OSDs (Manual) Removing the OSD 你得周期性地維護集群的子系統、或解決某個失敗域的問題(如一機架)。如果你不想在停機維護 OSD 時讓 CRUSH 自動重均衡,提前設置 noout ceph osd set nooutid=1# OSD 通常在從集群中移除之前處于 up in 在…

MySQL推出全新Hypergraph優化器,正式進軍OLAP領域!

在剛剛過去的 MySQL Summit 2025 大會上&#xff0c;Oracle 發布了一個用于 MySQL 的全新 Hypergraph&#xff08;超圖&#xff09;優化器&#xff0c;能夠為復雜的多表查詢生成更好的執行計劃&#xff0c;從而優化查詢性能。 這個功能目前只在 MySQL HeatWave 云數據庫中提供&…

破能所,入不二

一、緣起&#xff1a;從“聞所聞盡”到性相不二 《楞嚴經》觀世音菩薩耳根圓通法門的核心教義——“初于聞中&#xff0c;入流亡所&#xff1b;所入既寂&#xff0c;動靜二相&#xff0c;了然不生。如是漸增&#xff0c;聞所聞盡”&#xff0c;揭示了從凡夫二元認知躍升至究竟…

網站每天幾點更新,更新頻率是否影響網站收錄

1. 每天幾點更新網站最合適&#xff1f;總怕時間選錯影響收錄&#xff1f; 剛開始搞網站的時候&#xff0c;是不是老糾結啥時候更新合適&#xff1f;早上剛上班&#xff1f;半夜沒人的時候&#xff1f;選不對時間&#xff0c;總擔心搜索引擎爬蟲來了沒抓到新內容&#xff0c;影…

使用workvisual對庫卡機器人進行程序備份

1&#xff0c;將電腦網卡設置自動獲取&#xff0c;用網線將電腦與庫卡機器人控制柜上的網口連接 2&#xff0c;打開軟件后&#xff0c;會出現項目打開對話框&#xff0c;點擊瀏覽按鈕&#xff0c;會出現機器人站項目 3&#xff0c;點擊項目前面的?&#xff0c;展開菜單&…

2025.5.22 Axure 基礎與線框圖制作學習筆記

一、Axure 基礎 - 界面及相關了解 界面布局 工具欄 &#xff1a;位于軟件上方&#xff0c;包含新建、打開、保存等常用文件操作按鈕&#xff0c;以及撤銷、重做、剪切、復制、粘貼等編輯功能按鈕&#xff0c;方便快速執行相關操作。 元件面板 &#xff1a;在左側&#xff0c;提…

Python訓練打卡Day36

復習日&#xff1a; 回顧神經網絡的相關信息 1. 梯度下降的思想 梯度下降的本質是一種迭代優化算法&#xff0c;用于尋找函數的極小值點&#xff08;比如損失函數的最小值&#xff09;其關鍵的要素如下 梯度&#xff1a;函數在某點變化率最大方向學習率&#xff1a;每一步的…