Edmonds-Karp是求解最大流的一种算法,其他还有Ford-Fulkerson算法,这个算法在《算法导论》中有详细的介绍。下面我们来探讨下Edmonds-Karp算法。
Edmonds-Karp算法是利用一种动态规划的思想的算法。其主要用来解决下面这种最大流问题。
下面给出其具体的算法描述。
。
其时间复杂度与选取的最短路径算法有直接的关系,它的复杂度为O(VE^2)(笔者不会证明这个结论,结论参考自:参考资料)。
下面给出C语言实现。
#include<stdio.h>
int n,matrix[100][100],ini,tre,i,j,st[100][100],tzq[100][100];//tzq调整权网络的构造!
void inputmatrix()
{
printf("请输入邻接矩阵的阶数:\n");
scanf("%d",&n);
printf("请输入有向图的容量矩阵:\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
scanf("%d",&matrix[i][j]);//该矩阵不动,用于判断!
}
printf("请输入需计算的起始点下标:\n");
scanf("%d",&ini);
printf("请输入需计算的终点下标:\n&