数学建模系列-优化模型(二)---图论模型(三)

本文探讨了自最费用最大流问题,详细解析了最大流问题的标号法,包括从初始点寻找有裕量的路径直至终点,更新裕量并重复此过程直到无法找到更多流量。同时介绍了最大流量最小费用问题,通过结合Dijkstra算法求解最小费用和最大流。提出了清空流量、寻找最短路径、求最大流量并更新的步骤,最后提到了一种简单高效的方法。
摘要由CSDN通过智能技术生成

本文考虑的是自最费用最大流问题。

最大流问题的标号法:
1.对初始点找有裕量的下一跳,用深度优先一路走下去,一直到终点为止,那么取这条路最小的一段的裕量。当然裕量也包括反向可以减少的量。
2.将这个裕量更新到这条路经的每个点上。
3.重复1,一直到找不到再有通往终点的裕量为止。那么此时就是最大流量。

最大流量最小费用问题:
将其分为两个不同的问题:
1.最小费用(加权距离)
2.最大流量(用标号算法)。

一般的思路是可以用D斯特拉算法对最小费用进行求解。再求出最消费用的路线后求解最大流。
1.清空流量,找出最短路径。
2.对该路径求最大流量。
3.更新流量,继续寻找最短路径。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
4.找最大流

当然本博客由特给了最简单高效的方法:

#include <bits/stdc++.h>
#define inf 0x3f3f3f3f
 
using namespace std;
 
const int maxn = 1e5+10;
struct node {
   
    int to,w,f,nxt;
} e[maxn];
int n,m,s,t,maxflow,mincost;
int dis[maxn],flow[maxn],via[maxn],pre[maxn],last[maxn];
int head[maxn],cnt=0;
 
void addedge( int u, int v, int f, int w )
{
   
    e[cnt].to = v;
    e[cnt
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值