图论基础
图论基础知识

end;
end;
end;
End; 15
End; End;
以上dfs(i)的时间复杂度为O(n*n)。 对于一个非连通图,调用一次dfs(i),即按深度优先顺序依次访问了顶点i所在的(强)连通分支,所以 只要在主程序中加上:for i:=1 to n do {深度优先搜索每一个未被访问过的顶点}
if not Visited(I) then dfs(i);
Begin
访问顶点i;Visited[i]:=true;顶点i入队q;
while 队列q非空 do
begin
从队列q中取出队首元素v;
for j:=1 to n do
begin
if (not Visited[j]) and (a[v,j]=1) then
begin
时间:O(n*n)
访问顶点j;Visited[j]:=true;顶点j入队q
强连通分支:一个有向图的强连通分支定义为该图的最大的强连通子图, 右图含有两个强连通分支,一个是1和2构成的一个子图,一个是3独立构 成的一个子图。
7
图论算法与实现
一、图论基础知识
3、图的存储结构(n阶e条边):
8
图论算法与实现
一、图论基础知识
4、图的遍历: 从图中某一顶点出发系统地访问图中所有顶点,使每个顶点恰好
11
图论算法与实现
一、图论基础知识
4、图的遍历: 图的宽(广)度优先遍历:类似于树的按层次遍历。从图中某个顶点V0出 发,访问此顶点,然后依次访问与V0邻接的、未被访问过的所有顶点,然 后再分别从这些顶点出发进行广度优先遍历,直到图中所有被访问过的顶 点的相邻顶点都被访问到。若此时图中还有顶点尚未被访问,则另选图中 一个未被访问过的顶点作为起点,重复上述过程,直到图中所有顶点都被 访问到为止。
图论的基础概念和算法

图论的基础概念和算法图论是数学的一个分支,研究的对象是图。
图是由一组互不相连的节点(顶点)和连接这些节点的边(边)组成的数学结构。
图论的基础概念包括顶点、边、路径、环、度数等。
本文将介绍图论的基础概念以及常用的图算法。
一、基础概念1. 图的定义和表示图由顶点集合和边集合组成。
顶点集合用V表示,边集合用E表示。
图可以用邻接矩阵或邻接表来表示。
邻接矩阵是一个二维数组,用来表示图中顶点之间的连接关系。
邻接表是一个链表数组,用来表示每个顶点相邻顶点的列表。
2. 顶点和边顶点是图的基本组成单位,用来表示图中的一个节点。
边是连接两个顶点的线段,用来表示两个顶点之间的关系。
3. 路径和环路径是由一系列相邻顶点连接而成的顶点序列。
路径的长度是指路径上经过的边的数目。
环是起点和终点相同的路径。
4. 度数顶点的度数是指与其相邻的边的数目。
入度是指指向该顶点的边的数目,出度是指由该顶点指向其他顶点的边的数目。
图中顶点的度数可以用来判断顶点的重要性。
二、常用算法1. 广度优先搜索(BFS)广度优先搜索是一种用来遍历和搜索图的算法。
从一个起始顶点开始,逐层扩展,先访问距离起始顶点最近的顶点,然后访问它们的相邻顶点,并逐渐向外扩展。
广度优先搜索可以用来计算两个顶点之间的最短路径。
2. 深度优先搜索(DFS)深度优先搜索是另一种常用的图遍历算法。
从一个起始顶点开始,沿着一条路径尽可能深入地访问图,直到不能再继续深入为止,然后回溯到上一个顶点,继续探索其他路径。
深度优先搜索可以用来计算连通分量、拓扑排序和寻找环等。
3. 最小生成树最小生成树是指图中通过连接所有顶点的子图,并且该子图的边权重之和最小。
常用的最小生成树算法包括Prim算法和Kruskal算法。
Prim算法从一个顶点开始,逐步扩展最小生成树的边,直到包含所有顶点为止。
Kruskal算法则是从边的权重最小的边开始,逐步增加边到最小生成树中,直到包含所有顶点为止。
4. 最短路径算法最短路径算法用来计算两个顶点之间的最短路径。
1.图论基本知识

图 论 起 源 能否从某一块陆地出发经过所有的桥一次 且仅一次最后回到出发点? 欧拉为了解决这个问题,采用了建立数学 模型的方法。他将每一块陆地用一个点来代 替,将每一座桥用连接相应两点的一条线来 代替,从而得到一个有四个“点”,七条 “线”的“图”。问题成为从任一点出发一 笔画出七条线再回到起点。
3、图论的基本概念
1) 图的概念 2) 赋权图与子图 3) 图的矩阵表示 4) 图的顶点度 5) 路和连通
1) 图的概念
一个图 是指一个二元组 是指一个二元组(V(G),E(G)),其中 定义 一个图G是指一个二元组 ,其中: 1) V (G ) = {v1, v2 ,L, vν }是非空有限集,称为顶点集, 是非空有限集,称为顶点集, 其中元素称为图G的顶点. 其中元素称为图 的顶点 2) E(G)是顶点集 是顶点集V(G)中的无序或有序的元素偶对 是顶点集 中的无序或有序的元素偶对 (vi , v j ) 组成的集合,即称为边集 其中元素称为边. 组成的集合,即称为边集 其中元素称为边 边集,其中元素称为 例 设 G = (V (G ), E (G )) , 其中:V (G ) = {v1, v2 , v3 , v4 },
u1 u2 u3 u4 0 3 7 8 u1 ∞ 0 ∞ ∞ u 2 A= ∞ 6 0 ∞ u3 ∞ ∞ 4 0 u 4
对于无向赋权图的邻接矩阵可类似定义. 对于无向赋权图的邻接矩阵可类似定义
关联矩阵 1) 对无向图 G = (V , E ) ,其关联矩阵 M = ( mij )ν ×ε , 其中: 其中: 1, 若vi与e j 相关联, mij = 0, 若vi与e j(V (G ), E (G )) 的每一条边e 都赋以 的每一条边 一个实数w(e),称w(e)为边 的权,G 连同边上的权 为边e的 一个实数 , 为边 赋权图. 称为赋权图 称为赋权图 是两个图. 定义 设 G = (V , E )和 G′ = (V ′, E ′) 是两个图 1) 若V ′ ⊆ V , E ′ ⊆ E ,称 G′是 G 的一个子图 记 G′ ⊆ G. 的一个子图 子图,记 称 E 2) 若V ′ = V, ′ ⊆ E ,则称 G′是G 的生成子图. 生成子图
图论基础图的表示与常见算法

图论基础图的表示与常见算法图论是数学的一个分支,研究的是图这种数学结构。
图由节点(顶点)和边组成,是研究网络、关系、连接等问题的重要工具。
在图论中,图的表示和算法是非常重要的内容,本文将介绍图的表示方法以及一些常见的图算法。
一、图的表示1. 邻接矩阵表示法邻接矩阵是表示图的一种常见方法,适用于稠密图。
对于一个有n 个节点的图,邻接矩阵是一个n×n的矩阵,其中第i行第j列的元素表示节点i到节点j是否有边相连。
如果有边相连,则该元素的值为1或边的权重;如果没有边相连,则该元素的值为0或者无穷大。
邻接矩阵的优点是可以方便地进行边的查找和修改,但缺点是对于稀疏图来说,会浪费大量的空间。
2. 邻接表表示法邻接表是表示图的另一种常见方法,适用于稀疏图。
对于一个有n 个节点的图,邻接表是一个长度为n的数组,数组中的每个元素是一个链表,链表中存储了与该节点相连的其他节点。
邻接表的优点是节省空间,适用于稀疏图,但缺点是查找边的时间复杂度较高。
3. 关联矩阵表示法关联矩阵是表示图的另一种方法,适用于有向图。
对于一个有n个节点和m条边的图,关联矩阵是一个n×m的矩阵,其中第i行第j列的元素表示节点i和边j的关系。
如果节点i是边j的起点,则该元素的值为-1;如果节点i是边j的终点,则该元素的值为1;如果节点i与边j无关,则该元素的值为0。
关联矩阵适用于有向图,可以方便地表示节点和边之间的关系。
二、常见图算法1. 深度优先搜索(Depth First Search,DFS)深度优先搜索是一种用于遍历或搜索图的算法。
从起始节点开始,沿着一条路径一直向下搜索,直到到达叶子节点,然后回溯到上一个节点,继续搜索其他路径。
DFS可以用递归或栈来实现。
2. 广度优先搜索(Breadth First Search,BFS)广度优先搜索是另一种用于遍历或搜索图的算法。
从起始节点开始,先访问起始节点的所有邻居节点,然后再依次访问邻居节点的邻居节点,以此类推。
图论基础知识

