日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

图论 —— 环与块 —— 最小环

發布時間:2025/3/17 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图论 —— 环与块 —— 最小环 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【概述】

從一個點出發,經過一條簡單路徑回到起點,稱為圖的環,而圖的最小環就是所有環中長度最小的。

所謂最小環問題,最小環就是指在一張圖中找出一個環,使得這個環上的各條邊的權值之和最小。

【求最小環】

Floyd 算法可以在求最短路的同時求出圖的最小環。

記兩點間的最短路為 dis[i][j],w[i][j] 為邊 < i,j > 的權值,res 為圖的最小環

一個環中最大的節點為 k,與它相連的節點為 i、j,這個環的最短長度為 w[i][k]+w[k][j]+(i 到 j 的路徑中所有節點編號都小于 k 的最短路徑長度)

根據 Floyed 原理,在最外層進行 k-1 次循環之后 dis[i][j] 代表了 i 到 j?的路徑中,所有結點編號都小于 k 的最短路徑,因此該算法一定能找到圖中的最小環。

關于 Floyd 算法:點擊這里

int res=INF; for(int k=1;k<=n;k++){//第一重循環為i→j的中間點kfor(int i=1;i<=n;i++)//第二重循環為起點ifor(int j=1;j<=n;j++)//第三重循環為終點jres=min(res,dis[i][j]+w[j][k]+w[k][i]);//環的最短長度for(int i=1;i<=n;i++)//第二重循環為起點ifor(int j=1;j<=n;j++)//第三重循環為終點jdis[i][j]=min(dis[i][j],w[i][k]+w[k][j]);//最短路徑 }

總結

以上是生活随笔為你收集整理的图论 —— 环与块 —— 最小环的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。