可行流:即多條弧的集合,且每條弧的流量為非負的,且不超過該弧的容量;流入原點的流量等於流出終點的流量。
最大流:即網路中的流量最大的可行流。
最大流的求法:即由原網路得到殘量網路,再找到殘量網路中的增廣路,根據增廣路求最大流。
步驟: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 ...