第十章 图与网络分析

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

15
6.4.5 以最短路为基础汇总网路上的流
1 2 3 电路交换网 4 5 4 5 2 1 3 传输网
• 在电路网中每两点之间都有中继电路群需求,但并不是任 两点都有物理传输链路 • 根据两点间最短传输路径将该两点间的电路需求量加载到 这条传输路径上去:设 a25=10 是节点2 和 5 之间的电路需 求,节点2 和 5 之间的最短传输路径为 2135,则加载过 程为: T21=T21+10, T13=T13+10, T35=T35+10; Tij 是传输链路 ij 上加载的电路数;当所有点间电路都加载完则算法结束
B
D
17
解中国邮递员问题的步骤
0、将图中的所有悬挂点依次摘去 1、求所有奇次点间的最短距离和最短路径 2、根据奇次点间的最短距离求最小完全匹配 3、根据最小完全匹配和最短路径添加重复边 4、将悬挂点逐一恢复,并加重复边 5、根据得到的偶图,给出欧拉回路的若干种走法
3
5 2
6
4
9
3 5
3
2
6
4
9
3
2
5
6
5
Fra Baidu bibliotek
4
8
4 5 2
2
6
5
4
8
4
1
6
4
4
7
0
1
6
4
4
7
18
解中国邮递员问题的步骤
2 4 6 8 2 0 4 10 0 6 7 7 0 8 10 8 7 0 2 4 6 8 2 4 5 6 3 5 8 5 5,7 5,9 -
最短距离矩阵
添 加 重 复 边 0
2
转接矩阵
找 出 所 有 基 本 回 0 路
第十章 图与网络分析
• • • • • •
图的基本概念 最小支撑树 最短路问题 网络系统最大流问题 网络系统中的最小费用最大流问题 中国邮递员问题
2
一、图的基本概念
• 哥尼斯堡七桥问题 (Kö nigsberg Bridge Problem)。 • Leonhard Euler (1707-1783) 在1736年发表第一篇图论 方面的论文,奠基了图论中的一些基本定理。
is i s, t it
• 满足上述条件的网路流称为可行流
13
确定网路最大流的标号法
• 从任一个初始可行流出发,如 0 流 • 基本算法:找一条从 s 到 t 点的增广链(augmenting path)
• 若在当前可行流下找不到增广链,则已得到最大流
• 增广链中与 s 到 t 方向一致的弧称为前向弧,反之后向弧 • • 增广过程:前向弧 fij=fij +q , 后向弧 fij=fij q 增广后仍是可行流
19
3
5
2
6
4
9
3
3
6
9
2
5
6
5
4
8
4
2
5
8
1
6
4
4
7
1
4
7
6.6 哈密尔顿回路及旅行推销员问题
6.6.1 哈密尔顿回路( Hamiltonian circuit)
• 连通图G(V,E)中的回路称为哈密尔顿回路,若该回路包括图中 所有的点。显然哈密尔顿回路有且只有 n 条边,若|V|=n • 连通图具有哈密尔顿回路的充分必要条件是什么?这个问题是 由爱尔兰数学家哈密尔顿1859年提出的,但至今仍未解决 • 欧拉回路是对边进行访问的问题,哈密尔顿回路是对点进行访 问的问题 • 搜索哈密尔顿回路的难度是 NP-complete • 任两点间都有边的图称为完全图(或全连接图) • 完全图中有多少个不同的哈密尔顿回路? (n1)!/2 • 完全图中有多少个边不相交的哈密尔顿回路? (n1)/2 • 最小哈密尔顿回路问题 (NP-complete) • 哈密尔顿路径:包含图中所有点的路径 • 为什么说找两点间的最长路是非常困难的问题?
20
6.6.2 旅行推销员问题(Traveling Salesman Problem)
• 旅行推销员问题(TSP):设v1, v2, ...,vn 为 n 个已知城市,城市 之间的旅程也是已知的,要求推销员从 v1出发,走遍所有城 市一次且仅一次又回到出发点,并使总旅程最短 • 这种不允许点重复的旅行推销员问题就是最小哈密尔顿回路 问题 • 一般旅行推销员问题(GTSP):允许点重复的TSP • 当网路边权满足三角不等式时,一般旅行推销员问题就等价 于最小哈密尔顿回路问题 • 当网路边权不满足三角不等式时,只要用两点间最短路的距 离代替原来的边权,就可以满足三角不等式,在此基础上求 最小哈密尔顿回路 典型的应用: • 乡邮员的投递路线 • 邮递员开邮箱取信的路线问题 • 邮车到各支局的转趟问题 21
B
D
B
D
B
D
B
D
8
避圈法、破圈法
C 6 1 A
5 7 3
E
4
F
4
5
B
2
D
9
三、最短路问题
V2 8 6 V1 2 2 4 V3 3
8
V5 5 3
V7
9
6
V4
V6
10
狄克斯特拉算法 (Dijkstra algorithm, 1959)
• 计算两节点之间或一个节点到所有节点之间的最短路
令 dij 表示 vi 到 vj 的直接距离(两点之间有边),若两点之间 没有边,则令 dij = ,若两点之间是有向边,则 dji = ; 令 dii = 0,s 表示始点,t 表示终点
12
四、网络系统的最大流问题
网络系统最大流的概念 • 定义网路上支路的容量为其最大通过能力,记为 cij , 支路上的实际流量记为 fij • 容量限制条件:0 fij cij • 平衡条件:

