跳到主要内容

图论与网络模型

把对象看成顶点,把关系或通道看成边,就可以用图论语言研究连通、路径、流量、匹配与结构位置。边可以有方向、容量、费用与长度;顶点可以有权重与类型。图一旦建错(方向、权的含义、是否允许重边/自环),后面的“最优”都只是错误模型上的精确解。

可以把它想成“在约束下的结构上做可检验的计算”。例如:

  • 交通/管网中从 A 到 B 的最短或最快路径;
  • 最小成本把居民点连成通信/供电网络;
  • 物流网络的最大通过能力与瓶颈割;
  • 人员与任务的最优匹配、车辆巡回配送;
  • 社交或引用网络中谁处在结构关键位置、社区如何划分。

建模竞赛里,图论题的得分点往往在:图是否与题意同构、约束是否写全、小例子能否手算验证、启发式是否有基线与多种子。

一、这一门类解决什么问题​

问题类型典型问法代表方法所在位置
路径从 A 到 B 怎么走最近/最快Dijkstra / Floyd / Bellman–Ford / A*最短路径
连通造价如何用最小成本连成一体最小生成树 Prim / Kruskal最小生成树
运输极限网络最多能送多少,瓶颈在哪最大流 / 最小割最大流最小割
带成本流完成规定流量且费用最小最小费用流;有上下界可行流网络流扩展
巡回与配送走完所有点/客户,车容量与时间窗TSP / VRP 与启发式TSP与VRP…
配对一人一任务、最大权匹配匈牙利、KM二分图匹配
结构位置谁重要、是否抱团度、中心性、聚类系数、PageRank复杂网络度量
社区网络自然分成哪些模块Louvain 等社区发现

本门类方法大致沿四条主线展开:

  1. 经典组合优化:最短路、最小生成树、匹配;
  2. 网络流:最大流最小割、费用流、上下界流;
  3. 硬组合与启发式:TSP/VRP;
  4. 复杂网络描述:度量、中心性、社区发现。

二、如何选择方法​

先问清五件事,再进算法:

  1. 图对不对:有向还是无向?权是长度、时间、可靠度、费用还是容量?能否取负?
  2. 目标是什么:最优值、一条可行方案、还是结构描述(中心性/社区)?
  3. 约束有哪些:容量、预算、车载、时间窗、禁止弧、度约束、上下界;
  4. 规模多大:小图应精确可复现;TSP/VRP 大实例需启发式,并给下界/朴素基线;
  5. 如何验证:手算小例、割容量、生成树边数 n−1n-1、流守恒、匹配饱和性。
问题信号优先考虑
非负权单源最短路Dijkstra;网格/启发信息可用 A*
可能有负权边(无负环)Bellman–Ford;全源用 Floyd
连通且总造价最小MST(注意:MST 不是最短路树)
源汇最大输送、找瓶颈最大流;用最小割解释瓶颈
流量达标且总费用最小最小费用流
边/顶点有下界先可行流(上下界)再优化
二分图分配、最大权匈牙利 / KM
巡回访问、多车配送TSP/VRP 模型 + 精确小例/启发式
谁处于结构关键位置中心性、PageRank(解释保持结构意义)
自然分组模块社区发现(Louvain 等)

三、方法选择的决策逻辑​

边权/容量的含义是什么?目标是路径、树、流、匹配还是结构?
├─ 路径最优 → 最短路(看权是否非负、单源/全源)
├─ 连通代价最小 → MST
├─ 输送量/瓶颈 → 最大流最小割
│ └─ 还要费用/上下界 → 费用流、可行流改造
├─ 一对一分配 → 二分图匹配
├─ 巡回/多车 → TSP/VRP(先写清约束,再求精确或启发式)
└─ 无“最优运送”,要描述网络形态
├─ 点的重要性 → 中心性 / PageRank
└─ 模块划分 → 社区发现