图论算法与实现
一、图论基础知识
4、图的遍历: 对下面两个图分别进行深度优先遍历,写出遍历结果。 注意:分别从a和V1出发。
左图从顶点a出发,进行深度优先遍历的结果为:a,b,c,d,e,g,f 右图从V1出发进行深度优先遍历的结果为:V1,V2,V4,V8,V5,V3,V6,V7
邻接矩阵
边集数组
邻接表
优点O(1)
存储稀疏图时,空 间效率比较好,也 比较直观
便于查找任一顶点的关联边及 关联点,查找运算的时间复杂 性平均为O(e/n)
存储稀疏图,会造 成很大的空间浪费
不适合对顶点的运 算和对任意一条边 的运算
要查找一个顶点的前驱顶点和以此顶点 为终点的边、以及该顶点的入度就不方 便了,需要扫描整个表,时间复杂度为O (n+e)。可以用十字邻接表改进
被访问一次,这种运算操作被称为图的遍历。为了避免重复访问某个 顶点,可以设一个标志数组visited[i],未访问时值为false,访问一次 后就改为true。
图的遍历分为深度优先遍历和广度(宽度)优先遍历两种方法。 图的深度优先遍历:类似于树的先序遍历。从图中某个顶点Vi出发, 访问此顶点并作已访问标记,然后从Vi的一个未被访问过的邻接点Vj出 发再进行深度优先遍历,当Vi的所有邻接点都被访问过时,则退回到上 一个顶点Vk,再从Vk的另一个未被访问过的邻接点出发进行深度优先遍 历,直至图中所有顶点都被访问到为止。
常州市第一中学 林厚从
图论算法与实现
一、图论基础知识
4、图的遍历: 对于一个连通图,深度优先遍历的递归过程如下:
Procedure dfs(i:integer); {图用邻接矩阵存储} Begin
访问顶点i; Visited[i]:=True; For j:=1 to n do {按深度优先搜索的顺序遍历与i相关联的所有顶点}
图论1—图论基础

几种特殊的图 完全图: 完全图:图G的任何两个不同的顶点是邻接 的任何两个不同的顶点是邻接 则图G是完全的 的,则图 是完全的 补图: 的顶点集合为 的顶点集合为V(G),且对于图 的 补图:G’的顶点集合为 ,且对于图G的 每对顶点u, , 是 的边当且仅当 的边当且仅当uv不 每对顶点 ,v,uv是G’的边当且仅当 不 是G中的边 中的边 空图: 的边集为空集 的边集为空集。 空图:G的边集为空集。 二分(部 图 二分 部)图:V(G)的顶点能够被划分为两个 的顶点能够被划分为两个 子集U,W,使得 的每条边必然连接 和W 的每条边必然连接U和 子集 ,使得G的每条边必然连接 的一个顶点
图论1—图论基础
孙睿
什么是图? 什么是图
C A D B
哥尼斯堡七桥示意图
问题1(哥尼斯堡七桥问题): 问题1(哥尼斯堡七桥问题): 1(哥尼斯堡七桥问题 能否从任一陆地出发通过每座桥恰好一次而 回到出发点? 回到出发点?
C
A D
B
七桥问题模拟图
欧拉指出: 欧拉指出: 如果每块陆地所连接的桥都是偶数座, 如果每块陆地所连接的桥都是偶数座,则 从任一陆地出发, 从任一陆地出发,必能通过每座桥恰好一次而 回到出发地. 回到 我们大部分情况只讨论有限简单图: 有限简单图 顶点个数是有限的; (1) 顶点个数是有限的 (2) 任意一条边有且只有两个不同的点与它 相互关联; 相互关联 若是无向图, (3) 若是无向图, 则任意两个顶点最多只有 一条边与之相联结; 一条边与之相联结 若是有向图, (4) 若是有向图, 则任意两个顶点最多只有 两条边与之相联结. 两条边与之相联结. 当两个顶点有两条边与之相 联结时,这两条边的方向相反. 联结时,这两条边的方向相反. 如果某个有限图不满足(2)(3)(4),可在某条 如果某个有限图不满足(2)(3)(4),可在某条 (2)(3)(4), 边上增设顶点使之满足. 边上增设顶点使之满足.
图论基础知识汇总

图论基础知识汇总(总32页) -CAL-FENGHAI.-(YICAI)-Company One1-CAL-本页仅作为文档封面,使用请直接删除图与网络模型及方法§1 概论图论起源于18世纪。
第一篇图论论文是瑞士数学家欧拉于1736 年发表的“哥尼斯堡的七座桥”。
1847年,克希霍夫为了给出电网络方程而引进了“树”的概念。
1857年,凯莱在计数烷22 n n H C 的同分异构物时,也发现了“树”。
哈密尔顿于1859年提出“周游世界”游戏,用图论的术语,就是如何找出一个连通图中的生成圈,近几十年来,由于计算机技术和科学的飞速发展,大大地促进了图论研究和应用,图论的理论和方法已经渗透到物理、化学、通讯科学、建筑学、生物遗传学、心理学、经济学、社会学等学科中。
图论中所谓的“图”是指某类具体事物和这些事物之间的联系。
如果我们用点表示这些具体事物,用连接两点的线段(直的或曲的)表示两个事物的特定的联系,就得到了描述这个“图”的几何形象。
图论为任何一个包含了一种二元关系的离散系统提供了一个数学模型,借助于图论的概念、理论和方法,可以对该模型求解。
哥尼斯堡七桥问题就是一个典型的例子。
在哥尼斯堡有七座桥将普莱格尔河中的两个岛及岛与河岸联结起来问题是要从这四块陆地中的任何一块开始通过每一座桥正好一次,再回到起点。
当 然可以通过试验去尝试解决这个问题,但该城居民的任何尝试均未成功。
欧拉为了解决这个问题,采用了建立数学模型的方法。
他将每一块陆地用一个点来代替,将每一座桥用连接相应两点的一条线来代替,从而得到一个有四个“点”,七条“线”的“图”。
问题成为从任一点出发一笔画出七条线再回到起点。
欧拉考察了一般一笔画的结构特点,给出了一笔画的一个判定法则:这个图是连通的,且每个点都与偶数线相关联,将这个判定法则应用于七桥问题,得到了“不可能走通”的结果,不但彻底解决了这个问题,而且开创了图论研究的先河。
图与网络是运筹学(Operations Research )中的一个经典和重要的分支,所研究的问题涉及经济管理、工业工程、交通运输、计算机科学与信息技术、通讯与网络技术等诸多领域。
数学中的图论基础

数学中的图论基础图论作为数学中的一个重要分支,研究的是图这种数学结构。
图论不仅在数学理论中有着重要的地位,而且在计算机科学、运筹学、电路设计等领域也有着广泛的应用。
本文将介绍数学中的图论基础知识,包括图的基本概念、性质以及一些经典的应用。
1. 图的基本概念图由节点(顶点)和边组成,是图论研究的基本对象。
图可以分为有向图和无向图两种。
1.1 有向图有向图中的边是有方向的,即从一个节点指向另一个节点。
有向图用表示,其中为节点集合,为有向边的集合。
1.2 无向图无向图中的边是没有方向的,即连接两个节点的边不区分起点和终点。
无向图用表示,其中为节点集合,为无向边的集合。
2. 图的性质图论中有许多重要的性质和定理,这些性质对于研究图的结构和特点具有重要意义。
2.1 连通图在无向图中,如果任意两个节点之间都存在路径相连,则称该图是连通图。
连通图中任意两个节点都是连通的,不存在孤立的节点。
2.2 完全图完全图是一种特殊的图,任意两个节点之间都存在一条边相连。
完全图用表示,其中表示图中节点的个数。
2.3 欧拉图欧拉图是指一条路径经过图中每条边恰好一次的连通图。
欧拉图有一个著名的结论——存在欧拉回路的充要条件是该图所有节点度数为偶数。
2.4 哈密顿图对于一个图,如果存在一条路径经过图中每个节点恰好一次,则称该路径为哈密顿路径。
如果存在一条经过每个节点恰好一次的回路,则称该回路为哈密顿回路。
3. 图论的应用图论在现实生活和学术研究中有着广泛的应用。
以下介绍一些图论在实际问题中的应用场景。
3.1 网络路由在计算机网络中,路由器通过构建网络拓扑图并使用图论算法来选择最佳路径,实现数据的传输和通信。
3.2 交通规划交通规划中的交通流量分析、交通网络设计等问题可以通过图论模型进行建模和求解,帮助优化城市交通系统。
3.3 社交网络分析社交网络中的节点表示个体,边表示个体之间的关系。
通过图论分析社交网络的拓扑结构和节点之间的连接关系,可以帮助推荐系统、信息传播等问题。
图论基础

练习2.1(续)
(1)请举一个图例,使其满足以下条件: 该图中每个节点均为至少一个节点对的关 键节点。请就你的答案给出解释。 (2)请举一个图例,使其满足以下条件: 该图中每个节点均为至少两个节点对的关 键节点。请就你的答案给出解释。
(3)请举一个图例,满足以下条件:该图 中包含至少4个节点,并存在一个节点X, 它是图中所有节点对的关键节点(不包括 含X的节点对)。请就你的答案给出解释。
典型现实网络(图)
• 合作图
– 例如,一群学者之间合著关系(co-authorship) – 节点:人;边:当且仅当两个人有合著的文章
• 交流网
– 例如,一所大学师生之间的电子邮件关系网 – 节点:人;边:两人之间发过一定量的往返邮件
• 信息链接网(有向)
– 万维网上的网页之间的链接关系 – 论文之间的引用关系
(不一样的)图的个数(枚举)
• 给定节点数(n)
– 标号图? – 无标号图?
æ n ö ç ç 2 ÷ ÷ è ø
2
• Polya定理告诉我们如何计算无标号图的个数
• 如何判断两个图是否“同构”依然是图论的最基 本挑战之一
无 标 号 图 的 个 数
无向图,有向图(directed graph)
(1)请给出一个直径比平均距离大三倍的图例;
(2)请根据你解答问题(1)的方法,说明你可以通过改变某 一特定因数的大小,来控制直径比平均距离大的倍数。(换 句话说,对于任意数字c,你能否构造一个图,使其直径比平 均距离大c倍?)
图论基础
-与网络分析有关的基本概念
图 “节点”,以及哪些节 点之间有“边”
作为一个数学概念的“图”(graph)
G(V , E ), V = {a, b,...}, E Í {( x, y) | x, y Î V, x ¹ y}
图论基础知识

vV1
deg(v) deg(v) 2 E
vV2
图的同构
• 试观察下面各图有何异同
• • • • •
根据图的同构定义,可以给出图同构的必要条件如下: (1) 结点数目相等; (2) 边数相等; (3) 度数相同的结点数目相等。 但这仅仅是必要条件而不是充分条件。
• 上图中的(a)和(b)满足上述三个条件,然而并不同构。 • 因为在(a)中度数为3的结点x与两个度数为1的结点邻接, 而(b)中度数为3的结点y仅与一个度数为1的结点邻接。 • 寻找一种简单有效的方法来判定图的同构,至今仍是图论 中悬而未决的重要课题。 • 对于同构,形象地说,若图的结点可以任意挪动位置,而 边是完全弹性的,只要在不拉断的条件下,这个图可以变 形为另一个图,那么这两个图是同构的。故同构的两个图 从外形上看可能不一样,但它们的拓扑结构是一样的。
• ii) 存在唯一的 G1∪G2和 G1 G2。
• 证明:以 i) 为例,不妨设 G 1和G2同为有向图,若同为无向图也 可同样证明。 • a) (存在性)
•
• • • • • 交
定义 Ψ :E1∩E2→ (V1∩V2)× (V1∩V2) 为 :
对于任意的 e∈E1∩E2,Ψ (e) = Ψ 1(e) = Ψ 2(e) 。 显然,〈V1∩V2,E1∩E2,Ψ 〉= G1∩G2。 b) (唯一性) 设图 G=〈V1∩V2,E1∩E2,Ψ 〉 和 G=〈V1∩V2,E1∩E2,Ψ 〉均为 G1和G2的 。 G1,所以对任意 e∈E1∩E2 皆有 Ψ (e) =Ψ 1(e) 。
v)
vi)
G1∪G2
G1 G2
=
=
〈V1∪V2,E1∪E2,Ψ 1∪Ψ 2〉
图论基础:图的基本概念和应用

