数据结构与算法(Python版)五十七:图的基本概念及相关术语

图Graph的概念

图Graph是比树更为一般的结构, 也是由节点和边构成

实际上树是一种具有特殊性质的图

图可以用来表示现实世界中很多事物

道路交通系统、航班线路、互联网连接、或者是大学中课程的先修次序

数据结构与算法(Python版)五十七:图的基本概念及相关术语 数据结构与算法(Python版)五十七:图的基本概念及相关术语

一旦我们对图相关问题进行了准确的描述

就可以采用处理图的标准算法来解决那些看起来很艰深的问题

对于人来说,人脑的识别模式能够轻而易举地判断地图中不同地点的相互关联;但如果用图来表示地图,就可以解决很多地图专家才能解决的问题,甚至远远超越;互联网是由成千上万的计算机所连接起来的复杂网络,也可以通过图算法来确定计算机之间达成通讯的最短、最快或者最有效的路径。

术语表

顶点Vertex(也称“节点Node”)

是图的基本组成部分,顶点具有名称标识Key,也可以携带数据项payload

边Edge(也称“弧Arc”)

作为2个顶点之间关系的表示,边连接两个顶点;边可以是无向或者有向的,相应的图称作“无向图”和“有向图

权重Weight

为了表达从一个顶点到另一个顶点的“代价”,可以给边赋权;例如公交网络中两个站点之间的“距离”、“通行时间”和“票价”都可以作为权重。
数据结构与算法(Python版)五十七:图的基本概念及相关术语

路径Path

图中的路径,是由边依次连接起来的顶点序列;无权路径的长度为边的数量;带权路径的长度为所有边权重的和;如下图的一条路径(v3,v4,v0,v1)

  • 其边为{(v3,v4,7),(v4,v0,1),(v0,v1,5)}
    数据结构与算法(Python版)五十七:图的基本概念及相关术语

圈Cycle

圈是首尾顶点相同的路径,如下图中(v5,v2,v3,v5)是一个圈,如果有向图中不存在任何圈,则称作“有向无圈图directed acyclic graph: DAG”,后面我们可以看到如果一个问题能表示成DAG,就可以用图算法很好地解决。
数据结构与算法(Python版)五十七:图的基本概念及相关术语

图的定义

一个图G可以定义为G=(V, E)

其中V是顶点的集合, E是边的集合, E中的每条边e=(v, w), v和w都是V中的顶点;如果是赋权图,则可以在e中添加权重分量子图: V和E的子集
数据结构与算法(Python版)五十七:图的基本概念及相关术语

赋权图的例子: 6个顶点及9条边

有向赋权图,权重为整数
数据结构与算法(Python版)五十七:图的基本概念及相关术语