图论课件--有向图
图论课件--有向图33页PPT
41、学问是异常珍贵的东西,从任何源泉吸 收都不可耻。——阿卜·日·法拉兹
42、只有在人群中间,才能认识自 己。——德国
43、重复别人所说的话,只需要教育; 而要挑战别人所说的话,则需要头脑。—— 玛丽·佩蒂博恩·普尔
44、卓越的人一大优点是:在不利与艰 难的遭遇里百折不饶。——贝多芬
图论课件--Biblioteka 向图26、机遇对于有准备的头脑有特别的 亲和力 。 27、自信是人格的核心。
28、目标的坚定是性格中最必要的力 量泉源 之一, 也是成 功的利 器之一 。没有 它,天 才也会 在矛盾 无定的 迷径中 ,徒劳 无功。- -查士 德斐尔 爵士。 29、困难就是机遇。--温斯顿.丘吉 尔。 30、我奋斗,所以我快乐。--格林斯 潘。
图论课件-有向图
例3 求下图D的强连通分支、单向连通分支。
2
3
4
5
1
9
8
7
6
D
14
1
0.5 n 0
0.5
1 2 1.5 t1
0.5
00
1 0.8
0.6 0.4 x 0.2
(1) D的强连通分支
2
3
4
5
{1} {2, 3, 9, 8, 4, 7} {5} {6}
1
9
8
7
6
D
上面点集导出的子图是 D的强 连通分支。
2
证明:“必要性”
设V(D)={v1,v2,…,vn}。由于D是强连通图,所以,对任 意两点vi与vj, 都存在(vi, vj)路,同时也存在(vj ,vi)路。所以 存在如下闭途径:v1→v2→…→vn→v1。这是一条包含D的 所有顶点的回路。
12
1
0.5 n 0
0.5
1 2 1.5 t1
0.5
00
1
0.5 n 0
0.5
1 2 1.5 t1
0.5
00
1 0.8
0.6 0.4 x 0.2
(2) 在L中取v7, U中取点v6 , 作边<v7, v6>。令l (v6)=l (v7)+1=3, L ={v1,v7,v6}, U={v2,v3,…,v5}, A={ <v1, v7>, <v7, v6> }
6
1
0.5 n 0
0.5
1 2 1.5 t1
0.5
00
1 0.8
0.6 0.4 x 0.2
对 v V (D) ,有
d (v) d (v) 1
简要版PPT4图论方法4-5(完全图有向图之发掘性质)
温馨提示为了设计教学场景互动效果的需要,课件中采用了大量“播放后隐藏”的文本,从而导致预览模式下出现诸多文本重叠,影响阅读。
但在放映模式下,这些现象都不会出现。
另外,课件中的图像均不是一次性形成,而是展现了“尝试-修改-成形”等发生过程,这可能导致预览模式下出现诸多乱码,但在放映模式下,图形则非常生动、美观。
图论方法4-5(完全图有向图之发掘性质)●冯跃峰本讲内容本节为第4板块(图论方法)第4专题(完全图有向图)的第5小节(发掘性质),包含如下3个部分内容:第一部分,概述问题涉及的知识方法体系;第二部分,思维过程剖析。
这是课件的核心部分,重在发掘问题特征,分析如何找到解题方法。
按照教师场景授课互动效果设计,立足于启发思维;第三部分,详细解答展示。
提供笔者重新书写的解答(简称“新写”),力求严谨、流畅、简练。
所谓“完全图”,就是任何点都连边的图;所谓“有向图”,就是给每条边标注了一个方向。
特别地,一个图是完全图又是有向图,则称为“竞赛图”。
它们包括三种常见的思路:三种思路局部扩展从一点或边出发,逐步扩充为完全图反面剔除去掉若干引出虚边的点,使不再有虚边,得到完全图考察极端跃峰奥数本节介绍“局部扩展”的相关例子■。
在特定范围内取某种容量最大的图或考察元素的极端分布。
【图论方法(完全图、有向图)】【图论4-5】给定正整数n≥3,试证:n阶竞赛图Gn 存在一个三角形回路的充分必要条件是,Gn存在两个出度相等的点。
【题感】从目标看【1】,属于“存在性”问题【1】。
就充分性而言,是要找到“一个三角形回路【1】”;就必要性而言,是要找到“两个出度相等的点【1】”。
前者可采用构造的方法,后者有明显的“抽屉”影子,但无法用抽屉原理求解:题中唯一的条件“三角形回路”难以找到“空抽屉”,只能从反面来验证,导出矛盾(假定结论不成立,导出与“存在三角形回路”矛盾)。
先考虑充分性。
假定d+(Ai )= d+(Aj),我们要找到一个长为3的有向圈,这可从Ai 、Aj出发,利用“局部扩展”策略,由边AiA j扩充为长为3的有向圈即可■。
chap14 有向图
有向H图的应用
任务的最佳排序问题:假设有任务t1, t2, …tn需在
同一设备上串行执行,从任务ti转到任务tj所需的 设备调整时间是aij,如何排任务执行次序,使设 备调整需时间最少?
1、建图:建立有向图D, 顶点对应于要执行的任务,
vivjA(D)当且仅当aijaji。边vivj带权aij。
T的高度为3 ;
T中的蓝色结点及弧构成 T的一个以v2为根的子树.
27
有序树
定义14.3.3:若对一个树T的结点(弧)从
上至下,同一层结点(弧)从左至右规定了 一个次序,则称T为有序树。 v0 有序树的编号:
v1 v2 v3
v21
v211 v212
v22
v213
v31
28
m元(有序)树
定义14.3.4:设T是(有序)树,m 1。
3 v3
D D’
17
竞赛图
竞赛图:完全图的定向图称为竞赛图。
n阶竞赛图可用来表示n个选手之间进行
循环赛的胜负状态。
有一人全胜,其余各胜 一场: 有一人全输,其余各胜 两场:
18
竞赛图都含有向H通路
有向图D的有向H通路是指一条包含D的所有顶
点的有向通路(有向哈密尔顿通路)。 推论14.2.1:每个竞赛图都含有向H通路。 证明:设D是竞赛图, D的基础图G是完全图, 于是, (G) = |V(D)| =p , 由定理14.2.1知,D中含长为p–1的有向通路, 也就是说,该通路上包含了所有的p个顶点, 即为有向H通路。
3(a). D 中任何一条有向(u, v)-通路(u≠v)P均满足 (u)≠(v) 3(b). D 中的任何弧(u,v) v 1 的首尾不同色 2 4. 总之,基础图G的 任何两个邻接的顶 点在下均不同色, 4 即是G的正常(k+1) v2 着色。 故k≥ (G) –1
第8章_有向图
图论及其应用
5
8.1 有向图——习题
10.1.1. 一个简单图有多少个定向图? 10.1.2. 证明: = = 。 10.1.3. 设有向图D中无有向圈,则 d (v ) d (v ) v V v (a) = 0V; (b) 存在一个顶点排序v1,……,v ,使对1 i ,每条 以vi为 头的弧其尾都在{v1,……,vi-1} 中。 10.1.4. 证明:D是双向连通的 D是连通的,且D的每个块 是双向连通的。 10.1.5. D的逆图 是把D中每弧的方向都改为其反向所得的 有向图。试用逆图慨念及习题10.1.3.(a) 来证明: 若有向图D中 无有向圈,则+ = D 。 0 10.1.6. 证明:严格有向图包含长 max{ ,+}的有向路。 10.1.7. 证明:严格有向图中若max{ ,+} = k 1,则 D包含长 k+1 的有向圈。
图论及其应用
第8章 有向图
8.1 有向图
有向图(directed graph;digraph) D =(V,A) V(D) —— 顶点集。 a u v A(D) —— 弧集。 弧a = (u,v):其头为v,其尾为u; 弧a从u连到(join to)v。 有向子图(subdigraph) 有向图D的基础图(underlying graph) 对应于D的无向图G(称D为G的一个定向 (orientation)图)
8.1 有向图
易见,有向图D = (V, A)中顶点间的双向连通性是V上 的一个等价关系,它的等价类确定了V的一个划分 (V1,……,Vm), 使顶点u与v双向连通 u与v 同属某等价类Vi 。 称每个导出子图D[V1],……,D[Vm]为有向图D的一 个双向分支(dicomponent;strong component)。 当D只有一个双向分支时,称D为双向连通的。 易见,D的任二双向分支之间的弧都是同一个方向的。 例
第七章 第一讲 无向图及有向图
完全图举例
K5
3阶有向完全图
4阶竞赛图
子图(subgraph)
定义8 设G=<V,E>,G=<V ,E>为两个图(同为无 向图或同为有向图),若V V且E E,则称G 是G的子图,G为G 的母图,记作G G。 若V V或E E,则称G 为G的真子图。
若et∈E,使得et=<vi,vj>,则称vi为et的始点,vj为 et的终点,并称vi邻接到vj,vj邻接于vi。
若ek的终点为el的始点,则称ek与el相邻(adjacent)。 el ek vi vj
定义3 在无向图中,关联一对顶点的无向边如果多于1条 ,则称这些边为平行边,平行边的条数称为重数。
3
欧拉:传奇的一生
年少时,听从父亲的安排,巴塞尔大学,学习神学和希伯来语 ,结果被约翰· 伯努利欣赏,17岁获得硕士学位之后,才开始 专供数学。
为获得圣彼得堡科学院的医学部的职位空缺,欧拉在巴塞尔便 全力投入生理学的研究,并出席医学报告会。1727年,等他到 达俄罗斯时,叶卡捷琳娜一世女皇去世,他进入数学部。 1733年,欧拉回到瑞士,并结婚,一生共生育13个孩子,5个 存活。 为了赢得巴黎奖金而投身于一个天文学问题,那是几个有影响 的大数学家搞了几个月时间的,欧拉在三天之后把它解决了。 可是过分的劳累使他得了一场病,病中右眼失明了。 欧拉到底出了多少著作,直至1936年人们也没有确切的了解。 但据估计,要出版已经搜集到的欧拉著作,将需用大4开本60 4 至80卷。彼得堡学院为了整理他的著作整整花了 47年。
解: (3,3,2,1),(3,2,2,1,1) 不可以图化
(3,3,2,2)可以图化
(3,2,2,2,1)可以图化
图论的介绍ppt课件
工程项目的任务安排,如何满足限制条件,并在最短时 间内完成?
Program structure
大型软件系统,函数(模块)之间调用关系。编译器分 析调用关系图确定如何最好分配资源才能使程序更有效 率。
Graph Applications
Graph Problems and Algorithms
图论的介绍ppt课件
欧拉路径 解決哥尼斯保七桥问題
原來是一笔画问题啊!
数学家欧拉(Euler, 1707-1783) 于1736年严格的证明了上述哥尼斯堡 七桥问题无解,并且由此开创了图论的典型思维方式及论证方式
实际生活中的图论 Graph Model
电路模拟
例:Pspice、Cadence、ADS…..
哈密頓(Hamilton) 周遊世界问題
正十二面体有二十个顶点 表示世界上20个城市 各经每个城市一次 最后返回原地
投影至平面
哈密頓路径至今尚无有效方法來解決!
最短路径问題
(Shortest Path Problem)
最快的routing
最快航線
B 2
1
E
3
A
C 1
3 2F
1
3
D
3 3
G
最短路径算法Dijkstra算 法
二分图(偶图) Bipartite graphs
A graph that can be decomposed into two partite sets but not fewer is bipartite
It is a complete bipartite if its vertices can be divided into two non-empty groups, A and B. Each vertex in A is connected to B, and viceversa
图论讲义第8章-有向图
正整数。
定理 8.4.3 非平凡弱连通有向图 G 有 Euler 有向迹的充分必要条件是 G 中存在两个顶点 u 和
w 满足 d + (u) = d − (u) +1, d + (w) = d − (w) −1,而其它顶点都有 d + (v) = d − (v) 。
定理 8.4.4 设 G 是弱连通有向图,如果 G 中存在两个顶点 u 和 w 满足 d + (u) = d − (u) +k, d + (w) = d − (w) −k,(k 是一个正整数),而其它顶点都有 d + (v) = d − (v) ,则 G 中从 u 到 w
这便定义出一个有向图。
注:(1)相应地,前面所说的边不带有方向的图称为无向图。 (2)一个无向图 G 可以对应若干个有向图,它称为所对应的有向图的基础图或底图。 (3)将有向图的顶点可用平面上的一个点来表示,弧可用平面上的有向线段来表示(直
的或曲的),这样画出的平面图形称为图(有向图)的图示。 (4)对一条弧 e=<u, v>,其第二分量顶点 v(即箭头指向的顶点)称为它的首顶点,另一
对任何顶点 v ∈V (G − A′) ,如果 G − A′ 中从 v 出发的最长有向路长为 i,则给 v 染色 i+1。 用 Vi 表示染有第 i 种色的顶点的集合。下证(V1,V2,···,Vk+1)是 G 的正常 k+1 顶点染色。为此, 先证明关于这种染色的两个结论。 (1) G − A′ 中任一有向路的起点与终点异色
连通的。 (3) 若对 G 的任二顶点 u, v,既存在有向路 P(u, v),又存在有向路 P(v, u),则称 G 是强连通
有向图完全有向图图的基本概念邻接顶点uv
最小生成树
克鲁斯卡尔 (Kruskal) 算法
经常需要判断权值最小的边的两端是否属于不同连 通分量
可使用并查集技术加快判断速度
0 28 1
10 14 16
562
25 24
18 12
4 22 3
10 (0,5) 12 (2,3) 14 (1,6) 16 (1,2) 18 (3,6) 22 (3,4)
10 14 16
01
01
10
562
25 24
18 12
4 22 3
562 43
562 43
01
10
562
12
43
01
10 14
562
12
43
01
10 14 16
562
12
43
01
10 14 16
562
12
4 22 3
01
10
14 16
562
25
12
4
22
3
28
最小生成树
克鲁斯卡尔 (Kruskal) 算法
dest cost link dest cost link
11
24
22
39
36
03
15
39
4 A
1
2 5
B
28
邻接表(出边表)
14
图的遍历
从给定顶点出发,沿某些边遍历图中所有顶点 一次且仅一次
使用辅助数组visited[ ]标识顶点是否被访问过
visited[ ]初始为0 访问过后标识为1
经常需要判断权值最小的边的两端是否属于不同连 通分量
第四章 有向图-1
例 1:M={0,1},k=8 即m=2,有 8 个0,1 构成的码,它们出现的概 率 分 别 为 p1 = 0.6 , p2 = 0.2 , p3 = p4 = 0.05 , p5 = p6 = p7 = 0.03 , p8 = 0.01,构作一个二元有序树。 解:原则:尽可能使概率大的码短小。先把概率以不增次序 排列 0.6, 0.2, 0.05, 0.05, 0.03, 0.03, 0.03, 0.01 把最小的两个概率相加后重排: 0.6, 0.2, 0.05, 0.05, 0.04, 0.03, 0.03 ⇒ 0.6, 0.2 ,0.06, 0.05, 0.05, 0.04 ⇒ 0.6, 0.2, 0.09, 0.06, 0.05 ⇒ 0.6, 0.2, 0.11, 0.09 ⇒ 0.6 ,0.4
/− ∗a ↑ ex ∗ b + y1z
= /− ∗a ↑ ex ∗ b( y + 1)z = /− ∗a ↑ ex[b( y + 1)]z
= /− ∗ae x[b( y + 1)]z
= /− (ae x )[b( y + 1)]z
= /[ae x − b( y + 1)]z
= [ae x − b( y + 1)] / z
1001
e 0000 1000 16
100
e01006
0011
e8
011
e e 4 0101 1011
e e 101 11 09110 e5
120111 111
e 1010 111001
110
1110
e14
e13
1111
图论课件有向图32页PPT
60、生活的道路一旦选定,就要勇敢地 走到底 ,决不 回头。 ——左
•
Байду номын сангаас
46、寓形宇内复几时,曷不委心任去 留。
•
47、采菊东篱下,悠然见南山。
•
48、啸傲东轩下,聊复得此生。
•
49、勤学如春起之苗,不见其增,日 有所长 。
•
50、环堵萧然,不蔽风日;短褐穿结 ,箪瓢 屡空, 晏如也 。
图论课件有向图
56、书不仅是生活,而且是现在、过 去和未 来文化 生活的 源泉。 ——库 法耶夫 57、生命不可能有两次,但许多人连一 次也不 善于度 过。— —吕凯 特 58、问渠哪得清如许,为有源头活水来 。—— 朱熹 59、我的努力求学没有得到别的好处, 只不过 是愈来 愈发觉 自己的 无知。 ——笛 卡儿
第8章 有向图
有向图 D
D 的双向分支
图论及其应用 4
8.1 有向图
− 入度(indegree)d D (v ) 。 入度 d+ 出度(outdegree) D (v ) 。 出度 记号 δ+,δ− :最小出、入度; ∆+ , ∆- :最大出、入度。 称有向图D为严格的 严格的(strict) 严格的 ⇔ 无环、且不存在两弧其端点及方向相同。
定理10.1 (Roy,1967; Gallai,1968) 有向图 包含一 有向图D包含一 定理 长为 χ - 1 的有向路。 的有向路
证明:令D’ 为D的极大 极大无有向圈、有向生成子图(注:D’ 可由空生成子 极大 图作为开始,在保持无有向圈的条件下,通过逐步加弧而得) 。令k为D’ 中最长有向路的长。今用色1,2,……,k+1对D’ 进行顶点着色如下: 将v着以色i ⇔ D’ 中以v为起点的最长有向路的长为i 1。 来证这是D的正常(k+1)-顶点着色: 先证,D’ 中任一有向(u,v)-路P的起、终点u与v一定不同色:设v被着以色 i 。则由着色法知,在 D’ 中以v为起点的一最长有向路,设为,Q的长为i - 1 。由于D’ 中无有向圈,PQ为一有向路,起点为u,长 ≥ i 。从而u上的 色j > i。 只要再证,D中任一弧(u,v)的两端一定不同色:当 (u,v)为D’ 中的弧时, 它就是D’ 中的一有向(u,v)-路,从而u与v不同色。 9 图论及其应用
10.2 有向路
当 (u,v)不是D’ 中的弧时,由D′ 之极大性知 D’ + (u,v) 包含一有向圈C。于是, C - (u,v) 是 D’ 中的有向(v,u)-路,从而u与v也不同色。 由上述知,D为(k+1)-可着色的,因此 χ ≤ k+1 ,得k ≥ χ - 1 , 故D中有长为χ - 1 的有向路。 #
有向图及无向图的比较研究ppt课件
分析2:顶点Vi 的度=第 i 行 (列) 中1 的个数;
特别:完全图的邻接矩阵中,对角元素为0,其余全1。
ppt精选版
16
有向图的邻接矩阵如何表示?
v1
A
v2
顶点表: ( v1 v2 v3 v4 )
邻接矩阵: 0 10 01 0 v1
A.Edge = 0 0 0 0 v2
v3
v4
0 0 0 01 v3
2 有向图的邻接表和逆邻接表 1)有向图的邻接表 顶点:用一维数组存储(按编号顺序) 以同一顶点为起点的弧:用线性链表存储
例
下标 编号 link
0 V0 1 V1 2 V2 3 V3
1
2
3 0
类似于无向图的邻接表, 所不同的是:
以同一顶点为起点的弧: 用线性链表存储
V0
V1
m-1
ppt精选版
V2
V3
1 无向图的邻接表 顶点:通常按编号顺序将顶点数据存
储在一维数组中; 关联同一顶点的边:用线性链表存储
该结点表示边 (Vi Vj),其中的1是Vj
在一维数组中的位置
下标 编号 link
例
V0
V1
V2
0 V0 1 V1 2 V2
3 V3
1
3
0
2
4
1
3
4
0
2
V3
V4 4 V4
1
2
m-1
ppt精选版
11
ppt精选版
15
无向图的邻接矩阵如何表示?
v1
v2
顶点表:( v1 v2 v3 v4 v5 )
A
v3
邻接矩阵:
v4
00 10 00 10 00 v1
图论:有向图和无向图,有环和无环
图论:有向图和⽆向图,有环和⽆环
有向⽆环图:为什么不能有环,有环会导致死循环。
检查⼀个有向图是否存在环要⽐⽆向图复杂。
(有向图为什么⽐⽆向图检查环复杂呢?)
现实中管⽹会存在环吗?管⽹是有⽅向的,理论上也是⽆环的。
arcgis有向⽆环图最短路径。
有向⽆环图和⼆叉树的关系:如何确定⽗节点和⼦节点[没有⽗节点的就是⽗节点,没有⼦节点的就是叶⼦节点] 有向⽆环图并不⼀定能转化成树【那能不能把有向⽆环图劈开成多棵树】
⼀个⽆环的有向图称做有向⽆环图(Directed Acyclic Graph)。
简称DAG 图。
DAG 图是⼀类较有向树更⼀般的特殊有向图,如图给出了有向树、DAG 图和有向图的例⼦。
虽然DAG图是更⼀般的有向图,但是依然可以使⽤树的判断公式来判断复杂度。
判断是否有环:
1. 起点编码和终点编码是否相等
从OBJECTID为1的开始遍历:下⼀个点是否与OBJECTID为1的相等。
如果相等,则回到起点,为环。
>>性质:有向⽆环图的⽣成树个数等于⼊度⾮零的节点的⼊度积。
有向⽆环图⽣成树:
(百度百科上不是说有向⽆环图不⼀定能转换成树吗?严格意义上,树的叶⼦节点只有⼀个⽗节点)
DAG(有向⽆环图)能否转化为树?:
如果说⼀个叶⼦节点有两个⽗节点,会怎么样
有向⽆环图不⼀定能只⽣成⼀棵树,但是可以⽣成多棵树。
但是这样就破坏了什么信息呢?。
判断一个图是否有环无向图有向图讲解
一、无向图:方法1:∙如果存在回路,则必存在一个子图,是一个环路。
环路中所有顶点的度>=2。
∙ n算法:第一步:删除所有度<=1的顶点及相关的边,并将另外与这些边相关的其它顶点的度减一。
第二步:将度数变为1的顶点排入队列,并从该队列中取出一个顶点重复步骤一。
如果最后还有未删除顶点,则存在环,否则没有环。
∙ n算法分析:由于有m条边,n个顶点。
i)如果m>=n,则根据图论知识可直接判断存在环路。
(证明:如果没有环路,则该图必然是k棵树k>=1。
根据树的性质,边的数目m = n-k。
k>=1,所以:m<n)ii)如果m<n 则按照上面的算法每删除一个度为0的顶点操作一次(最多n次),或每删除一个度为1的顶点(同时删一条边)操作一次(最多m次)。
这两种操作的总数不会超过m+n。
由于m<n,所以算法复杂度为O(n)。
∙注:该方法,算法复杂度不止O(V),首先初始时刻统计所有顶点的度的时候,复杂度为(V + E),即使在后来的循环中E>=V,这样算法的复杂度也只能为O(V + E)。
其次,在每次循环时,删除度为1的顶点,那么就必须将与这个顶点相连的点的度减一,并且执行delete node from list[list[node]],这里查找的复杂度为list[list[node]]的长度,只有这样才能保证当degree[i]=1时,list[i]里面只有一个点。
这样最差的复杂度就为O(EV)了。
方法2:DFS搜索图,图中的边只可能是树边或反向边,一旦发现反向边,则表明存在环。
该算法的复杂度为O(V)。
方法3:摘自:/lzrzhao/archive/2008/03/13/2175787.aspx PS:此方法于2011-6-12补充假定:图顶点个数为M,边条数为E遍历一遍,判断图分为几部分(假定为P部分,即图有P 个连通分量)对于每一个连通分量,如果无环则只能是树,即:边数=结点数-1只要有一个满足边数> 结点数-1原图就有环将P个连通分量的不等式相加,就得到:P1:E1=M1-1P2:E2=M2-1...PN:EN>MN-1所有边数(E) > 所有结点数(M) - 连通分量个数(P)即: E + P > M 所以只要判断结果 E + P > M 就表示原图有环,否则无环.实例代码如下:1.#include<iostream>2.#include<malloc.h>ing namespace std;4.#define maxNum 100 //定义邻接举证的最大定点数5.int visited[maxNum];//通过visited数组来标记这个顶点是否被访问过,0表示未被访问,1表示被访问6.int DFS_Count;//连通部件个数,用于测试无向图是否连通,DFS_Count=1表示只有一个连通部件,所以整个无向图是连通的7.int pre[maxNum];8.int post[maxNum];9.int point;//pre和post的值10.11.//图的邻接矩阵表示结构12.typedef struct13.{14.char v[maxNum];//图的顶点信息15.int e[maxNum][maxNum];//图的顶点信息16.int vNum;//顶点个数17.int eNum;//边的个数18.}graph;19.void createGraph(graph *g);//创建图g20.void DFS(graph *g);//深度优先遍历图g21.void dfs(graph *g,int i);//从顶点i开始深度优先遍历与其相邻的点22.void dfs(graph *g,int i)23.{24.//cout<<"顶点"<<g->v[i]<<"已经被访问"<<endl;25. cout<<"顶点"<<i<<"已经被访问"<<endl;26. visited[i]=1;//标记顶点i被访问27. pre[i]=++point;28.for(int j=1;j<=g->vNum;j++)29. {30.if(g->e[i][j]!=0&&visited[j]==0)31. dfs(g,j);32. }33. post[i]=++point;34.}35.36.void DFS(graph *g)37.{38.int i;39.//初始化visited数组,表示一开始所有顶点都未被访问过40.for(i=1;i<=g->vNum;i++)41. {42. visited[i]=0;43. pre[i]=0;44. post[i]=0;45. }46.//初始化pre和post47. point=0;48.//初始化连通部件数为049. DFS_Count=0;50.//深度优先搜索51.for(i=1;i<=g->vNum;i++)52. {53.if(visited[i]==0)//如果这个顶点为被访问过,则从i顶点出发进行深度优先遍历54. {55. DFS_Count++;//统计调用void dfs(graph *g,int i);的次数56. dfs(g,i);57. }58. }59.}60.void createGraph(graph *g)//创建图g61.{62. cout<<"正在创建无向图..."<<endl;63. cout<<"请输入顶点个数vNum:";64. cin>>g->vNum;65. cout<<"请输入边的个数eNum:";66. cin>>g->eNum;67.int i,j;68.//输入顶点信息69.//cout<<"请输入顶点信息:"<<endl;70.//for(i=0;i<g->vNum;i++)71.// cin>>g->v[i];72.//初始画图g73.for(i=1;i<=g->vNum;i++)74.for(j=1;j<=g->vNum;j++)75. g->e[i][j]=0;76.//输入边的情况77. cout<<"请输入边的头和尾"<<endl;78.for(int k=0;k<g->eNum;k++)79. {80. cin>>i>>j;81. g->e[i][j]=1;82. g->e[j][i]=1;//无向图对称83. }84.}85.int main()86.{87. graph *g;88. g=(graph*)malloc(sizeof(graph));89. createGraph(g);//创建图g90. DFS(g);//深度优先遍历91.//连通部件数,用于判断是否连通图92. cout<<"连通部件数量:";93. cout<<DFS_Count<<endl;94.if(DFS_Count==1)95. cout<<"图g是连通图"<<endl;96.else if(DFS_Count>1)97. cout<<"图g不是连通图"<<endl;98.//各顶点的pre和post值99.for(int i=1;i<=g->vNum;i++)100. cout<<"顶点"<<i<<"的pre和post分别为:"<<pre[i]<<" "<<post[i]<<endl;101.//cout<<endl;102.//判断无向图中是否有环103.if(g->eNum+DFS_Count>g->vNum)104. cout<<"图g中存在环"<<endl;105.else106. cout<<"图g中不存在环"<<endl;107.int k;108. cin>>k;109.return 0;110.}111./*112.输入:113.正在创建无向图...114.请输入顶点个数vNum:10115.请输入边的个数eNum:9116.请输入边的头和尾117.1 2118.1 4119.2 5120.2 6121.4 7122.5 9123.6 3124.7 8125.9 10126.*/注意:有向图不能使用此方法。
CHAP12 有向图共44页
u 7 9 8
x
1 5
6 4
v 2 3
w
10.01.2020
离散数学
10.01.2020
离散数学
8
有向图的连通性
定义12.1.2:设D是有向图, ⑴若对D中任意顶点u、v,同时有(u, v)—通路
和(v, u)—通路存在,称D是双向连通图,或强 连通图; ⑵若对D中任意顶点u、v,或有(u, v)—通路, 或有(v, u)—通路,称D是单连通图; ⑶若D的基础图是连通图,则称D是弱连通图。 显然,强连通图单连通图弱连通图。
弧的头和尾:如果是有向图D的一条弧,
且() =uv , 则称u是的尾,v是的头。
环:有向图中头尾相同的弧。 多重弧:两条或两条以上的头尾相同的
弧。 简单有向图:无环,无多重弧的有向图。
10.01.2020
离散数学
6
有向图中的度
出度:在有向图中,以顶点u为尾的弧的 数目称为u的出度,记为dD+(u) ;
入度:在有向图中,以顶点u为头的弧的 数目称为u的入度,记为dD– (u) ;
度:入度与出度的和为u的度,记为dD(u) ;
10.01.2020
离散数学
7
有向图中的途径
有向途径:有向图中一个头尾相接的途径; 有向链:弧不重复的有向途径; 有向通路:顶点不重复的有向途径; 有向回路:起点和终点重合的有向通路.
有一人全胜,其余各胜 有一人全输,其余各胜
一场:
两场:
10.01.2020
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 0.8
0.6 0.4 x 0.2
“充分性”
不失一般性,设C= v1→v2→…→vn→v1是包含D的所有顶 点的一条回路。对于D的任意两点vi与vj(i<j) ,一方面,由C 可得到vi到vj的途径vi →vi+1 →… →vj。另一方面,由C又可 得到vj到vi的途径vj →vj+1 →…vi-1 →vi。所以D中任意两点是 强连通的,即D是强连通图。
0.5
00
1 0.8
0.6 0.4 x 0.2
定义3 在一个有向图D中,如果没有有向环和平行边, 则称该图为简单有向图。
v1 e4
e7 e6
v2
v4
e5
e3
e1
e2
v3
非简单有向图D
v1 e4 v4
e2
e6
v2
e5 e1
v3
简单有向图D
定义4 设D是有向图,去掉D中边的方向后得到的无向 图G,称为D的基础图。又若G是无向图,给G的每条边 加上方向后得到的有向图D称为G的一个定向图。
7
1
0.5 n 0
0.5
1 2 1.5 t1
0.5
00
1 0.8
0.6 0.4 x 0.2
对 v V (D) ,有
d (v) d (v) 1
2、性质
定理1 设D=(V, E)是有向图,则:
d (v) d (v) m(D)
vV (D)
vV (D)
证明:由出度与入度的定义立即可得上面等式。
v6 G
v3 v4
解: (1) 取点v1, 令l (v1)=1, L={v1}, U={v2,v3,…,v7},A=Φ; (2) 在U中取点v7 , 作边<v1, v7>。令l (v7)=l (v1)+1=2, L ={v1,v7}, U={v2,v3,…,v6}, A={ <v1, v7> }
21
例如:
v1 e4
e7 e6
v2
v4
e5
e3
e1
e2
v3
有向图D
e1 v3, v2
v3与v2分别是e1 的起点与终点。 定义2 在一个有向图D中,具有相同起点和终点的边 称为平行边。两点间平行边的条数称为该两点间的重数。
例如,在上图中,e6与e7是平行边。
4
1
0.5 n 0
0.5
1 2 1.5 t1
证明:“必要性”
设V(D)={v1,v2,…,vn}。由于D是强连通图,所以,对任 意两点vi与vj, 都存在(vi, vj)路,同时也存在(vj ,vi)路。所以 存在如下闭途径:v1→v2→…→vn→v1。这是一条包含D的 所有顶点的回路。
13
1
0.5 n 0
0.5
1 2 1.5 t1
0.5
00
v1(1)
v2
v3
v1(1)
v2
v3
v5
v5(4)
v7(2)
V6(3)
v4
v7(2)
V6(3)
v4
Gv5 , 作边<v6, v5>。令l (v5)=l (v6)+1=4,
L ={v1,v7,v6,v5}, U={v2,v3, v4}, A={ <v1, v7>, <v7, v6> , <v6, v5> }
2、强连通定向算法
该算法采用顶点标号方法给边标上方向。设G=(V, E)是2 边连通图。
(1) 在G中任取顶点w, 令l (w)=1, L={w},U=V-{w},A=Φ;
(2) 在L中求点v, 使得l (v)最大且满足在U中存在其邻点u。然 后作有向边<v, u>。令l (u)=l (v)+1 , L = L∪{u},U=U-{u} 且A=A∪{ <v, u> };
d (v) d (v) 1
证明:不失一般性,设G是连通图。G中奇度顶点个数必 然为偶数个,将偶数个奇数度顶点配对,然后在每一对配对 顶点间连一条边得到欧拉图G1。在G1中用Fluery算法求出G 的一欧拉环游C,然后顺次地在C上标上方向,由此得到C的 定向图C1。
在C1中,去掉添加的边后,得到G的定向图D.显然:
(2) 若D无环。称矩阵M=(mij)n×m是D的关联矩阵,其中
1,
vi是e
的始点,
j
mij -1,vi是边ej的终点,(1 i n,1 j m),
0, 其它.
9
1
0.5 n 0
0.5
1 2 1.5 t1
0.5
00
1 0.8
0.6 0.4 x 0.2
例1 写出下面有向图D1的邻接阵和D2的关联阵。
0.6 0.4 x 0.2
但是,对于单向连通分支来说,D的某个顶点,可能会分 属于D的若干个单向连通分支。原因是单向连通关系不是等 价关系。
(三)、图的定向问题
图的定向问题是有向图中的一个典型问题之一,具有广 泛的应用背景。
城市交通网设计问题: 一座城市为某种需要,要把所有街 道改为单行道,使得人们在任意两个位置都可以相互到达。 如何设计单行道方向?
点v的出度与入度之和称为点v的度,记为d(v)。
d (v4 ) 2 d (v4 ) 2 d (v4 ) 4
v1
e4 v4
e7 e6
e5
v2 e1
e2
v3
有向图D
6
1
0.5 n 0
0.5
1 2 1.5 t1
0.5
00
1 0.8
0.6 0.4 x 0.2
例1 一个简单图有多少个定向图? 答:因为每条边有2种定向方式,所以共有2 m(G)种定向。 例2 求证:G存在一个定向图D,使得对 v V (D) ,有
3
4
1
5
6
9
8
7
16
1
0.5 n 0
0.5
1 2 1.5 t1
0.5
00
1 0.8
0.6 0.4 x 0.2
(2) D的单向连通分支
2
3
4
5
D的单向连通分支就是D本身。 1
注:求D的强、弱连通分支比较 容易,求单向分支比较困难。
9
8
7
6
D
定理2: 有向图D=(V,E)的每个点位于且仅位于D的某个 强(弱)连通分支中。
图论建模:街道交叉口模型为图的顶点,两点连线当且 仅当该两点是某街道的端点。
18
1
0.5 n 0
0.5
1 2 1.5 t1
0.5
00
1 0.8
0.6 0.4 x 0.2
问题等价于在模型图中给出其强连通定向。
对于任意一个无环图G,要对其作强连通定向,需要解 决两个问题:一是强连通定向的存在性问题,二是如何定向 问题。
证明:对于弱连通分支情形,命题结论是显然的。
对于强连通分支情形,因为不难证明:D中顶点间的强 连通关系是等价关系。该等价关系对应的等价类在D中的导 出子图必然是D的一个强分支。而D的一个强分支包含的顶 点也必然是该等价关系的一个等价类。
17
1
0.5 n 0
0.5
1 2 1.5 t1
0.5
00
1 0.8
v1(1) v2(5)
v3
v1(1) v2(5)
v3(6)
1
0.5 n 0
0.5
1 2 1.5 t1
0.5
00
1 0.8
0.6 0.4 x 0.2
图论及其应用
应用数学学院
1
1
0.5 n 0
0.5
1 2 1.5 t1
0.5
00
1 0.8
0.6 0.4 x 0.2
本次课主要内容 有向图
(一)、有向图的概念与性质 (二)、有向图的连通性 (三)、图的定向问题 (四)、有向路与有向圈
1
0.5 n 0
0.5
1 2 1.5 t1
0.5
00
1 0.8
0.6 0.4 x 0.2
(2) 在L中取v7, U中取点v6 , 作边<v7, v6>。令l (v6)=l (v7)+1=3, L ={v1,v7,v6}, U={v2,v3,…,v5}, A={ <v1, v7>, <v7, v6> }
3) 若D的中任意两点是双向连通的,称D是强连通图;
D1
D2
D3
12
1
0.5 n 0
0.5
1 2 1.5 t1
0.5
00
1 0.8
0.6 0.4 x 0.2
在上面三图中,D1是强连通的,D2是单向连通的,而D3 仅为弱连通图。
关于强连通图,我们有如下结论: 定理1: 有向图D=(V,E)是强连通的,当且仅当D中存在 包含D中所有顶点的回路。
例3 求下图D的强连通分支、单向连通分支。
2
3
4
5
1
9
8
7
6
D
15
1
0.5 n 0
0.5
1 2 1.5 t1
0.5
00
1 0.8
0.6 0.4 x 0.2
(1) D的强连通分支
2
3
4
5
{1} {2, 3, 9, 8, 4, 7} {5} {6}
1
9
8
7
6
D
上面点集导出的子图是 D的强 连通分支。
2
如果e是D的一条边,而u与v是使得фD(u,v)=e的顶点, 那么称e是由u连接到v,记为e=<u, v>。同时,称u为e的 弧尾(起点), v为e的弧头(终点)。