v j A ( vi )
fij

v j B ( vi )
v( f ) f ji 0 v( f )
TSP 的启发式算法(Heuristic algorithm)
• 穷举法:指数算法 • 分支定界法:隐枚举法 • 二交换法 (two-option, Lin’s algorithm)
– 哈密尔顿回路可以用点的序列表示 – 从任一个哈密尔顿回路(即任何一个序列)出发 – 按照一定顺序试图交换相邻两个点的顺序,若路程减少则完 成交换,继续下一个交换;若没有改善,则不进行本次交换, 尝试下一个交换;若所有的相临交换都试过而不能改善,则 算法结束,得到一个局部最优点
( n 1)n( 2n 1)
1 3
n ( n 1)
2
k 1
• Dijkstra算法 – i=1 n 1 次临时标记,永久标记 n 1 次比较和赋值 – i=2 n 2 次临时标记,永久标记 n 2 次比较和赋值 – i=k n k 次临时标记,永久标记 n k 次比较和赋值
• 当边都有方向时,称为有向图。在有向图中,有向边 又称为弧
• 图中既有边又有弧,称为混合图
5
链,圈,路,回路 • 相邻节点的序列 {v1 ,v2 ,…, vn} 构成一条链(link) • 首尾相连的链称为圈(loop) • 在有向图中,链中每条边的方向和链的方向一致,将 该链称为路径(path) • 首尾相连的路称为回路(circuit);
1 1
3
10
1
2
1 3 17 8 6 1
5
6
4
5
4
初始解:1-2-3-4-5 1-3-2-4-5
2
2 1
3 2 1 1
23
3
10
1
3 2
1 1
3
10
5
6
4
5
4
1-3-2-4-5 1-3-4-2-5
1-3-4-2-5 1-3-4-5-2 5-3-4-2-1 3-1-4-2-5 23
• 模拟退火 (Simulated Annealing)
– 随机地采用二交换法 – 当交换后没有使目标函数改善,也可能以玻尔兹曼分布概率 被接受,但这种概率是随模拟的温度下降而减少的 – 发挥了计算机的优点,尽量减少陷入局部极值点 – 模拟物理机制
22
二交换法举例
11
2
23
23
2
11
1 3
10 2
14
五、 最小费用最大流
• 双权网路:每条弧不但有容量,还有单位流量的通过费用 • 两种解法:一种基于最小费用路径算法;一种基于可行弧集 的最大流算法 • 基于最小费用路径算法:总是在当前找到的最小费用的路径 上增广流;缺点是每次增广后要改变弧的费用,且出现负权 值费用的弧 • 基于可行弧集的最大流算法:从 0 费用弧集开始应用最大流 算法,然后根据计算信息提高费用的限界P,使可行弧集增 大,再应用最大流算法,直至所有弧都进入可行弧集。这种 算法是一种主-对偶规划的解法。使用这种方法的还有运输 问题、匹配问题
11
Dijkstra最短路算法的特点和适应范围
• 一种隐阶段的动态规划方法 • 每次迭代只有一个节点获得永久标记,若有两个或两个以上 节点的临时标记同时最小,可任选一个永久标记;总是从一 个新的永久标记开始新一轮的临时标记,是一种深探法 • 被框住的永久标记 Tj 表示 vs 到 vj 的最短路,因此 要求 dij0, 第 k 次迭代得到的永久标记,其最短路中最多有 k 条边,因 此最多有n1 次迭代 • 可以应用于简单有向图和混合图,在临时标记时,所谓相邻 必须是箭头指向的节点;若第 n1 次迭代后仍有节点的标记 为 ,则表明 vs 到该节点无有向路径 • 如果只求 vs 到 vt 的最短路,则当 vt 得到永久标记算法就结束 了;但算法复杂度是一样的 • 应用 Dijkstra 算法 n1 次 ,可以求所有点间的最短路 • vs 到所有点的最短路也是一棵生成树,但不是最小生成树
n1
4( n k ) 2n( n 1)
24
k 1
Prim算法的改进
增加一个辅助记录型数组,用以记录当前 V 中各节点到 V 的最小边, minedge[i].cost 记录该边的权值, minedge[i].vex 记录该边 V 中的 顶点。若 minedge[i].cost<0 则表明 i 点进入集合 V for i:=2 to n do begin minedge[i].vex:=1; minedge[i].cost:=w[1,i] end; for i:=1 to n 1 do begin mi:=maxint; for j:=2 to n do if (minedge[j].cost>0) and (minedge[j].cost<mi) then begin k:=j; mi:=minedge[j].cost end; minedge[k].cost:= minedge[k].cost; {找到 k,将 k 加入集合 V} for j:=2 to n do if (w[k,j]<minedge[j].cost) then begin minedge[j].cost:=w[k,j]; minedge[j].vex:=k; end; end; { 该算法复杂度 约为 5n(n-1) } 25
算法复杂度
• Prim算法 – i=1 n 1 次比较,最多 n 1 次赋值 – i=2 2(n 2) 次比较,最多 2(n 2) 次赋值 – i=k k(n k) 次比较,最多 k(n k) 次赋值
n1
2k ( n k ) 2n
n( n 1) 2

