Edmonds Karp演算法 網路流 最大流問題

2021-06-29 15:13:50 字數 928 閱讀 8724

可行流:即多條弧的集合,且每條弧的流量為非負的,且不超過該弧的容量;流入原點的流量等於流出終點的流量。

最大流:即網路中的流量最大的可行流。

最大流的求法:即由原網路得到殘量網路,再找到殘量網路中的增廣路,根據增廣路求最大流。

步驟:1. 找到殘量網路中的一條增廣路。

2. 求出該增廣路上的最小的流量值,使各個弧的容量都減去這個值,並各個反向弧都加上這個值。

3. 重複1,2 直到找不到增廣路。將每一次的流量值相加,結果為最大流。

圖中的最大流 為  s->t: 10

**如下:

#include #include #include #define inf 0x7fffffff

#define max 100

using namespace std;

int map[max][max];

int path[max];

/*---------------深度優先遍歷*/

int bfs(int n , int start , int end)}}

if(path[end] == -1) return -1;

return flow[n];//----返回路徑上最小剩餘容量的弧

}/*-------------edmonds_karp 演算法*/

int edmonds_karp(int n , int start , int end)

}return max_flow;

}/*----------main()*/

int main()

int start = 1 , end = n;

cout<

Edmonds Karp演算法,網路流最大流

網路流是一種生活中常見的圖模型,包含乙個起始點,和乙個匯點,以及若干結點,用有向邊連線,每條邊的權值代表能流經該邊的最大流量。生活中,水流網路,電流網路,資訊網路這些問題都能描述成網路流。網路流中一種常見的問題是最大流問題。即求從起始點到達匯點流的最大值。在 演算法導論 介紹了edmonds kar...

網路流 最大流 Edmonds Karp演算法

edmonds karp演算法,複雜度o ve 2 思想就是找增廣路,不斷增加流量。在殘量 每條邊上流量和容量的差 圖上找一條每個邊權值都為正的路 可以通過bfs,比dfs效率高 這些邊權值裡的最小值就是這條路可以增加的流量,然後在這條路徑上更新流量。再重複找這樣的路更新流量,直到找不到這樣的路了就...

網路流EdmondsKarp演算法模板理解

先推薦乙個講網路流的部落格,我的網路流知識均吸收於此 傳送門 edmondskarp演算法基本思想 從起點到終點進行bfs,只要存在路,說明存在增廣路徑,則取這部分路 權值最小的一部分,即為增廣路徑 也就是這一部分路的最大流量 然後將這條路上的正向權值都減去min,反向權值都加上min 即,m i ...