[图论]用Edmonds-Karp算法求解最大流问题(C语言实现)

本文介绍了Edmonds-Karp算法,一种用于求解最大流问题的算法,详细阐述了算法思想,并提供了C语言实现。该算法基于动态规划,时间复杂度为O(VE^2)。
摘要由CSDN通过智能技术生成

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&
  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值