2 6
0、令始点Ts=0,并用• 住,所有其它节点临时标记 Tj= ; 框
1、从 vs 出发,对其相邻节点 vj1 进行临时标记,有 Tj1=ds,j1 ; 2、在所有临时标记中找出最小者,并用• 住,设其为 vr 。若此 框
时全部节点都永久标记,算法结束;否则到下一步;
3、从新的永久标记节点 vr 出发,对其相邻的临时标记节点进行 再标记,设 vj2 为其相邻节点,则 Tj2=min{Tj2, Tr+dr,j2 },返回 第2步。
A
A
D C
C D
B
B
3
图与网路的基本概念
• 图 (Graph)
– 节点和边的集合
– 一般用 G(V,E) 表示
– 点集 V={v1,v2,…, vn} – 边集E={eij }
e22 v1 e12 e'13 e13 e34 v3 图 6.1 v4
4
v2 e24 e45
v5
无向图与有向图
• 边都没有方向的图称为无向图
v1 e12 e'13 e13 e34 v3 v4 e24 e45
6
e22 v2
v5
二、树与最小支撑树
• 树:无圈的连通图 • 管理的指标体系、家谱、分类学、组织结构等都是典 型的树图
C1

C2
C3
C4

7
图的支撑树
A C A C A C

B D B D B D
图的支撑树
A C A C A C A C
16
6.5 欧拉回路和中国邮递员问题
• 中国邮递员问题(Chinese Postman Problem, CPP)是由我国 管梅谷教授于1962年首先提出并发表的 • 问题是从邮局出发,走遍邮区的所有街道至少一次再回到 邮局,走什么路由才能使总的路程最短? • 如果街区图是一个偶图,根据定理 3,一定有欧拉回路, CPP 问题也就迎刃而解了 • 若街区图不是偶图,则必然有一些街道要被重复走过才能 回到原出发点 A • 显然要在奇次点间加重复边 • 如何使所加的边长度最少 • 归结为求奇次点间的最小 C 匹配( minimum weighted match) — 由Edmons 给出 多项式算法(1965)
相关文档
最新文档