图论基础:图的基本概念和应用图论是数学中的一个分支领域,研究的是图的性质和图上的问题。
图被广泛应用于计算机科学、电子工程、运筹学、社交网络分析等领域。
本文将介绍图论的基本概念和一些常见的应用。
一、图的基本概念1. 顶点和边图是由顶点和边组成的,顶点代表图中的元素,边则代表元素之间的关系。
通常顶点表示为V,边表示为E。
2. 有向图和无向图图可以分为有向图和无向图。
在无向图中,边是没有方向的,顶点之间的关系是双向的;而在有向图中,边是有方向的,顶点之间的关系是单向的。
3. 权重在一些应用中,边可能具有权重。
权重可以表示顶点之间的距离、成本、时间等概念。
有权图是指带有边权重的图,而无权图则是指边没有权重的图。
4. 路径和环路径是指由一系列边连接的顶点序列,路径的长度是指路径上边的数量。
环是一种特殊的路径,它的起点和终点相同。
5. 度数在无向图中,顶点的度数是指与该顶点相关联的边的数量。
在有向图中分为出度和入度,出度是指从该顶点出去的边的数量,入度是指指向该顶点的边的数量。
二、图的应用1. 最短路径问题最短路径问题是图论中的一个经典问题,它研究如何在图中找到两个顶点之间的最短路径。
这个问题有许多实际应用,例如在导航系统中寻找最短驾驶路径,或者在电信网络中找到最短的通信路径。
2. 最小生成树最小生成树是指一个连接图中所有顶点的无环子图,并且具有最小的边权重之和。
这个概念在电力网络规划、通信网络优化等领域有广泛的应用。
3. 路由算法在计算机网络中,路由算法用于确定数据包在网络中的传输路径。
图论提供了许多解决路由问题的算法,如最短路径算法、Bellman-Ford 算法、Dijkstra算法等。
4. 社交网络分析图论在社交网络分析中起着重要的作用。
通过构建社交网络图,可以分析用户之间的关系、信息传播、社区发现等问题。
这些分析对于推荐系统、舆情监测等领域具有重要意义。
5. 电路设计图论在电路设计中也有应用。
通过将电路设计问题转化为图论问题,可以使用图论算法解决电路布线、最佳布局等问题。
图论基础

第一讲图论基础知识自从1736年欧拉(L.Euler)利用图论的思想解决了哥尼斯堡(Konigsberg)七桥问题以来,图论经历了漫长的发展道路。
在很长一段时期内,图论被当成是数学家的智力游戏,解决一些著名的难题。
如迷宫问题、匿门博奕问题、棋盘上马的路线问题、四色问题和哈密顿环球旅行问题等,曾经吸引了众多的学者。
图论中许多的概论和定理的建立都与解决这些问题有关。
1847年克希霍夫(Kirchhoff)第一次把图论用于电路网络的拓扑分析,开创了图论面向实际应用的成功先例。
此后,随着实际的需要和科学技术的发展,在近半个世纪内,图论得到了迅猛的发展,已经成了数学领域中最繁茂的分支学科之一。
尤其在电子计算机问世后,图论的应用范围更加广泛,在解决运筹学、信息论、控制论、网络理论、博奕论、化学、社会科学、经济学、建筑学、心理学、语言学和计算机科学中的问题时,扮演着越来越重要的角色,受到工程界和数学界的特别重视,成为解决许多实际问题的基本工具之一。
图论研究的课题和包含的内容十分广泛,专门著作很多,很难在一本教科书中概括它的全貌。
作为离散数学的一个重要内容,本书主要围绕与计算机科学有关的图论知识介绍一些基本的图论概论、定理和研究内容,同时也介绍一些与实际应用有关的基本图类和算法,为应用、研究和进一步学习提供基础。
第1章无向图和有向图学习要求:仔细领会和掌握图论的基本概论、术语和符号,对于图论研究的一些最基本的课题,如道路问题、连通性问题和着色的问题等,应掌握主要的定理内容和证明方法以及基本的构造方法,以便为下一章研究提供理论工具。
学习本章要用到集合和线性代数矩阵运算的知识,特别是集合数和矩阵秩的概念。
§4-1-1 图的基本概念图是用于描述现实世界中离散客体之间关系的有用工具。
在集合论中采用过以图形来表示二元关系的办法,在那里,用点来代表客体,用一条由点a指向点b的有向线段来代表客体a和b之间的二元关系aRb,这样,集合上的二元关系就可以用点的集合V和有向线的集合E构成的二元组(V,E)来描述。
图论基础知识点

