《计算思维与算法入门》 —2.8 图简介

举报
华章计算机 发表于 2019/12/11 10:13:34 2019/12/11
【摘要】 本节书摘来自华章计算机《计算思维与算法入门》一书中第2章,第2.8节,作者是赵军 等。

2.8    图简介

树结构用于描述节点与节点之间“层次”的关系,而图结构却是讨论两个顶点之间“连通与否”的关系,在图中连接两个顶点的边,如果填上加权值(也可以称为成本),这类图就被称为“网络”。图在生活中的应用非常普遍,如图2-68所示。

 image.png

图2-68  图的应用在生活中非常普遍

图除了应用在算法和数据结构的最短路径搜索、拓扑排序中之外,还能应用在系统分析中以时间为评审标准的性能评审技术(Performance Evaluation and Review Technique,PERT),或者像“IC电路设计”“交通网络规划”等应用。注意:在图论中,图的定义有特定的含义。

城市地铁路线的规划就是图的应用之一,如图2-69所示。

 image.png

图2-69  城市地铁路线的规划就是图的应用之一

图的理论(简称图论)起源于1736年,是一位瑞士数学家欧拉(Euler)为了解决“哥尼斯堡”问题所想出来的一种理论,就是著名的“七桥问题”。简单来说,就是有7座横跨4个城市的大桥。欧拉所思考的问题是这样的,“是否有人在每一座桥梁只经过一次的情况下,能够把所有地方都走过一次且回到原点。”图2-70所示为“七桥问题”的示意图。

 image.png

图2-70  “七桥问题”示意图

欧拉当时使用的方法是以图结构来进行分析。他先以顶点表示城市,以边表示桥梁,把连接每个顶点的边数称为该顶点的度数。我们将以如图2-71所示的简图来表示“七桥问题”。

 image.png

图2-71  以图的抽象方式表示七桥问题——欧拉环

最后欧拉得出一个结论:“当所有顶点的度数都为偶数时,才能从某顶点出发,经过每条边一次,再回到起点。”也就是说,在图2-71中,每个顶点的度数都是奇数,所以欧拉思考的问题是不可能发生的。这个理论就是有名的“欧拉环”(Eulerian Cycle)理论。

但是,如果条件改成从某顶点出发,经过每条边一次,不一定要回到起点,即只允许其中两个顶点的度数是奇数,其余则必须全部为偶数,符合这样的结果就称为欧拉链(Eulerian Chain),如图2-72所示。

 image.png

图2-72  欧拉链

图的定义

图是由“顶点”和“边”所组成的集合,通常用 G=(V, E) 来表示,其中V是所有顶点组成的集合,而E代表所有边组成的集合。图的种类有两种:一种是无向图,另一种是有向图。无向图以(V1, V2)表示其边,而有向图则以<V1, V2>表示其边。

1.无向图

无向图(Graph)是一种边没有方向的图,即同边的两个顶点没有次序关系,如图2-73所示。例如 (V1,V2)与 (V2,V1) 代表的是相同的边。

 image.png

图2-73  无向图

V={A,B,C,D,E}

E={(A,B),(A,E),(B,C),(B,D),(C,D),(C,E),(D,E)}

 

2.有向图

有向图(Digraph)是一种每一条边都可以使用有序对<V1, V2>来表示的图,并且<V1, V2>与<V2, V1>表示两个方向不同的边,<V1, V2>是指以V1为尾端指向头部V2的边,如图2-74所示。

 image.png

图2-74  有向图

V={A,B,C,D,E}

E={<A,B>,<B,C>,<C,D>,<C,E>,<E,D>,<D,B>}


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。