第八讲 图与网络模型 —— 经典图模型
数学建模
讲义
NUDT
2023SP
例:渡河问题
- 农夫带着狼、羊和白菜过河,因为船比较小,每次只能带一样东西过河.
- 并且狼和羊,羊和白菜都不能在无人看管的情况下留在一起.
- 否则狼会吃羊,羊会吃白菜.
- 问如何才能
安全
、快速
地过河?
8.1 基本概念
图 (Graph),也称为网络 (Network),是一个三元组
(简记为:),其中
- :非空的 结点/顶点集合(Node/Vertex/Endpoint Set)
- :边集合(Edge/Link/Arc Set)
- :从边集合到结点集合上的函数.
有向图与无向图
简单图与超图
- 不含平行边也不包含自环的图称为 简单图(Simple Graph),含平行边的图称为 多重图(Multigraph,或伪图,Pseudograph).
- 平行边:
- 在无向图中,关联一对顶点的无向边如果多于 1 条,则称这些边为平行边.
- 在有向图中,关联一对顶点的有向边如果多于 1 条,并且这些边的始点与终点相同(也就是它们的的方向相同).
- 平行边的条数称为重数.
- 自环:两端点相同的边.
- 如果允许一条边上链接任意数量的顶点,则该图称为 超图(Hypergraph)
定义与术语
- 关联于同一条边的两个结点叫 邻接点 (Adjacent Vertex)
- 关联于同一结点的两条边叫 邻接边 (Adjacent Edge)
- 不与任何结点相邻接的结点,称为 孤立点 (Isolated Vertex)
- 仅由孤立结点组成的图叫 零图 (Null Graph)
- 若无向图中每对结点之间均有且仅有一条边相连,则称该图为 完全图 (Complete Graph)
结点的度
在图 中,与结点 相关联的边数,叫该结点的 度数(度,degree),记作 .
- 称 为图 的 最大度;
- 称 为图 的 最小度
- 对于有向图,有时还要区分结点的 出度(Out Degreee)和 入度(In Degree),分别表示由该结点发出和进入该结点的边的数量.
邻接矩阵
关联矩阵
经典图论问题
路径问题
- 最短路径
- Hamilton 路/环
- 最小生成树
- Euler 路/环
- 旅行商问题
流与匹配问题
- 最大流问题
- 最小割问题
- 最大流最小割
- 最小费用最大流
- 二部图的匹配
- 图的同构
覆盖问题
染色问题
最短路问题
- 路(路径): 首尾相连的边的集合
- 最短路:两点之间边上权重(信息)总和最小的路
- 经典算法:
最小生成树问题
- 树:无环(回路)的连通图
- 生成(支撑)树(Spanning Tree):包含图中所有结点的树
- 最小生成树:边权重之和最小的生成树
- 经典算法
最大流问题
- 网络流(Network flow)是指在一个每条边都有最大容量(Capacity)的有向图中分配流量,使得总的流入和流出量相等的分配方案.
- 网络流的起点称为 源 (Source),终点称为 汇 (Sink)
- 最小费用最大流问题:求所有最大流中总费用(权重)最少的流.
- 经典算法:
Ford-Fulkerson 算法
Dinic 算法
Edmonds–Karp 算法
网络单纯形法
Euler 回路
- 从起点出发经过图中每条边且
恰好一次
的路称为 Euler 路 (Eulerian Trail/Path)
- 若要求回到起点,则称为 Euler 回路 (Eulerian Circuit/Cycle)
- 中国邮递员问题:在一个连通的无向图中找到一最短的封闭路径,且此路径需通过所有边
至少一次
- 无向图的中国邮递员问题是容易解决的,是多项式时间问题;而有向图的中国邮递员问题是 NP 完全问题.
Hamilton 回路
- 从起点出发经过图中所有点一次且仅一次的路称为 Hamilton 路 (Hamiltonian Path)
- 若要求回到起点,则称为 Hamilton 回路 (Hamiltonian Cycle)
- 经典算法:
8.2 最短路问题
例(渡河问题)
- 农夫带着狼、羊和白菜过河,因为船比较小,每次只能带一样东西过河.
- 并且狼和羊,羊和白菜都不能在无人看管的情况下留在一起.
- 否则狼会吃羊,羊会吃白菜.
- 问如何
安全
、快速
的过河?
分析
- 考虑出发一侧的组合情况,不难发现人、狼、羊、菜共有 16 种组合,其中狼羊菜、羊菜、狼羊三种组合不能出现
- 于是实际只剩下 10 种情况:人狼羊菜、人狼羊、人狼菜、人羊菜、人羊、狼菜、狼、羊、菜、空
- 将每种情况看成一个点,
如果两种状态可以互相转换,就在它们之间建立一条边
求解
- 问题转化为从图中
找出从人狼羊菜到空的最短路径
问题.
- 最优方案
- 人狼羊菜狼菜人狼菜狼人狼羊羊人羊空
- 人狼羊菜狼菜人狼菜菜人羊菜羊人羊空
- 每个方案都需要渡河七次.
最短路问题及其算法
设 是赋权图 中从点 到 的路径,称
为路径 的 权 或 长度(距离).
最短路的性质
定理 设 为图中从 到 的最短路,其经过的顶点依次为 ,则对于任意的 , 必为从 到 的最短路.
- 最短路中任意两点间的路径也是最短路.
- 求解算法
- Dijkstra 算法:求解指定两点之间的最短路;
- Floyd算法:求解图中任意两点之间的最短路.
Dijkstra 算法(标号法)
- 给每个结点分别编号为 .
- 将图改为
完全图
,记任意两点 间的弧长
- :第 个点的临时标号.
- :第 个点的永久标号,表示 的最短路径长度.
- :所求得的路径上第 个点的前一个结点.
基本思想
- 以起始点为中心向外层层扩展 (类似于广度优先搜索),迭代更新起点到其他个点的最短路径长度,直到扩展到终点为止
- 从起点沿一切可能的边派遣使者,这些使者均以相同的速度匀速前进,最早有使者到达的顶点作上记号(临时标号)
- 记下历经的路径长度,然后从这点沿所有可能的边再派出使者,这些使者与原来尚未到达顶点的使者一起以相同速度匀速前进
- 重复以上过程,直到有人到达终点为止
算法步骤
- Step 1:令
- Step 2:计算 ,
- Step 3:在所有临时标号中,取出最小的一个标号(若有多个,任取其一),改为永久性标号,即若 是临时标号最小的一个节点,则令 。
- 若无临时标号点或 ,则转 Step 5;否则,转 Step 4.
- Step 4:设刚获得永久性标号的点为 ,对每个具有临时标号的点 ,计算 ,对于 发生了变化的每个节点 ,令 . 然后转 Step 3.
- Step 5: 即为 的最短路的长.
求解过程示例
解答
设备更新问题
某公司需某种设备一套,设备购买价格及维修费用见表. 该公司在第一年开始时新购入一套设备,问今后 5 年的设备更新方案如何,才能使得总费用最省?
图模型
- 节点 表示第 年开始时购买一套设备,节点 6 为虚设节点.
- 用 表示第 年的购买费, 表示 个使用年限的维修费.
- 令弧 的长度 为第 年的购买费与 年里的维修费之和,即
- 求结点 1 到 6 之间的最短路.
求解过程
8.3 最小生成树
- Kruskal 算法:对一个连通赋权图 ,选择所有结点构成最小生成树的顶点,将图 的所有边按照从小到大进行排序,依次选择边连接顶点,若加入的边构成圈,则不选择,继续这种做法直到产生生成树
- Step1:设 ,将 的 条边 按权的递增顺序排成序列;设当前边集和顶点标号分别为:,
- Step2:依次取边 加入边集 : 判断边 的两个端点 的标号是否相等,若相等,则 ,转 Step2,否则,取
- Step3:对所有满足标号 中的 取 ,目的是保持同一个连通分支中的已入选边的顶点具有相同标号
- Step4:若 中边个数为 ,则停止,否则取 ,转 Step2
通讯网络最佳连接(91MCMB)
某通讯公司在县城设有九个通讯站,其位置如下:
现要求把这些通讯站连接成一张网络,已知建设费用与连线总长度成正比,问应该如何联接才能使得总费用最低?
方案一:直线铺设
- 以九个结点为顶点构造完全图,边长为两个结点之间的欧式距离
- 求该图的最小生成树
方案二:直角铺设
假设:
线路要尽可能沿水平或竖直方向铺设,以充分利用街道的布局
- 为此,须改用向量的 1-范数作为节点的距离度量
最优方案
8.4 图问题的数学规划模型
- 经典的图论模型中,很多问题都具有最优化的特征,例如:最短路、最小生成树、最大流、最优匹配,等等.
- 特别地,很多图上的最优化问题都具有线性和整数的特征,因此,许多图论问题也可以直接使用数学规划,特别是线性规划、整数规划的方法来求解.
最短路问题的 0-1 规划模型
- 考虑包含 个顶点的
有向图
,记起点为 1,终点为 , 表示边 的权重
- 设 表示边 位于顶点 1 至顶点 的最短路径中.
- 目标函数:
- 约束条件:
- (起点处只有出边,没有入边)
- (终点处只有入边,没有出边)
- (其他点上出入边数相同)
- (两个结点间只能有一条边被使用), (每条边最多用一次)
最小生成树问题的 0-1 规划模型
- 考虑包含 个顶点的
无向连通图
, 表示边 的权重
- 设 表示边 为图的最小生成树中的边
- 任选一点 作为最小生成树的顶点
- 目标函数:
- 约束条件:
- (树的顶点至少要连接一条边)
- (除顶点外,其他结点只有一条入边)
- (两点之间只有一条边可以被使用),
Hamilton 回路问题
确保形成一个圈
为每个节点引入一个标号 ,在同一回路中,后一个节点为前一个节点标号加 ,从而构成约束条件如下
8.5 经典图算法工具
NetworkX
igraph
课后思考
()10 个节点 构成一个计算机局域网,它们之间的连接关系及通讯延时如下表所示.
(1)试画出该局域网节点间的连接关系图;(2)计算 至 的延时最短的路径,以及相应的延时值.
节点连接关系如下,如 (, , 2) 表示 与 相连,延时值为 2 秒.
(, , 2), (, , 3), (, , 3), (, , 4), (, , 5), (, , 1), (, , 6), (, , 5), (, , 7), (, , 4), (, , 6), (, , 6), (, , 4), (, , 5), (, , 7), (, , 7),(, , 6)