基本知识点:一、图的基本定义:平凡图:只有一个顶点无边的图。
非平凡图:其他所有图。
空图:边集合为空的图。
简单图:既没有环也没有重边的图。
复合图:其他所有的图。
同构图:顶点集合之间存在双射(一一对应关系),对应边重数和端点对应相等。
标定图:给图的点和边标上符号。
非标定图:不标号。
非标定图代表一类相互同构的图。
完全图:每两个不同顶点之间都有一条边相连的简单图。
N 个顶点的完全图只有一个,记为n K 。
偶图(二部图):具有二分类(,)X Y 的图,他的点集可以分解为两个(非空)子集X 和Y ,使得每条边的一个端点在X 中,另一个端点在Y 中。
完全偶图 :指具有二分类(,)X Y 的简单偶图,其中X 的每个顶点与Y 的每个顶点相连。
若,X m Y n ==,则这样额完全偶图记为:,m n K 。
k —正则图:设(,)G V E =为简单图,如果对所有的结点v V ∈,有()d v k =,称G 为k —正则图。
完全图和完全偶图,n n K 均是正则图。
图划分:若一个n 阶简单图G 各点的度为i d ,则分正整数k 为n 个部分的划分i d ∑称为是图划分。
子图:边集合和点集合均是原图的子集,且待判定图中的边的重数不超过原图中对应的边的重数。
生成子图:点集合相等,边集合为原图子集的图。
导出子图:由顶点集为原图G 真子集的所有点,及两端点均在该集合中的边的全体组成的子图V ‘。
'[]G V 和G v -。
边导出子图:由原图G 边的真子集,该图中边的断点全体为顶点组成的子图E ‘。
'[]G E 和{}G e -。
图的运算:并,交,差,对称差,联图,积图,合成图,极图路与图的联通性:途径:迹:边互不相同的途径。
路:边和点都互不相同的途径。
连通的:两个顶点之间存在路。
连通图:每一对顶点之间都有一条路。
连通分支:将V 划分为一些等价类12,,...k V V V 。
两个顶点u 和v 是连通的当且仅当他们属于同一个子集i V ,称子图()i G V 为连通分支。
图论入门之基本知识篇

一、图的基本概念
1、图的表示
G G(V , E ), 其中V V (G )为顶点集, E (G ) E 为边集, e E , e联结V中两个顶点。
有向图:边均有方向无向 图:边均 无方 向
2、V中顶点 与v间有一条边,则称 v相邻, u u与 u, v , e相关联,与顶点关联的边数称为的度, u u 记为d ( u).
5、定理2 下列命题是等价的
(1)G是树
(2)G中任两顶点之间有且仅 有一条路相通
(3)G中无圈,且 (G) V (G) 1 E
(4)G连通,且 (G) V (G) 1 E
(5)G连通,且 中任意去掉一条边后不 G 连通
(6)G无圈,而 加上一条不在 (G )中的边后 G E 恰有一个圈
在 图G中 ,V (G ) X Y , X Y , X Y 0 且E (G )中 每 一 边 的 两 个 顶 点 是 一 个 在 中 , 都 X 一个在 中。 Y
3、定理1 一个图是二部图 它不包含奇数条边的圈 4、森林,树
பைடு நூலகம்
若 一 个 图 是 无 圈 的 ,称 为 森 林 ; 若 它 又 是通 的 , 则 连 则称为树
n阶方阵,称为 的邻接矩阵:(G) (aij ) G A
1, v i 与v j 相 邻 aij 0, v i 与v j 不 相 邻
注意: 邻接矩阵每一行中 的个数为相应顶点的度 1 数。
三、一些特殊图
1、完全图
图中任两个顶点均有边 相邻。常记为 n , n V K
2、二部图(偶图)
n m的 关 联 矩 阵 (G ) : 每 一 行 对 应 中 的 一 个 顶 点 , M V 每 一 列 对 应 中 一 条 边 , 当i 与ei 相 关 联 时 , (G ) E v M 中i行j列 元 素 为, 否 则 为。 1 0
图论入门篇

