图学习(1)

本文详细介绍了图论的基础概念,包括不同类型的图及其特点、存储结构、生成树、最小生成树算法等内容,并探讨了图的遍历方法和拓扑排序等关键知识点。

1、       连通图上各边权值均不相同,则该图的最小生成树是唯一的。

(是自由树,即根结点不确定)

 

2、       n表示图中顶点数目,e表示边或弧的数目:

(1)        对于无向图e的取值范围是0~N(N-1)/2;N(N-1)/2条边的无向图叫完全图。

(2)        对于有向图e的取值范围0~N(N-1);相应的有N(N-1)条边的有向图叫有向完全图。

(3)        无向图中,对于图中任意两点都是连通的,叫做连通图;连通分量指的是无向图中极大连通子图;

(4)        有向图中,若对于每一对顶点都存在路径,称图为强连通图。有向图中的极大强连通子图称为有向图的强连通分量;

 

一颗有n个顶点的生成树有且仅有n-1条边;

如果一个图有n个顶点和小于n-1条边,则是非连通图;

如果一个图多余n-1条边,则一定有环;

n-1条边的图不一定是生成树;

 

图的存储结构:

1)邻接矩阵(构造一个具有n个顶点和e条边的无向图的时间复杂度为O(n^2+e*n),其中对邻接矩阵初始化耗费O(n^2)

 

2)邻接表(在建立邻接表或逆邻接表时,若输入的顶点信息即为顶点编号,则建立邻接表的时间复杂度为O(n+e);否则需要通过查找才能找到顶点在图中的位置,时间复杂度为O(n.e))、

3)邻接多重表(与邻接表的区别在于同一条边在邻接表中用两个结点表示,而在邻接多重表中只有一个结点)、

4)十字链表(与建立邻接表相同的时间复杂度)。

 

遍历图的实质是对每个顶点查找器邻接点的过程。用邻接矩阵作图的存储结构时,查找每个顶点的邻接点所需要的时间为O(n^2);用邻接表作图的存储结构时,查找邻接点所需要的时间为O(e);当用邻接表作存储结构时,深度优先搜索遍历图的时间复杂度为O(n+e)

 

一颗生成树的代价就是树上各边的代价之和。

构造最小生成树算法多利用了MST性质。主要利用 Prim算法(时间复杂度为O(n^2),与网中边数无关,适用于求边稠密的最小生成树)和 Kruskal算法(时间复杂度为O(e log e),适合于求边稀疏的最小生成树)。

 

3、       图的拓扑排序唯一,则其弧数比为n-1(n为图的顶点数)

4、       有向图中存在拓扑排序,则该图不存在回路。

 

5、       具有7个顶点的有向图至少应该有7条边才可能成为一个强连通图。

分析:强连通图必须从任何一点出发都可以回到原处,每个结点至少要有一条出路(单节点除外)至少n条边,正好可以组成一个环。

 

N个顶点的强连通图最多有N(N-1)条边,最少有    N条边。

(强连通图是指有一个有向图中任意两点v1v2间存在路径及v2v1的路径的图。)

最多情况:即n个顶点中两两相连,若不计方法,n个点两两相连有N(N-1)/2条边,而由于强连通图是有向图,故每条边有2个方向,N(N-1)/2*2=N(N-1),所以N个顶点的强连通图最多有N(N-1)条边;

最少情况:即N个顶点围成一个圈,且圈上各边方向一致,即均为顺时针或者逆时针,此时有N条边。

 

6、       要保证连通具有10个顶点的无向图,至少需要37条边。

分析:要保证连通具有10个顶点的无向图,重点是需要保证连通,则需要前面9个顶点两两相连,就能保证第10个顶点加入一条边时保证连通。即从9个结点中任意选出两个结点链接,则需要C(92)条边,再加上最后一条边,则总边数:C(92)+1=(9*8)/(1*2)=36,再加上1等于37.

 

分析二:

一个连通图边数最少情况就是这个图中没有回路情况,实际上这个图是一颗树,对于树,分支和结点关系是:分支数比结点数少1.

 

补充:

1)       具有10个顶点的无向图,边的总数最多为:

10*10-1/2=45

2)       G是一个非连通无向图,共有28条边,则该图至少有9个顶点。

分析:假设至少有N个顶点,由于是非连通图,且要满足28条边,所以N=边为28的完全图(顶点最少)的顶点数+1(与完全图不连通)。完全图边数为28,解n(n-1)/2=28,得n=8,因此N=8+1=9

 

7、       位示图法用于:磁盘空闲盘块的分配和回收。

8、       任何有向图的结点都可以排成拓扑排序,而且拓扑排序序列不唯一。(错误,有环就不行,有向无环图才能拓扑排序)

拓扑排序:

1)从有向图选择一个入度为0的顶点并输出之;

2)从图中删除该顶点和所有出边,直到不存在入度为0的顶点。

循环结束后,若输出的顶点数小于网中的顶点数,则有回路,否则输出的顶点序列就是一种拓扑序列。

 

补充:如何查找一个图中是否有环?

1)有向图中用拓扑排序,循环结束后,若输出的顶点数小于网中的顶点数,则有回路,否则输出的顶点序列就是一种拓扑序列。(还有顶点未输出,但已经不存在没有前驱的顶点)。拓扑排序使用前提就是有向完全图。

2)无向图中,若深度优先遍历过程中遇到回边(即指向已访问过的顶点的边),则必定存在环;有向图中用dfs比较复杂。

 

9、       G的最小生成树G1中,可能会有某条边的权值超过未选边的权值。(正确,最小生成树是最小权重生成树的简称,只保证了所有权值之和最小,不好找每条路径都有最小权重)

 

10、  对于一个具有n个顶点的无向图,若采用邻接表表示,则存放表头结点的数组的大小为:n

 

分析:邻接表的性质,存在多少个结点就有多少个头结点的数组,每个头结点的数组都指向该结点在图中直接相连的结点。

图的邻接表表示不是唯一的,它与表结点的链入次序有关;

 

11、  若无向图G=(V,E)中含有7个顶点,则保证图G在任何情况下都是连通的,则需要的边数最少是:16.

分析:与第6题分析一样。任何情况都连通的最少边数边数边分不最浪费的最少边情况,取点数减一的完全图即:

6*6-1/2=15,再加上一条边得结果16.

 

12N个顶点的强连通图的边数至少有N个。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值