图论 —— 环与块 —— 最小环
生活随笔
收集整理的這篇文章主要介紹了
图论 —— 环与块 —— 最小环
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【概述】
從一個點出發,經過一條簡單路徑回到起點,稱為圖的環,而圖的最小環就是所有環中長度最小的。
所謂最小環問題,最小環就是指在一張圖中找出一個環,使得這個環上的各條邊的權值之和最小。
【求最小環】
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]);//最短路徑 }總結
以上是生活随笔為你收集整理的图论 —— 环与块 —— 最小环的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 字符串处理 —— 单模式匹配
- 下一篇: 数列分段(信息学奥赛一本通-T1428)