实现细节
1. if (d[v] == -1) dfs(v);
//树边, 递归遍历
2. else if (f[v] == -1) show(“B”); //后向边
3. else if (d[v] > d[u]) show(“F”); // 前向边
3. begin read(n); for i:=1 to n do begin new(head[i]); head[i]^.key:=i; head[i]^.next:=nil; end; read(m); s:=0; for i:=1 to m do begin read(edgex[i],edgey[i]); new(p); p^.key:=edgey[i]; p^.next:=head[edgex[i]]; head[edgex[i]]:=p; end; fillchar(f,sizeof(f),true); fillchar(instack,sizeof(instack),false); top:=0;time:=0; for i:=1 to n do if f[i] then tarjan(i); fillchar(s1,sizeof(s1),0);
非连通图有多个连通分量(connected component, cc), 每个连通分量是一个 极大连通子图(maximal connected subgraph)
完全图和补图
完全图:N个顶点的图,有N(N-1)/2个节点 对于(u,v), 若邻接则改为非邻接, 若非邻接则改为邻接, 得到的图为原图的补
int j; DFN[i]=LOW[i]=++Dindex; instack[i]=true; Stap[++Stop]=i; for (edge *e=V[i];e;e=e->next) {
数学中的图论基础

数学中的图论基础图论是数学中的一个重要分支,研究的对象是图。
图是由若干个顶点和连接这些顶点的边组成的数学结构。
图论作为一门独立的学科,具有广泛的应用领域,涉及计算机科学、运筹学、电子工程、通信网络等多个领域。
本文将介绍图论的基础知识,包括图的定义、常见术语、图的分类以及常用算法等内容。
**1. 图的定义**在图论中,图是由顶点集合和边集合组成的数学结构。
一个图$G$可以表示为$G=(V, E)$,其中$V$是顶点集合,$E$是边集合。
顶点集合$V$可以是任意非空集合,而边集合$E$则是顶点之间的连接关系。
边可以是有向的,也可以是无向的,分别对应有向图和无向图。
**2. 常见术语**- 顶点:图中的一个节点,用来表示实体或对象。
- 边:连接顶点的线段,用来表示顶点之间的关系。
- 有向图:图中的边有方向,即从一个顶点到另一个顶点。
- 无向图:图中的边没有方向,即边是双向的。
- 路径:顶点的一个序列,使得相邻顶点之间有边相连。
- 环:起点和终点相同的路径。
- 连通图:图中任意两个顶点之间都存在路径。
- 子图:一个图的顶点和边的非空集合,且该集合包含于原图的顶点和边的集合中。
根据图的性质和特点,图可以分为多种不同类型,常见的图包括: - 无向图:边没有方向的图。
- 有向图:边有方向的图。
- 完全图:任意两个顶点之间都有边相连的图。
- 二分图:顶点可以分为两个不相交的集合,使得同一集合内的顶点没有边相连。
- 树:无环连通图。
- 森林:由若干棵树组成的图。
- 连通图:任意两个顶点之间都存在路径的图。
- 强连通图:有向图中任意两个顶点之间都存在双向路径的图。
**4. 常用算法**在图论中,有许多经典的算法被广泛应用于解决各种问题,其中最常见的算法包括:- 深度优先搜索(DFS):从起始顶点开始,沿着一条路径一直向下搜索,直到不能再继续为止,然后回溯到上一个顶点继续搜索。
- 广度优先搜索(BFS):从起始顶点开始,先访问其所有相邻顶点,然后再依次访问这些相邻顶点的相邻顶点,以此类推。
图论基础_ls_6.2-6.3(全)

定义 6.14 设无向图 G = < V, E >, u, v V, 若 u 与 v 之间存在通路,则称 u 与 v 是连通的。 规定 u 与自身总是连通的。 任意两个顶点都是连通的图称为连通图。否 则称为非连通图。 平凡图是连通图。 连通关系(等价关系): R = { <u, v>| u, vV 且 u 与 v 连通 }。
= v0e1v1e2…elvl ② 用边序列表示: = e1e2…el
③ 简单图中,用顶点序列表示:
= v0v1…vl
4
(2) 初级通路(回路)是简单通路(回路), 但反之不真。
初级通路 简单通路
初级回路
简单回路
5
6.2.1 通路与回路
定理 6.3 在 一个n 阶图中,若从顶点 u 到 v(u v)
8
连通关系: R = { <u,v> | u, vV 且 u 与 v 连通 }。
连通分支: V 关于 R 的等价类的导出子图。
设 V/R = {V1,V2,…,Vk },
G 的连通分支为 V1,V2,…,Vk 的导出子图:
G[V1],G[V2],…,G[Vk]
连通分支数记为: p(G)=k 。
G是连通图 p(G)=1
– 有向图中的通路数与回路数 • 6.3.4 有向图的可达矩阵
若 u 不可达 v,规定 d <u, v> = ∞.
性质: d<u, v> 0,且 d<u, v> = 0 u = v d <u, v> + d<v, w> d<u, w>
注意: 距离没有对称性。
19
6. 3 图的矩阵表示
图论(基础篇)

根据此图便可找到渡河方法.
(1,1,1,1) (1,1,1,0) (1,1,0,1) (1,0,1,1) (1,0,1,0) (0,0,0,0) (0,0,0,1) (0,0,1,0) (0,1,0,0) (0,1,0,1)
-1,所以该图有一哈密尔顿路,故本题有解。
问题:
7位客人入席,A只会讲英语,B会讲英,汉语,C会 讲英,意大利,俄语,D会讲日,汉语,E会讲德,意 大利语,F会讲法,日,俄语,G会讲法,德语.能否 安排圆桌席位使每位客人与其左右邻不用翻译 便可交谈?
解:首先建立无向图模型:
结点为客人;会共同语言的2结点相邻接.则问 题归结为求此图的一条Hamilton回路.
• 对它们进行数学抽象————图。
C
A
B
D 哥尼斯堡七桥示意图
问题1(哥尼斯堡七桥问题): 能否从任一陆地出发通过每座桥恰好一次而回到出发
点?
C
A
B
D
七桥问题模拟图
欧拉指出: 如果每块陆地所连接的桥都是偶数座,则从任一陆
地出发,必能通过每座桥恰好一次而回到出发地.
例1: 一摆渡人欲将一只狼,一头羊,一篮菜从河西渡过河 到河东.由于船小,一次只能带一物过河,并且狼与羊,羊 与菜不能独处.给出渡河方法.
解 把33盏灯看成树叶,将5插头的接线板看成分 枝点,这样本问题可理解为求一个完全5叉树的分 枝点的个数的问题。 由m叉树定理1知, 有 由此得 =8 所以至少需要8个5插头的接线板。
例5:一笔画问题
Euler路径与Euler图
• 经过于(有向或无向)图 G 的每条边一次且仅一次的路径(回 路)称为 Euler 路径(回路). 具有 Euler 回路的连通图称为Euler图.
第二章图论基础

常用虚线画出的闭合面表示割集。被每个虚线面切割 的边组成一个割集,如S1={a, c, e, g},S2={b, c, e, g}等。
割集是图G所含边的一种最小集合。即只要少移去其中 一条边,图G仍将是连通的;另外,如果移去某些边后,使 图分成两个以上部分,此边集也不是割集。
2.1 图的基本概念
4、割集——割集的方向
对有向图,若给割集定义一个方向,则称为有向割集。 以表示割集的虚线面为界,可把从割集由内向外穿出的方 向定为割集的正方向,也可把从割集由外向内穿入的方向 定为正方向。 与割集方向相同的边,称为正向边;反之,称为负向 边。
2.1 图的基本概念
4、割集——生成树与割集的关系
一个连通图的生成树是连通这个图的全部节点的边数 最少的集合,而割集则是分割—个图的节点为不相连的二 个节点子集的边数最少的集合,因此,一个图的生成树与 割集间存在着一定的联系。 [定理] 连通图G的一个割集S至少包含图G的生成树的 一条树枝。因为单纯余树弦是不能将图G分成两部分的。
2.1 图的基本概念
1、图
图中节点的个数称为图的阶,用nv表示。每一对不 同节点间均有一条边相连的简单图称为完全图,图 G2就是一个4阶的完全图。m阶完全图的边数等于 v v e m(m-1)/2。 e v
1 9 1
e1 v2 e3 e5 v3
e2
4
1
v4
e4 e7
v2
e4 e3
v4
e5 e2 v3
2.1 图的基本概念
1、图
v2 v4 e4 e3 e2 v3
e9
v4 e5 e6 e8
v1
e1 v2
e7 e6 e2 e3 e4 v6 v3
e1
15 图论的基本原理

15图论的基本原理图论是研究集合的元素之间的关系的一门学问. 人们常用平面(或空间)的点表示元素,用点之间所连的线段(或弧)表示元素间的某种关系,这样便可用一个直观图形表示元素及元素之间的关系. 因为这种表示使问题的条件和结论直观、明了,使问题的分析与陈述方便、简洁,因而在竞赛解题中得到广泛的应用,下面对图论的一些基本概念和结论作一介绍.1.基本原理设V 是平面(或空间)的有限个点构成的集合,E 是以V 的点为端点的线段(或弧段)构成的集合,则由V 的点及E 的线段(或弧段)构成的图形称为图,记为(),G V E =. V 中的元素称为图的顶点,G 中的元素称为图的边,V 称为图的阶.如图1是一个图,其中12345,,,,v v v v v 是这个图的顶点,1234567,,,,,,e e e e e e e是这个图的边. 在一个图G 中,若边e 连接顶点,u v ,则称,u v 为边e 的端点,并称e 与u相邻. 若边,e e '连接同一对顶点,则称e 与e '为平行边. 若边e 的两个端点相同,则称e 为环. 图1 在图1中,5e 与6e 为平行边,7e 为环. 一个图若无平行边与环,则称这个图为简单图. 在本书中若无特别声明,所讲的图均为简单图. 在一个图中,若边,i j e e 均与顶点v 相邻,则称边i j e e 与相邻. 若顶点,u v 之间有边e ,则称顶点u 与v 相邻. 在图G 中,与顶点u 相邻的边的条数称为顶点的度,记为()d u ,度数为奇数的顶点称为奇顶点,度数为偶数的顶点称为偶顶点.在图G 中,若()1,,1,2,,i i i e x x i n +==,则将点边交错序列 11223111n n n n n x e x e x x e x e x --+ (1) 称为G 的连接顶点1x 与1n x +的一条链,链上边的条数称为这条链的链长. 对于简单图,我们可把(1)中的链简记如下121n x x x +.在(1)中,若11n x x +=,则称这条链为圈. 在图G 中,连接两个顶点的链中含边最小的链称为连接这两个顶点的最短链. 最短链的长度称为这两个顶点的距离. 在图G 中,含边最少的圈称为这个图的极小圈.在图G 中,若任两个顶点间均有链相连,则称这个图为连通图,否则称为不连通图. 若图G 不连通,则它的每一个连通部分称为它的一个连通分支. 如图1为连通图,图2是一个不连通图,它有3个连通分支. 一个图若连通且不含圈,则称这个图为树,记为(),T V G =. 一个图若有n 个顶点,任两个不同的顶 图2点之间恰有一条边,则称这个图为n 阶完全图,记为n k . 显然,n k 中边的条数为()212n n n C -=. 设(),G V E =,若1,ki i j i V V V V i j φ===≠(),并且G 的任一条边的两个端点不同时属于,1,2,,i V i k =,则称G 为k 部图,记为()12,,;k G V V V E =. 特别地,当2k =时,2部图又称为偶图或两分图.设12,,m e e e 是图G 的边,若1i j m ≤<≤,i e 与j e 均不相邻,则称{}12,,m e e e 为图G 的一个匹配. 图G 中含边最多的匹配称为图G 的极大匹配. 设(),;G X Y E =为偶图,{}12,,m e e e 为G 的一个匹配,若X 中的每一个顶点都是{}12,,m e e e 中某个边的端点,则称这个匹配为饱和X 的匹配;若Y 中的每一个顶点都是{}12,,m e e e 中某个边的端点,则称这个匹配为饱和Y 的匹配. 同时饱和,X Y 的匹配称为完全匹配.设(),G V E =是图,11,V V E E ⊆⊆,则把图()111,G V E =称为图G 的子图.若将图G 的每一条边给一个方向,则把这样的图称为有向图. 若把n 阶完全图的每条边都给一个方向,则把这个有向图称为竞赛图. 在有向图(),G V E =中,若边的方向是由i v 指向j v ,则把这条边记为(),i j v v ,并把i v 称为这条有向边的起点,j v 为这条有向边的终点. 在有向图中,若有向边()1,,1,2,,i i i e v v i n +==,把则点边交错序列 112233111n n n n n v e v e v e v e v e v --+ 称为连接点1v 与1n v +的路,并把这条路中所含边的条数称为路长. 当1v 与n v 重合时,把这样路称为有向圈或回路,回路中所含边的条数称为圈长.在有向图(),G V E =中,x V ∀∈,我们用()d x +表示以x 为起点的有向边的条数,()d x -表示以x 为终点的边的条数,并分别称()d x +和()d x -为顶点x 的出度和入度.定理1 设(),G V E =,则()2x Vd x E ∈=∑.推论 图G 中奇顶点的个数为偶数.定理2 我们把树中度数为1的顶点称为悬挂点. 设(),T V E =为树,V n =,则(1)当2n ≥时,T 至少有两个悬挂点;(2)1E n =-.证(1) 我们对n 实行归纳. 当2n =时,结论显然成立. 假设当n k =时结论成立. 那么当1n k =+时,若T 中每个顶点的度数都不小于2,则从一个顶点出发沿边走下去可得到一个圈. 这与T 无圈相矛盾. 这个矛盾表明T 中存有顶点u ,使得()1d u =,从而知u 是T 的悬挂点. 去掉点u 与u 相连的边,则得到的子图1T 也是树,1T 的顶点有k 个,由归纳假设知,1T 至少有两个悬挂点,x y ,而,x y 中必有一个不与u 相邻,不妨设x 不与u 相邻,则x 也是T 的悬挂点,从而知T 至少有两个悬挂点,u x .(2)同样对n 实行归纳. 当1,2n =时,易知1E n =-.假设对于n k =时结论成立. 那么对于1n k =+,由(1)知T 有悬挂点.设u 是T 的悬挂点,那么去掉顶点u 及与u 相邻的边e ,所得的子图1T 的边有()1k -条,从而知T 有()()1111k k -+=+-条边,即1n k =+时结论也成立. 由归纳法原理知结论成立.推论1 在图(),G V E =中,V n =,若G 连通,则有1E n ≥-;若G 无圈,则1E n ≤-.证 当G 连通时,若G 无圈,则G 是树,这时有1E n =-. 若G 含圈,则可在每个圈上去掉一条边,直至图中不含圈为止,设此时得到的子图为(),T V E '=,这里E E '⊆,则T 连通且无圈,从而知T 是树,所以11E V n '=-=-,1E E n '∴≥=-.当G 无圈时,若G 连通,则G 是树,此时有1E n =-. 若G 不连通,则G 可分成若干个连通分支,每个连通分支是树,对每个连通分支应用定理2易知结论成立.定理3 设(),G V E =是图,则G 是偶图的充要条件是G 不含长为奇数的圈.证 必要性:设G 是偶图,(),;G X Y E =,011210n n c v e v e v e v -=是G 的一个圈,不妨设0v X ∈.因为G 的每一条边均是连接X 与Y 中的点,故从0v 出发沿圈c 行走回到0v 时,每次从X 中的点走到Y 中的点,必须从Y 中的点再回到X 中的点,故圈c 上的边有偶数条.充分性:设G 中的每个圈上的边都有偶数条,不妨设G 是连通的,(否则可考虑G 的每一个连通分支). 在G 中取一个顶点0v ,则对任意的u V ∈,若1L 与2L 是连接0v 与v 的两条链,则1L 的长与2L 的长的奇偶性必相同.事实上,若1L 与2L 上边的条数的奇偶性不一样,利用1L 与2L 易得一个长为奇数的圈,如图3所示,这与G 中不含长为奇数的圈相矛盾. 上述结论表明,G 中每个顶点与0v 的距离的奇偶性是确定的. 现令{}{}00,,,,X x x v x V Y x x v x V =∈=∈与的距离为偶数与的距离为奇数 图3 则,X Y V X Y φ==.又对于任意的,u v X ∈,若有e 与,u v 相邻,设1L 与2L 分别是连接0v 与,u v 的链,则{}12L L e 将产生一个长为奇数的圈. 这与条件相矛盾,故u 与v 不相邻. 同理可证对于任意的,u v Y ∈,有u 与v 不相邻,故G 是偶图.定理 4 (托兰定理)设(),G V E =是图,V n =,若G 中不含3阶完全图3k ,则24n E ⎡⎤≤⎢⎥⎣⎦. 证 设G 中度数最大的顶点为v ,()d v k =,令{}A x x V x v =∈且与相邻,则A k =.因为G 中不含完全图3k ,所以A 中任两个顶点不相邻.故x A ∀∈,有()d x n k ≤-.令A V A =-,则x A ∀∈,有()d x k ≤,所以 ()()()()()()22,x V x A x AE d x d x d x k n k n k kk n k ∈∈∈==+≤-+-=-∑∑∑ ()()22,24k n k n E k n k +-⎛⎫∴≤-≤= ⎪⎝⎭ 2.4n E ⎡⎤∴≤⎢⎥⎣⎦定理5 (配偶定理)设(),,G X Y E =为偶图,对于S X ⊆,令(){N S y y Y =∈且y 与S 中的某个顶点相邻},则G 存有饱和X 的匹配M 的充要条件是S X ∀⊆,有()S N S ≤.证 必要性:设G 存有饱和X 的匹配M ,在G 中去掉E M -中的所有边,得到的图记为G ',即(),;G X Y M '=. 在G '中,对于S X ⊆,令(){N S y y Y '=∈且y 与S 中某一顶点相邻},则S X ∀⊆,由匹配的定义知,有 ()N S S '=.又S X ∀⊆,显然有()()N S N S '⊆,所以()()N S N S S '≥=, 必要性得证.充分性:令X n =,我们对n 实行归纳.当1n =时,设{}(),1X x N X X =≥=,所以Y 中至少有一个顶点y 与x 相邻,故(){},x y 是饱和X 的匹配,结论成立.假设对于n k ≤结论成立. 那么对于1n k =+,分两种情况证明.情形 1 对于X 的每一个非空真子集S ,都有()N S S >. 取0x X ∈,因为{}(){}001N x x >=,所以0y Y ∃∈,使得()00,x y E ∈.在G 中去掉顶点00,x y 及与00,x y 相邻的边,将得到的图记为()1111,;G X Y E =,则{}{}1010,X X x Y Y y =-=-. 11S X ∀⊆,令{}10S S x =,因为()11N S S S >=+若用()11N S 表示1G 中与1S 中的点相邻的点构成的集合,则()1N S 与()N S 至多相差一个顶点0y ,所以()()1111111N S N S S S ≥-=+-=.即11S X ∀⊆,有()111N S S ≥,则归纳假设知,1G 中存有饱和1X 的匹配1M ,令 (){}100,M M x y =, 则M 是G 中饱和X 匹配,故结论成立.情形2:存有X 的一个p 元子集A ,使得()N A A p ==. 令()(){}1,,E x y x A y N A =∈∈,则在G 的子图()()11,;G A N A E =中,若令()1N S 表示1G 中与S 中的点相邻的点构成的集合,因为()()1N S N S =,所以S A ∀⊆,有()()1N S N S S =≥,所以,由归纳假设知1G 中存有饱和A 的匹配1M .在图G 中去掉1G 中的顶点和边,得到的图记为2G .若令()(){}22222,,,,X X A Y Y N A E x y x X y Y =-=-=∈∈,则()2222,,G X Y E =.在2G 中,令()2N S 为2G 中与S 中的点相邻的顶点构成的集合,则2S X ∀⊆,必有()2N S S ≥ (1) 事实上,若结论不成立,即存有02S X ⊆,使得()200N S S <, 那么令0S S A =,则00S S A S p =+=+,且 ()()()20N S N S N A =,所以()()()()2020N S N S N A N S p =+=+0S p S <+=.这与定理的条件相矛盾. 故(1)成立. 从而知2G 满足归纳假设的条件. 依归纳假设知2G 中存有饱和2X 的匹配2M . 令12M M M =,则易知M 是G 中饱和X 的匹配,故结论成立.综上知充分性成立.定理6 设n k 是n 阶竞赛图,则n k 中存有长为1n -的路.证 我们对n 实行归纳. 当2n =时,结论显然成立. 假设对n 结论成立,那么对于1n +,在1n k +中去掉顶点1n v +及与1n v +相邻的边,得到一个n 阶竞赛图n k ,依归纳假设知,n k 中存有长为1n -的路,不妨设为12n v v v ,否则可将n k 的顶点重新标号.若存有1i n ≤≤,使得()1,i n v v +为1n k +的有向边,设s 是使()1,i n v v +为1n k +的有向边中的i 的最大值. 那么当s n =时,121n n v v v v +是1n k +的长为n 的路;当s n ≠时,则()11,n s v v ++是1n k +的有向边,从而知1211s n s n v v v v v v ++ 是1n k +的长为n 的路.若对于1i n ≤≤,均有()1,n i v v +为1n k +的有向边,则112n n v v v v +为1n k +的长为n 的路,故对于1n +结论成立. 由归纳法原理知结论成立.3.方法解读解与图论相关的试题,通常是先将实际问题转译成一个图论问题,然后再用图论的结论和图论中分析问题的方法来解决. 在解决图论问题时,归纳构造,反证法是常用的方法,而在对图的讨论中,顶点的度、链、圈、匹配、欧拉圈、哈密顿圈等是讨论的对象. 特别地,对与一些顶点相邻的顶点构成的集合的讨论,往往是解决问题的关键.例1 设1234567,,,,,,A A A A A A A 是平面上7个点,其中任三点不共线,在这些点之间连19条线段,证明:必存有5点,它们每两点间都有线段相连.分析 将7个点看成图的顶点,所连的19条线段看成图的边,这样得到一个图G ,问题归结为证明G 中含有5阶完全子图5k ,这样我们可先证存有2k ,再由2k 构造3k ,进而构造出45,k k .证 ()()()12721938d A d A d A ++=⨯=,由抽屉原则知必有一个()6i d A ≥. 不妨设()16d A ≥,因为图G 中只有7个顶点,所以()16d A ≤,从而有()16d A =. 去掉顶点1A 及与1A 相邻的边,得到的子图记为1G ,则在1G 中有6个顶点,13条边,从而在1G 中有()()()23713226d A d A d A ++=⨯=. 2646>,所以1G 中必有一个顶点的度数为5,不妨设()25d A =. 再在1G 中去掉2A 及与2A 相邻的边,得到的图记为2G ,2G 有5个顶点,8条边,所以在2G 中,有()()()()()345672816d A d A d A d A d A ++++=⨯=. 1635>,所以2G 中必有一个顶点的度数为4,不妨设()34d A =. 在2G 中去掉3A 及与3A 相邻的4条边,得到的图记为3G . 3G 有4个顶点,4条边,故3G 中必有两个顶点相邻,不妨设在3G 中,4A 与5A 相邻,则12345,,,,A A A A A 中任何两个顶点均相邻,故结论成立.例2 (1994年伊朗奥林匹克)图G 的n 个顶点为12,,,n A A A ,G 满足条件:若i A 与j A 不相邻,则存有一个顶点k A ,使得k A 与i A ,j A 均相邻.(1)求图G 的边数的最小值;(2)若6n = ,且126,,,A A A 是G 的一个长为6的圈,求图G 的边数的最小值. 分析 在连通图中,边数最少的图是树,所以在求图的边数的最小值时,首先考虑该图是否连通. 对于第(2)问,先要估计边数的下界,然后再构造边数能达到下界的图.解(1) 设(),,,G V E x y V =∀∈,依题意知要么(),x y E ∈,要么存有z V ∈,使得()(),,,x z E z y E ∈∈,这表明连接,x y 的链存有,从而知图G 是连通图,依照定理2的推论知1E n ≥-,又图5所示的图满足题设条件,它的边数为1n -,所以G的边数的最小值为1n -.(2)因为126,,,A A A 是圈,如图6,考虑圈上的顶点对{}{}{}142536,,,,,A A A A A A 图5 ,因为满足题意的图中任何两点之间的最短链的长不超过2,所以上述每一对顶点中至少有一个的度数要增加1,所以,要使图G 满足条件,这个圈上顶点的度数至少要增加3,因而至少要增加两条边. 又在圈1234561,,,,,,A A A A A A A 上添加边14A A 与26A A ,如图6,这样得到的图G 满足要求,所以图G 的边数的最小值为8. 图6例3 (中国台湾第4届数学奥林匹克)一次集会有n 个人参加,每个参加会议的人恰有8个熟人,每一对熟人恰有4个共同的熟人,每对不理解的人恰有2个共同熟人,问满足上述条件的n 个人是否存有.分析 用n 个点代表n 个人,两人理解则在代表两人的顶点间连一条边,否则不连边,则得到一个图,要求图中每个顶点的度数为8,每一对相邻的顶点恰与4个顶点同时相邻,每对不相邻的顶点恰与2个顶点同时相邻,问题归结为满足上述条件的图是否存有. 这样能够通过图的顶点间的相邻关系来寻找答案.解 不存有. 反证法,依照上述分析,若满足条件的图存有,设这个图为(),G V E =,任取x V ∈,因为()8d x =,不妨设x 与128,,x x x 相邻. 因为x 与8x 相邻,故x 与8x 恰好同时与G 中4个顶点相邻. 因为与x 相邻的顶点为{}128,,x x x ,为了说话方便,不妨设8,x x 同时与1234,,,x x x x 相邻,如图7,则7x 与8x 不相邻. 又x 与7x 相邻,所以x 与7x 恰好同时与G 中的4个顶点相邻,这4个顶点必在 图7{}123456,,,,,x x x x x x 中,所以至少有2个在{}1234,,,x x x x 中,不妨设为12,x x ,这时12,,x x x 同时与7x 和8x 相邻,又7x 与8x 不相邻,这与题设矛盾. 这个矛盾表明满足题设条件的图不存有.例4 ()4n ≥名选手参加数学竞赛,其中有些选手相互理解. 已知任何两个不相识的选手都恰好有两个共同的熟人. 若已知选手A 、B 理解,但他们没有共同的熟人,证明他们的熟人一样多.分析 只需建立A 与B 的熟人的集合之间的一一对应即可.证 用n 个顶点12,,n v v v 分表代表n 名选手,其中与12,v v 分别代表A 、B ,若两名选手理解,就在代表这两名选手的顶点间连一条边,否则不连边,得到一个图(),G V E =,则问题归结为已知1v 与2v 相邻,G 中任意两个不相邻的顶点都恰好与两个顶点同时相邻,没有一个顶点同时与12,v v 相邻,证明()()12d v d v =.现令1M 为与1v 相邻的顶点构成的集合,1N 为与2v 相邻的顶点构成的集合,{}{}1211,M M v N N v =-=-,下证M N =. 事实上,若M φ=,则M N ≤. 若M φ≠,则x M ∀∈,依题意知x 与2v 一定不相邻,从而V 中恰有两个顶点同时与2,x v 相邻,因为1v 同时与2,x v 相邻,故还存有唯一的一个y 同时与2,x v 相邻,显然y N ∈,我们规定M 到N 的映射为::f x y →,则由y 的唯一性知f 是M 到N 的单射,从而有M N ≤.同理可证N M ≤,故有M N =,所以()()12d v d v =.例5 (1998年莫斯科)某国N 个城市被航空航线连接起来,并且航线只向一个方向飞行. 对于这个航线系统,下列条件f 是满足的:从任何一个城市起飞,不能沿着这些航线回到这个城市,求证:能补充这个航线系统,使每2个城市被航线连接,并且新的航线系统仍满足条件f .分析 若用图的顶点表示城市,有向边表示两个城市之间的航线,则得一个有向图G . 问题归结为已知有向图G 中不含回路,求证可在此图中添加一些有向边,使得任何两个顶点间都有一条有向边,并且得到的图仍不含回路.证 我们证明分析中关于有向图的结论成立. 用反证法,若结论不成立,则存有G 的顶点,A B ,使得在添加有向边AB 后出现回路. 设回路为12n BC C C AB .在添加有向边BA 后出现回路,设回路为12m AD D D BA ,如图8所示. 这样,图G 中就有回路11n n AD D BC C A ,这与G 中无回路相矛盾. 图8 例6 (2000波兰数学奥林匹克)设n 为正整数,M 是具有下述性质的21n +个正数 构成的集合:M 中任意1n +个元素中,必有两个数,使得其中一个是另一个的倍数,证明:其中存有1n +个数121,,,n a a a +,使得对于1,2,,i n =,均有1i i a a +.分析 题中考察的是整数间的整除关系. 因而可用图的顶点表示数,用有向边表示整除关系,将该问题化为一个有向图问题.证 用点2121,,,n A A A +分别表示M 中的21n +个数2121,,,n a a a +,若i j a a ,则连有向边i j A A ,否则不连边,得有向图(),G V E =. 问题归结为证明G 中最长路的长度不小于n .设以i A 为起点的最长路的长为2,1,2,,1i l i n =+,若对于21,2,,1i n =+,均有01i l n ≤≤-,则因为211n n n n n+=+>,由抽屉原则知i l 中必有1n +个相等,不妨设121n l l l +===. 又因为121,,,n a a a +中必有一个整除另一个,不妨设11n a a +(否则可将这1n +个数重新标号),则G 中有边11n A A +,进而有111n l l +≥+,这与11n l l +=相矛盾. 故必有一个i l n ≥.不妨设1l n ≥,121,,n A A A +是以1A 为起点的路,则有12231,,,n n a a a a a a +.例7 若干个人实行循环赛,每两人赛一场,每场决定胜负. 比赛结束后,称A 为优秀选手,若对任一其他选手B ,或A 胜B ,或存有C ,满足A 胜C 且C 胜B ,证明:若m 为正整数且2m ≠,存有恰有m 个优秀选手的比赛.分析 要证对任意的2m ≠成立,而高阶竞赛图可看成是由低阶竞赛图添加新的顶点和有向边生成,因而可尝试用归纳法.证 我们先证明若存有恰有k 个优秀选手的比赛,则必存有恰有2k +个优秀选手的比赛.事实上,设产生k 个优秀选手的比赛共有n 个选手参加,记为12,,n P P P ,增加2个选手1212,,,,,n n n P P P P P ++之间的比赛结果不变,12,,n P P P 均胜11,n n P P ++胜12,,n P P P ,再让1n P +胜2n P +,如图9,则12,,n P P P 中原来不是优秀选手的人现在仍不是优秀选手,图9 图10原来是优秀选手的人现在仍是优秀选手.又易知1n P +与2n P +均为优秀选手,故此时共有2k +个优秀选手.图10中给出了恰有1个优秀选手和恰有4个优秀选手的比赛(图10的第2个图中,,,A B C D 均为优秀选手,E 不为优秀选手),这样用归纳跨度为2的跳跃法易知结论成立. 习题151. 设12,,,n A A A 是平面上的n 个点,其中任两点间的距离至少是1,证明它们最多有3n 对点,每对点的距离恰好是1.2. 有()3n n >个人,他们之间有些人相互理解,有些人相互不理解,而且至少有一个人不与所有的人都理解,那么他们中与其他人都理解的人的人数的最大值为多少?3. 某地区网球俱乐部有20名成员,举行14场单打比赛,每人至少上场一次,求证:必有6场比赛,其12个参赛者各不相同.。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、略2、计算有向无圈图的根输入一个有向无圈图DAG,计算和输出DAG的根r(即r到其他任何顶点都有一条路。
若图中没有根,则输出“not found”)。
输入:顶点数n和边数e;以下为e行,每行为一条有向边的两个端点输出:根r或者“not found”算法分析设const mx=100;{顶点数的上限}varn,e,i,j,k,a,b:integer;{ 顶点数n、边数e}g:array[1..mx,1..mx]of boolean;{传递闭包}bn:boolean;{根存在标志}1、输入信息,计算传递闭包readln(n,e);{输入顶点数和边数}fillchar(g,sizeof(g),0);{ 有向无圈图初始化}for i:=1 to e do{输入信息,构造传递闭包的初始值}begin readln(a,b);g[a,b]:=true end;for k:=1 to n do{计算传递闭包}for i:=1 to n dofor j:=1 to n doif g[i,j] or g[i,k] and g[k,j]then g[i,j]:=true;2、计算DAG的根然后枚举每一个顶点。
根据传递闭包的信息,若当前顶点至其它所有顶点有路,则判定该顶点即为根。
若没有一个顶点可作为DAG的根,则输出失败信息for i:=1 to n do{枚举每一个可能的根}beginbn:=true;{设定I至其他所有顶点有路的标志}for j:=1 to n do{若I至任一个顶点无路,则返回bn为false}if (i<>j) and not g[i,j]then begin bn:=false; break end;if bn then break{若I至其他所有顶点有路,则输出根i}end;if bn then writeln(i)else writeln('not found'){若不存在根,则输出失败信息}3、寻找满足条件的连通分支输入一张顶点带权的无向图,分别计算含顶点数最多的一个连通分支和顶点的权之和最大的一个连通分支。
输入:n(顶点数,1<=n<=20)以下n行,依次表示顶点1 ~ 顶点n上的权;e(边数,1<=e<=210)以下e行,每行为有边连接的一对顶点。
输出:两行,一行为含顶点数最多的一个连通分支,一行为顶点的权之和最大的一个连通分支,输出时按顶点编号从小到大输出。
[问题分析]通过longlink计算出每个顶点所在的连通分支,然后在所有可能的连通分支中找出满足条件的解。
至于计算连通分支的顶点方案也不难,只要分别从连通分支中任选一个代表顶点,由此出发,通过深度优先搜索即可得到顶点方案。
设best,besti—含顶点数最多的连通分支中的顶点数和代表顶点;max,maxk——顶点的权和最大的连通分支的顶点权和和代表顶点计算best,besti,max,maxk的过程如下:1、读入无向图的信息;2、计算传递闭包longlink;3、穷举每一个顶点for I:=1 to n dobegink:=0;s:=0for j:=1 to n do{计算顶点i所在连通分支中的顶点总数k和顶点的权之和s} if longlink[i,j] then begininc(k);inc(s,顶点j的权)end;if k>best then begin best:=k;besti:=I end;{若k为目前最大,则记入best,i 作为代表顶点记入besti}if s>max then begin max:=s;maxk:=I end;{若s为目前最大,则记入max,i 作为代表顶点记入maxk} if k=n then break; {若整个图是连通图,则退出}end;4、dfs(besti); {从代表顶点besti出发,深度优先搜索含顶点数最多的连通分支}5、dfs(maxk); {从代表顶点maxk出发,深度优先搜索顶点的权之和最大的连通分支}显然,以上算法的时间复杂度为O(n*n)。
[参考程序]program ex3;const maxn=20;varw:array[1..maxn] of longint;link,longlink:array[1..maxn,1..maxn] of boolean;out:array[1..maxn] of boolean;n,e,i,j,k,s,x,y,best,besti,max,maxk:longint;procedure dfs(k:longint);var i:longint;beginfor i:=1 to n doif (longlink[k,i])and(not out[i]) thenbeginout[i]:=true;dfs(i);end;end;beginread(n);for i:=1 to n do read(w[i]);read(e);fillchar(link,sizeof(link),false);for i:=1 to e dobeginread(x,y);link[x,y]:=true;link[y,x]:=true;end;longlink:=link;for k:=1 to n dofor i:=1 to n dofor j:=1 to n dolonglink[i,j]:=longlink[i,j] or longlink[i,k] and longlink[k,j]; best:=1; besti:=1;max:=w[1]; maxk:=1;for i:=1 to n dobegink:=0;s:=0;for j:=1 to n doif longlink[i,j] thenbegininc(k);inc(s,w[i])end;if k>best then begin best:=k;besti:=i; end; if s>max then begin max:=s;maxk:=i; end;if k=n then break;end;fillchar(out,sizeof(out),false);out[besti]:=true;dfs(besti);for i:=1 to n doif out[i] then write(i,' ');writeln;fillchar(out,sizeof(out),false);out[maxk]:=true;dfs(maxk);for i:=1 to n doif out[i] then write(i,' ');writeln;end.输入:534581051 21 32 53 44 5输出:1 2 53 4 54、计算DAG中的最长路输入一个有向无圈图DAG,计算和输出DAG中最长路的长度输入:顶点数n和边数e;以下为e行,每行为一条有向边的两个端点和边权输出:最长路的长度算法分析设constmax=100;{顶点数的上限}maxint=10000;varn,e,i,j,k,a,b,ans:integer;{顶点数n、边数e }g:array[1..max,1..max]of integer;{g[I,j]为顶点I至顶点j的路径长度}1、输入有向无圈图的信息首先输入有向无圈图的信息。
若顶点I至顶点j有边,则g[I,j]设为wij;否则g[I,j]设为-∞。
readln(n,e);{输入输入顶点数和边数}fillchar(g,sizeof(g),0);{最长路径长度矩阵初始化for i:=1 to e do{输入边信息,构造最长路径长度矩阵的初始值}begin readln(a,b, wab ); g[a,b]:= wabend;for i:=1 to n do{将最长路径长度矩阵中无边的元素设为-∞}for j:=1 to n doif (i<>j)and(g[i,j]=0) then g[i,j]:=-maxint;2、按照计算传递闭包的思想计算每一对顶点间的最长路,找出最长路径长度for k:=1 to n do{计算最长路径长度矩阵}for i:=1 to n dofor j:=1 to n doif g[i,k]+g[k,j]>g[i,j]then g[i,j]:=g[i,k]+g[k,j];ans:=0;{ 最长路径长度初始化}for i:=1 to n do{枚举所有可能的顶点对,将其中的最大g值找出来}for j:=1 to n doif g[i,j]>ans then ans:=g[i,j];{调整最长路径长度}writeln(ans){输出最长路径长度}5、计算带权有向图的中心输入一个带权有向图G ,计算和输出G 的中心v(v 是G 的一个顶点,v 的偏心距定义为输入:顶点数n 和边数e ;以下为e 行,每行为一条有向边的两个端点和边权输出:G 的中心v算法分析const mx=100;varn,e,i,j,k,a,b,ans:integer;{ 顶点数为n ,边数为e ,中心为ans}w,bt,b0:real;{bt 为所有顶点偏心距的最小值,b0为当前顶点的偏心距}g:array[1..mx,1..mx]of real;{最短路长矩阵。
初始时g[i,i]=0,g[I,j]=计算后,g[i,j]存储顶点I 至顶点j 的最短路长}1、 输入信息,构造最短路长矩阵greadln(n,e);{输入顶点数和边数}for i:=1 to n do{输入信息,构造最短路长矩阵g 的初始值}for j:=1 to n doif i<>j then g[i,j]:=maxintelse g[i,j]:=0;for i:=1 to e dobegin readln(a,b,w);g[a,b]:=w;end;for k:=1 to n do{计算任一对顶点间的最短路长}for i:=1 to n dofor j:=1 to n doifg[i,k]+g[k,j]<g[i,j]then g[i,j]:=g[i,k]+g[k,j];2、 计算图的中心依次计算每一个顶点i 的偏心距b0。
每计算一个顶点的偏心距b0,调整所有顶点偏心距的最小值和图的中心(即顶点I 的偏心距b0小于所有顶点偏心距的最小值bt ,则bt 设为b0,图的中心ans 设为i )。
依次类推,直至所有顶点的偏心距计算完为止。
此时的ans 即为问题的解bt:=maxint; ans:=0;{所有顶点偏心距的最小值和图的中心初始化}for i:=1 to n dobegin }{max 的最短路长到从v w V w )的中心为中偏心距最小的顶点称G Gb0:=0;{顶点I的偏心距初始化}for j:=1 to n do if g[i,j]>b0 then b0:=g[i,j];{计算顶点I的偏心距}if b0<bt{若顶点I的偏心距为目前最小,则记下,并将顶点I设为图的中心}then begin bt:=b0; ans:=i endend;writeln(ans){输出图的中心}6、snow问题描述:随着白天越来越短夜晚越来越长,我们不得不考虑铲雪问题了。