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

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

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

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



4.找最大流

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

#include <bits/stdc++.h>
#define inf 0x3f3f3f3fusing 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].f = f;e[cnt].w = w;e[cnt].nxt = head[u];head[u] = cnt++;
}int spfa()
{memset(dis,inf,sizeof(dis));memset(flow,inf,sizeof(flow));memset(via,0,sizeof(via));queue <int> Q;Q.push(s); via[s]=1; dis[s]=0; pre[t]=-1;while ( !Q.empty() ) {int x = Q.front(); Q.pop(); via[x]=0;for ( int i=head[x]; i!=-1; i=e[i].nxt ) {int y = e[i].to, f=e[i].f, w=e[i].w;if ( f && dis[y]>dis[x]+w ) { // 只要最短流能更新就更新dis[y] = dis[x] + w;pre[y] = x; // y 的父节点是xlast[y] = i; // y点连接其父节点的边,编号为iflow[y] = min(flow[x],f); // 源点到y点的最大流量。会被最小的一个分支限制住if ( via[y]==0 ) {    // 只有队列中没有当前值才往队列里加。Q.push(y); via[y]=1;}}}}return pre[t]!=-1; // 判断汇点是否有点连入,即还存不存在增广路。初始化pre[t]=-1.
}void MCMF()
{maxflow = mincost = 0;while ( spfa() ) { // 还存在增广路就进入int x = t;maxflow += flow[t]; // 源点到t点的最大流量mincost += flow[t]*dis[t];while ( x!=s ) {  // 递归改变边的流量e[last[x]].f -= flow[t];e[last[x]^1].f += flow[t];x = pre[x];}}
}int main()
{int x,y,f,w;memset(head,-1,sizeof(head));cin >> n >> m >> s >> t;for ( int i=0; i<m; i++ ) {cin>>x>>y>>f>>w;addedge( x,y,f,w );  //建立正向边addedge( y,x,0,-w );  // 反向边,流量为0, 权值为-w}MCMF();cout << maxflow << " " << mincost << endl;return 0;
}
————————————————
版权声明:本文为CSDN博主「才子词人自是白衣卿相」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43828245/article/details/102822111

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

  1. 数学建模——智能优化之粒子群模型详解Python代码

    数学建模--智能优化之粒子群模型详解Python代码 import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplo ...

  2. 数学建模系列-优化模型(二)---图论模型(一)

    图论模型可以简单理解为画图解决的模型.比较经典的有树状图.TSP算法等等.其中上一篇文章中提到的动态规划也看作图论的一种. 图论模型可以简单的分为以下几种: 最短路径问题 最小生成树问题 网络最大流问 ...

  3. 数学建模系列-优化模型(六)---模拟退火模型

    模拟退火算法是基于一定概率跳出局部最优解的算法,我曾经写过这样一篇论文,现在把中心思想汇报下: 1.启发式算法: 启发式算法(Heuristic Algorithm)有两种定义: (1)基于直观或经验 ...

  4. 数学建模系列--预测模型(二)---灰色预测模型

    正如前文所述,目前我们学习预测模型的第二类:灰色预测模型. 在控制领域,有一种方法将系统可以笼统的分为三类: 黑箱.白箱.灰箱. 其中黑箱是完全不可观的,因此只能通过大量的输入.输出数据进行建模,找到 ...

  5. Algorithm:数学建模大赛之数学建模基础(经验/技巧)、流程(模型准备/模型假设/建模/求解/分析/优化/预测/评价)、论文写作(意义/摘要/关键词/问题重述和模型假设/建模/文献)之详细攻略

    Algorithm:数学建模大赛之数学建模基础(经验/技巧).流程(模型准备/模型假设/建模/求解/分析/优化/预测/评价).论文写作(意义/摘要/关键词/问题重述和模型假设/建模/求解/结论/参考文 ...

  6. 数学建模——智能优化之模拟退火模型详解Python代码

    数学建模--智能优化之模拟退火模型详解Python代码 #本功能实现最小值的求解#from matplotlib import pyplot as plt import numpy as np imp ...

  7. Python数学建模系列(八):图论

    文章目录 前言 往期文章 1 图论模型 - Dijkstra 样例1 2 图论模型-Floyd 样例2 3 机场航线设计 0.Airlines.csv数据 1.数据导入.观察变量 2.数据清洗 3.时 ...

  8. Matlab数学建模(七):连续模型

    一.学习目标 (1)了解连续模型及解题步骤. (2)掌握用 dsolve 求解常见的微分方程解析解. (3)掌握用 ODE 家族的求解器求解数值解. (4)掌握使用专用的求解器求解. 二.实例演练 ( ...

  9. 【数学建模】1层次分析法模型部分

    目录 1 数学建模的任务分配 2 简介 3 模型介绍 3.1 评价类问题 3.2 拿到建模问题 3.3 推荐搜索网站 3.4 确定好指标 3.5 确定指标权重 (1)采用分而治之的思想 (2)分而治之 ...

最新文章

  1. 【位运算】代码中的常用操作
  2. SAP Spartacus converter执行的上下文
  3. 人才是培养的吗? (转)
  4. 《乌镇互联网饭局图鉴》
  5. linux系统的磁盘挂载情况
  6. @EnableWebMVC注解理解
  7. BT5新的征程!全民***计划!
  8. java对人脸打马赛克,如何给视频中的人脸进行马赛克 视频人脸打马赛克软件|人脸跟踪马赛克...
  9. java 米与厘米 转换_米转码换算(米与码的换算关系)
  10. 从零搭建Angular10项目
  11. JavaScript 学习笔记 - 5 窗口与框架
  12. 敏捷开发 敏捷个人_在敏捷2013中寻找答案
  13. IC卡与磁条卡的数据区别
  14. AWS【亚马逊云】的EC2以及VPC网络框架介绍
  15. 七牛云被攻击偷跑流量
  16. 网页数据抓取公式之京东商品数据抓取
  17. STM32读取SHT3x系列温湿度传感器,标准库和HAL库
  18. 虚拟机迁移技术漫谈(转)
  19. 修复迅雷看看xmp.rmvb视频文件错误关联
  20. 2023美国大学生数学建模竞赛E题光污染完整数据集和求解代码分享

热门文章

  1. 基于Arduino的智能家居系统【ESP8266WIFI模块 DHT11温湿度模块 继电器 加湿模块 APP远程控制 数据上传机智云】
  2. DNS 劫持 和 DNS 污染
  3. Mysql中到底什么是索引下推,一分钟看懂
  4. 有一个抽奖池,该抽奖池中存放了奖励的金额,该抽奖池用一个数组int[] arr = {10,5,20,50,100,200,500,800,2,80,300};创建两个抽奖箱(线程)...
  5. 配置VLAN工作量太大?那是你还不了解VTP
  6. 笔记本连接宽带后只有火狐能上网,IE和谷歌和360浏览器都无法上网
  7. 【华为云分享】软件工程的迷途与沉思
  8. 2012年结束,2013年新的开始
  9. 作为一个男人,尤其作为一个真正的爷们,应该做好下列小事 - ♀coolszy♂ 【厚德载物 天道酬勤】 - JavaEye技术网站
  10. 蜂鸣器Speaker响8下、主板诊断卡D6除内存故障的另一角度