杂谈——图的基本概念


前言

    这是一个开始,希望可以延续下去。想着每天把学到的东西总结一下放在这里。可能有时候去玩耍之类的就鸽了,也有可能觉得内容不适合放在这里就鸽了,也有可能是三分钟热度的褪去。但是,只要我还在这瞎bb,就会好好写,把知识感受写下来。要是有幸有某位看官大人看到,能为您提供帮助是最好的,希望指正批评。 今天学习了数据结构中的图,还停留在基本概念上,就写写我关于这些概念的感悟吧。

一、图与数据结构

    这里的图指的是什么?答:这个是图论中的概念。举个例子,应该有很多人都玩过一个叫一笔画的游戏,如下图所示,能否在不走回头路的情况下走完?至于能不能走完不是本文讨论的重点(我试了一下,是可以滴~),重点是想说明这个东东就叫图。

举个图的例子
   但你要是告诉计算机这东西叫图,那计算器可听不懂了,得翻译翻译,得告诉计算机这个图里面有什么东西。一看,这里面有顶点(Vertex) ,有边(Edge),那这幅图(Graph)就可以表示为: G = { V , E } G=\{V,E\} G={V,E} V V V为顶点集, E E E为边集。所以,下图可以表达为
G = { { A , B , C , D , E } , { ( A , B ) , ( A , C ) , ( B , C ) , ( B , D ) , ( B , E ) , ( C , D ) , ( C , E ) , ( D , E ) } } G = \{\{A,B,C,D,E\},\{(A,B),(A,C),(B,C),(B,D),(B,E),(C,D),(C,E),(D,E)\}\} G={{A,B,C,D,E},{(A,B),(A,C),(B,C),(B,D),(B,E),(C,D),(C,E),(D,E)}}

图Graph
   那具体应该怎么跟计算机说呢?哈希表可以帮我们完成这个工作,每一个顶点对应于一个键,其对应的值是一个列表,里面存放可以到达的顶点(以python为例):

graph = {'A': ['B', 'C'],
         'B': ['A', 'C', 'D', 'E'],
         'C': ['A', 'B', 'D', 'E'],
         'D': ['B', 'C', 'E'],
         'E': ['B', 'C', 'D']}

二、图的种类

1.无向图、有向图

   上一节所举例的图就是无向图,对于每一个顶点,只要有路,想怎么走就怎么走,都是双向大马路。要是这些大马路有朝一日全都在维修中,变成了单行道,那就成了有向图,如下图所示:

有向图
参照无向图,我们可以这样告诉计算机这个有向图:

graph = {'A': ['B'],
		 'B': ['C', 'D'],
		 'C': ['D'],
		 'D': ['E'],
		 'E': ['B','C']}

2.完全图

   延续第一小节马路概念,我们把这个图每个顶点代表一座城市,如果每个城市两两之间能直接互通,即每个顶点之间都有边,那这种图就称为完全图,很明显之前举的例子不是完全图,因为 A 和 D 之间,A 和 E 之间都不能直接互通。把这两条路建起来(下图绿线),就是完全图了。
在这里插入图片描述

三、一些基本术语

  • : 有时候我们想知道一个顶点有多少根线连着,线的数目就是该顶点的度。在有向图中,指向外的数目称为出度,指向自身的数目称为入度

  • 邻接: 如果两个顶点之间有一条边连着,那就称这两个顶点邻接,如果两条边之间隔着一个顶点,则称这两条边邻接

  • 关联:顶点和边连着,则称这条边和这个顶点关联
    在这里插入图片描述

  • 路径:从一个顶点走到某个顶点所有走过的路;如果中间没有经过同样的顶点,则称为简单路径。如果起点和终点是同一个点,则称为回路,如果除了起点和终点外没有重复的点,则称为简单回路

  • :有时候我们可以给这些边赋予一些意义,例如这条路有多长,或者说这条路有多重要(兵家必争之路总要多点照顾)。那么我们可以给它一个数字,这便是;带权的图称为

  • 路径长度:从一个点走到另一个点所经路径的权的总和即为路径长度,无标注的话,权默认为1。
    路径

  • 子图:有时候我们想聚焦某些点,那我们可以单独把这些顶点及相应的边拿出来形成一幅新的图,那这幅新的图即为原图的子图;

  • 连通:一个顶点有路径到达另一个顶点,则称这两个顶点连通;

  • 连通图:无向图中的每个顶点都与其他顶点连通,则称为连通图;若是有向图则称为强连通图

  • 连通子图:若某图的子图是连通图,则可称为连通子图。若这一连通子图再加上图中剩下的点都不是连通图,则称该子图为极大连通子图(也叫连通分量)。同理,若去除子图中的任意一顶点都不是连通图,则称该子图为极小连通子图。若是有向图,则名字都改为强连通子图强连通分量极小强连通子图。引用网友的一句话“有方向就是强

  • 生成树:把一个图的强连通分量中每个点到另一个点的路径都只保留一条,其他都去掉(奸商行为,为了减少成本少造路),最后得到的图就成为生成树。这是因为这个图可以转化为数据结构中的树。

  示意图嘛……暂时懒得画了哈哈,到时候有空再补上。好啦,今天就写到这了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值