图的基本概念认识

图是数据结构中相对来说比较难的知识点,不过也不用怕,因为都是相对的难ƪ(˘⌣˘)ʃ而已

其次,在企业面试中很少会问图的知识点(问的很少,但也不代表不会问),所以放轻松哦~~

目录

定义:

一、顶点(vertex)

二、边(edge)

图的专业术语以及概念

一、有向图和无向图

1、无向图:

2、有向图:

二、无向完全图和有向完全图

1、无向完全图

2、有向完全图

三、邻接顶点

四、顶点的度

五、路径

六、路径长度

七、简单路径与回路

八、连通图与强连通图

九、子图/生成图/生成树/最小生成树

1、子图

2、生成子图

3、生成树

4、最小生成树


定义:

图不是我们字面意思理解的是一张图,数据结构中的图实际上是由顶点(vertex——V)顶点之间的关系(edge——E)组成的一种数据结构。

一、顶点(vertex)

下面这个就是一个图:

图中的字母A、B、C、D就是顶点(vertex)

二、边(edge)

如图,节点之间有一条连线,连线代表一个顶点可以到达这条线指向的相邻的顶点

图中每个字母之间的连线就是边(edge),它可以描述相邻节点之间的关系

比如,A和C之间有一条边连在一起,说明A可以直接到达B,B也可以直接到达A。

但是E不能直接到达D,

因为E和D之间没有连线,

不过可以通过路径E->C->D方式间接到达。

那么图中的weight是什么呢?

学过哈夫曼树,我们都知道代权路径长度这个概念,实际上weight也是这个意思。

图这个数据结构中,可以给每一条边附加一个权值(weight)。

比如所给例子中,A和C之间的边的权值就是9。

在图中,权值可以加也可以不加。

不过,一般我们今后涉及的不管是考试还是面试大部分都是代权的。


图的专业术语以及概念

这些概念看上去很简单,

其实一点都不难理解。

一、有向图和无向图

1、无向图:

刚才在介绍顶点的时候给的图的例子,就是无向图,既:

一个边之间任意一个顶点,可以通过另一个顶点。

比如,A可以到C,C也可以到A。

他们是没有方向的。

2、有向图:

实际上就是限制了边的方向,如图:

每个顶点之间不在是用简单的线段来连接了,而是用箭头。

比如:

顶点1和顶点2,用一个单向箭头连接在一起了,说明1可以通过2,但是2不能通过1

顶点0和顶点1,用两个单向箭头,因此两个顶点可以相互访问。


二、无向完全图和有向完全图

1、无向完全图

定义:

在无向图中有N个节点,若这个图有N*(N-1)/2个边,那么就是一个无向完全图。

上述定义很抽象,下面我们来形象理解(保准一次看懂)

如果图中任意两个节点(顶点节点一样咧,直到说的是vertex(顶点)就行之间有且仅有一条边,那么就是无向完全图!

如图,就是一个无向完全图:

那么为啥一定要是N*(N-1)/2条边呢?

其实也很好理解,既然要保证每个顶点之间有且仅有一条边,那么从第一个节点开始连线(边),就应该每个节点都连接一次,也就是N-1条边

然后接下来每到一个顶点,连接的边就少一条。

所以总边数就是一个首项为N-1,尾向为0,公差为-1的等差数列。

求和公式一算,就是N*(N-1)/2了。

2、有向完全图

理解了无向完全图,那么有向完全图就简单了。

定义:

在n个顶点的有向图中,若有n * (n-1)条边,

任意两个顶点之间有且仅有方向相反的边,则称此图为有向完全图

如图:

三、邻接顶点

在无向图中:

若一条边连接两个顶点u和v,那么u和v互为邻接顶点。

并称这条边依附于顶点u和顶点v。

在有向图中:

若一条边从u连到v(有方向的),那么称u节点邻接到v节点,v节点邻接自u节点。

并称边<u,v>与顶点u和顶点v相关联。

四、顶点的度

定义:

一个顶点v的度是指与它相关联的边的条数,记作deg(v)

在有向图中:

顶点的度等于该顶点的入度与 出度之和;

其中顶点v的入度是以v为终点的有向边的条数,记作indev(v);

顶点v的出度是以v为起始点的有向 边的条数,记作outdev(v)。

因此:dev(v) = indev(v) + outdev(v)

如图,0的度就是二:

无向图中:

这个就简单了,度就是这个顶点的边的个数

如图0这个顶点的度就是三:

五、路径

在一个图G = (V, E)中,若从顶点vi出发有一组边使其可到达顶点vj,

则称顶点vi到顶点vj的顶点序列为从顶点vi到顶点vj的路径。

六、路径长度

若没有设置边的权重,那么从vi顶点,到vj顶点路径中经过的边的数量就是路径长度。

如果边设置了权重,那么路径长度就是所有边的权值之和。

七、简单路径与回路

若路径上各顶点v1,v2,v3,…,vm均不重复,则称这样的路径为简单路径:

若路 径上 第一个顶点v1和最后一个顶点vm重合,则称这样的路径为回路或环:

八、连通图与强连通图

连通图是无向图中的概念:

在无向图中,若从顶点v1到顶点v2有路径,则称顶点v1与顶点v2是连通的。

如果图中任意 一对顶点 都是连通的,则称此图为连通图。

强连通图是有向图的概念:

在有向图中,若任意一对顶点vi和vj之间都存在一条从vi到vj的路径也存在一条从vj到 vi的路径,则称此图是强连通图。

九、子图/生成图/生成树/最小生成树

1、子图

定义:

对于原来的图G,进行某一些边和顶点的删除,最后所构成的图g,我们就说g是G的一个子图

如图这个例子(只要子图的顶点和边都属于G1,那么就是子图):

        第二个例子:

包括这个图,也是G2的子图:

2、生成子图

定义:

只对原来的图的边进行删除,而不删除顶点,所构成的子图就是生成子图(一般简化叫生成图)。

举例子:

对于如下这个图:

只对某一些边进行删除:

这就是一个生成图。

3、生成树

小编先用VN图事先让大家知道一下,图和树的包含关系:

生成树的定义:

只对原来的图G进行边的删除,最后得到的图g:

1、不会形成环,

2、且任意两个顶点,有路径到达,

那么这个图就是生成树。

举例:

原图G:

G的一个生成树(例1):

G的另一个生成树(例2):

4、最小生成树

定义:

最小生成树,是生成树的一种,区别在于:

1、最小生成树的边的权值之和最小

2、最小生成树的边==N-1(N是图的顶点个数)。

以上两点也是最小生成树的特点,很重要一定要知道,构建最小生成树的算法要用到他们。

注:一个图的最小生成树大概率不唯一。

最小生成树的计算有两个方法:

Kruskal算法

Prime算法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值