与 02 优化问题 的关系:许多图问题可写成 IP/LP;图论算法往往更直接、也更易给出组合证明(如最小割)。大尺度 VRP 也可“图论建模 + 优化求解器/启发式”混合。

四、统一的建模工作流​

  1. 抽象:列出顶点集、边集、方向、权与容量的单位;说明多重边与自环是否允许;
  2. 画小图:用题面可核对的小例子展示符号;
  3. 选型:按上表选择问题类型(不要用最短路去“近似”最大流);
  4. 求解:
    • 精确算法:写清复杂度与适用条件(负权、负环);
    • 启发式:多随机种子,报告最好/平均/方差,并与下界或小规模精确解对照;
  5. 验证:
    • 最短路:三角不等式抽查、与 Floyd 小图对照;
    • MST:边数 n−1n-1、连通、权之和;
    • 流:守恒、容量限制、最大流=最小割;
    • 匹配:无共用顶点、权之和;
  6. 解释:路径/割/中心性的业务含义;瓶颈边、关键节点、社区画像;
  7. 灵敏度:删边、扩容、权扰动后方案如何变(呼应全局方法论)。

五、MATLAB 与实现提示​

任务常用入口
建图graph, digraph
最短路shortestpath, distances
最小生成树minspantree
最大流maxflow
中心性等centrality
可视化plot

竞赛论文中,鼓励对核心算法做小规模手写推演(Dijkstra 标号过程、增广路、匈牙利矩阵),再给出程序结果;只贴工具箱调用难以体现理解。TSP/VRP 启发式需固定随机种子以便复现。

六、与各子目录/篇章的对应关系​

子目录或篇章核心任务典型出口
最短路径点到点(或全源)最优走法路径与距离
最小生成树最小代价连通子图树边集合
最大流最小割输送上界与瓶颈证明流量与割
网络流扩展费用与上下界最优流/可行流
二分图匹配一对一最优分配匹配与总权
TSP与VRP…巡回与车辆路径路线与目标值
复杂网络度量结构位置与局部密集程度指标表与分布
社区发现模块划分社区标签与模块度

图论与 11 模拟与仿真 的衔接:网络上的随机游走、故障级联、排队可在仿真中展开。与 07 评价 的衔接:中心性可作为评价指标之一,但“结构重要”≠“因果重要”。

七、使用提醒与常见陷阱​

  • 建图错误:把双向道建成无向、权用错单位、把容量写在点上却当边容量用;
  • 算法前提忽视:负权仍用 Dijkstra;有负环却谈最短路;
  • MST 与最短路混淆:生成树总长最小,不保证某两点距离最短;
  • 最大流不会解释:只给一个流量数,不给最小割/瓶颈边,难以写讨论;
  • 启发式只报一次结果:无种子、无基线、无与下界差距;
  • 中心性滥用:度高/PageRank 高就被写成“最重要决策者”或因果核心;
  • 社区强行业务命名:模块度最优切割未必对应行政部门或自然地理边界;
  • VRP 约束漏写:容量、时间窗、车数在文中与代码不一致。

八、推荐学习顺序​

  1. 先读本导读,练习把题面翻译成 (V,E)(V,E) 与权的含义;
  2. 最短路径与最小生成树(手算小图);
  3. 最大流最小割,建立“流—割对偶”直觉;
  4. 网络流扩展(最小费用流、上下界);
  5. 二分图匹配(匈牙利、KM);
  6. TSP/VRP 的建模与启发式,强调基线与复现;
  7. 复杂网络度量与社区发现,解释保持克制。

进入具体方法页后,按「直观理解 → 适用场景 → 原理 → 关键决策 → MATLAB/步骤 → 解释 → 误区 → 小结」阅读,并在小图上逐步推演。最终写进论文的,应是正确的图 + 可验证的算法过程 + 可解释的结构结论,而不是一张无单位、无约束核对的“最优路线截图”。