- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第7章 图与网络模型
§1 §2 §3 §4 §5 图与网络的基本概念 树图与最小生成树 最短路问题 最大流问题 最小费用最大流问题
图论 Graph Theory
• 哥尼斯堡七桥问题 (Königsberg Bridge Problem) • Leonhard Euler (1707-1783) 在1736年发表第一篇图 论方面的论文,奠基了图论中的一些基本定理 • 很多问题都可以用点和线来表示,一般点表示实体, 线表示实体间的关联
3.1 求解最短路的Dijkstra算法(Dijkstra algorithm, 1959)
Dijkstra算法也称为双标号算法。所谓双标号,也就是对图中的点vj 赋予两个标号(lj,kj),第一个标号lj表示从起点vs到vj的最短路的长度,第 二个标号kj表示在vs到vj的最短路上vj前面一个邻点的下标。
应用举例:某大学准备对其所属的7个学院办公室计算机 联网,这个网络的可能连通的路径如图G所示,图中 v1,…,v7表示7个学院办公室,图中的边为可能联网的路 径,边上所赋的权数为这条路线的长度,单位为百米。 请设计一个网络能连通7个学院办公室,并使总的线路长 度最短。
v2 3 v1 10 v6 3 3 v7 5 4 v5 1 4 2 v3 7 v4 8
1.3 端点,关联边,相邻,次
• 图中可以只有点,而没有边;而有边必有点 • 若节点vi, vj 之间有一条边 eij,则称 vi, vj 是 eij 的端点 (end vertex),而 eij 是节点 vi, vj 的关联边(incid%nt edge) • 同一条边的两个端点称为相邻(adjacent)节点,具有共同 端点的边称为相邻边 • 一条边的两个端点相同,称为自环(self-loop);具有两 个共同端点的两条边称为平行边(parallel edges) • 既没有自环也没有平行边的图称为简单图(simple graph) • 在无向图中,与节点相关联边的数目,称为该节点的 “次”(degree),记为 d ;次数为奇数的点称为奇点 (odd),次数为偶数的点称为偶点(even);图中都是偶点的 图称为偶图(even graph)
例1. 求下图中v1到v6的最短路。
v2 3 7
2
5 v4
v6
v1
2
5
3 1
1
v3 5
v5
1. 2.
3.
4.
5. 6.
给起始点v1标以(0,s),表示从v1到v1的距离为0。 已标号点集I={v1},未标号点集J={v2,v3,v4,v5,v6},弧集 {(vi,vj)|vi∈I,vj∈J}={(v1,v2),(v1,v3),(v1,v4)},并有 s12=l1+c12=0+3=3,s13=l1+c13=0+2=2,s14=l1+c14=0+5,min( s12,s13,s14)=s13=2. 我们给弧(v1,v3)的终点v3标以(2,1). I={v1,v3},J={v2,v4,v5,v6},弧集 {(vi,vj)|vi∈I,vj∈J}={(v1,v2),(v1,v4),(v3,v4)}且 s34=l3+c34=2+1=3,min(s12,s14,s34)=s12=s34=3.给弧(v1,v2) 的终点标以(3,1),弧(v3,v4)的终点标以(3,3). I={v1,v2,v3,v4},J={v5,v6},弧集 {(vi,vj)|vi∈I,vj∈J}={(v2,v6),(v4,v6)},并有 s26=l2+c26=3+7=10,s46=l4+c46=3+5=8,min(s26,s46)=s46=8. I={v1,v2,v3,v4,v6},J={v5},弧集为∅,计算结束。v5没 有标号表明从v1到v5没有有向路。 最短路径为v1→v3→v4→v6.
G
1. 在G中找到一个圈(v1,v7,v6,v1),并知在此圈上边 [v1,v6]的权数10为最大,在G中去掉边[v1,v6]得图G1。
1
3 4
v2
v3 7 2 v4
8 v5
v1 10
v6
3 3
v7
5 4
G1
2. 在G1中找到一个圈(v3,v4,v5,v7,v3),并知在此圈 上边[v4,v5]的权数8为最大,在G1中去掉边[v4,v5]得图G2。
A
A D C B
C
D
B
§1 图与网络的基本概念
1.1 图与网络
• 节点 (Vertex) – 物理实体、事物、概念 – 一般用 vi 表示
• 边 (Edge) – 节点间的连线,表示有 关系 – 一般用 eij 表示 • 图 (Graph) – 节点和边的集合, – 一般用 G(V,E) 表示 – 点集 V={v1,v2,…, vn} • 网络 (Network) – 边上具有表示连接强度 的权值,如 wij – 又称加权图(Weighted graph)
v2
3
1
v3 7
v1
3 3
v7
2
v4
v6
v5
G5
§3 最短路问题
• 最短路问题是对一个赋权的有向图G(权数可能是路 程的长度、花费的成本等等)中的指定的两个点Vs和 Vt找到一条从Vs到Vt的路,使得这条路上所有弧的权 数的总和最小,这条路被称为从Vs到Vt的最短路,这 条路上所有弧的权数的总和被称之为从Vs到Vt的距离。
e22 v1 e'13 v3 e13 e34 图 6.1 e12 v2 e24 e45 v4 v5
– 边集E={eij}
1.2 无向图与有向图
• 边都没有方向的图称为无向图,如图1 • 在无向图中 eij=eji,或 (vi, vj)=(vj, vi) • 当边都有方向时,称为有向图,用G(V,A)表示 • 在有向图中,有向边又称为弧,用 aij表示,i, j 的顺序 是不能颠倒的,图中弧的方向用箭头标识 • 图中既有边又有弧,称为混合图
2.2 图的生成树
• 树 T 是连通图 G 的生成树(spanning tree),若 T 是 G的子图且包含图 G 的所有的节点;包含图 G 中部 分指定节点的树称为 steiner tree
2.3 最小生成树
• 有n 个乡村,各村间道路的长度是已知的, 如何铺设光缆线路使 n 个乡村连通且总长度 最短 • 显然,这要求在已知边长度的网路图中找最 小生成树
• 首尾相连的路径称为回路(circuit);
1.4 链,圈,路径,回路,连通图
• 走过图中所有边且每条边仅走一次的闭行走称为欧拉 回路 定理 2:偶图一定存在欧拉回路(一笔画定理) 1.4 连通图,子图,成分 • 设有两个图 G1(V1, E1), G2(V2, E2), 若V2 V1, E2 E1, 则 G2 是 G1 的子图 • 无向图中,若任意两点间至少存在一条路径,则称为 连通图(connected graph),否则为非连通图( disconnected graph);非连通图中的每个连通子图称为成分 (component) • 链,圈,路径(简称路),回路都是原图的子图 • 平面图(planar graph),若在平面上可以画出该图而没 有任何边相交
1. 给起点v1以标号(0,s)表示从v1到v1的距离为0,v1为起点。 2. 找出已标号的点的集合I,没标号的点的集合J以及弧的集 合{(vi,vj)|vi∈I,vj∈J},这里这个弧的集合是指所有从已 标号的点到未标号的点的弧的集合。 3. 如果上述弧的集合是空集,则计算结束。如果vt已标号 (lt,kt),则vs到vt的距离即为lt,而从vs到vt的最短路径, 则可以从kt反向追踪到起点vs而得到。如果vt未标号,则 可以断言不存在从vs到vt的有向路。否则转下一步。 4. 对上述弧的集合中的每一条弧,计算sij=li+cij在所有的sij 中,找到其值为最小的弧,不妨设此弧为(vc,vd),则给此 弧的终点以双标号(scd,c),返回第2步。
v2
3
1
4
v3 7 2 v4
v1
3 3
v7
v6
4
v5
G4
5. 在G4中找到一个圈(v2,v3,v7,v2),并知在此圈上 边[v3,v7]的权数5为最大,在G2中去掉边[v5,v7]得图G3。
1
3 4
v2
v3 7 2 v4
v1
3 3
v7
v6
v5
G5
6. 在G5中已找不到任何一个圈了,可知G5即为图G的 最小生成树。这个最小生成树的所有边的总权数为 3+3+3+1+2+7=19。
v2 15 v1 甲地 10 v3 3 6 17 v4 5 2 v7 乙地 6 v6
4 4 v5
1. 2.
3.
4.
5.
起始点v1标号为(0,s). I={v1},J={v2,v3,v4,v5,v6,v7},边集{[vi,vj]|vi,vj中一个∈I,另 一个∈J}={[v1,v2],[v1,v3]},且s12=l1+c12=0+15=15, s13=l1+c13=0+10=10,min(s12,s13)=s13=10,边[v1,v3]中 未标号点v3标以(10,1). I={v1,v3},J={v2,v4,v5,v6,v7},边集 {[vi,vj]}={[v1,v2],[v3,v2],[v3,v5]},且s32=l3+c32=10+3=13, s35=l3+c35=10+4=14,min(s12,s32,s35)=s32=13.边[v3,v2]中 未标号的点v2标以(13,3). I={v1,v3,v2},J={v4,v5,v6,v7},边集 {[vi,vj]}={[v3,v5],[v2,v4],[v2,v7]},且 s24=l2+c24=13+6=19,s27=l2+c27=13+17=30,min(s35,s24,s27) =s35=14.边[v3,v5]中未标号的点v5标以(14,3). I={v1,v2,v3,v5},J={v4,v6,v7},边集 {[vi,vj]}={[v2,v4],[v5,v4],[v2,v7],[v5,v6]},并有 s54=l5+c54=14+4=18,s56=l5+c56=14+2=16,min(s24,s54,s27,s5 6)=s56=16.边[v5,v6]中未标号的点v6标以(16,5).