图(一)

来源:互联网 发布:迪丽热巴 陈伟霆 知乎 编辑:程序博客网 时间:2024/06/07 13:32

图:

基本概念:


一个图是由两个集合:V和E所组成的,V是有限的非定顶点集合,E是用顶点对表示的边(edge)集合,

图G的顶点集和边集分别记为V(G)和E(G),而将图G表示为G=(V,E),也就是说,决定一个图需要知道它的顶点集合和边的集合。

无向图:边不带方向,表示为<B,C> (注意是方括号)

有向图:边带方向,表示为(B,C)(注意是圆括号)

度:一个顶点关联的边的数量

入度:进到顶点的边的数量

出度:从顶点发出的边的数量

子图:设G ‘ 和G是两个图,若有V(G ’ ) 包含于 V(G),E(G ‘ )包含于E(G),则称G ’ 是G的子图。

完全图:无向图中,每对顶点之间都有一条边相连,则称这个无向图为完全图;有向图中,每对顶点之间都有二条有向边相连,则称这个有向图为完全图。

路径:从一个顶点到另一个顶点的边组成的序列。边的数目就是路径的长度。

回路:从一个顶点出发又回到这个顶点的路径称为回路。

简单回路:除了起点和终点相同,路径的序列没有其他元素相同,即在路径上不走重复顶点。

复杂回路:路径的序列除首尾外还有元素相同,即在路径上有重复顶点。

连通图:图中任何两个顶点之间都有路径可以到达的图。

有向图的强连通:每两点之间都可以互相到达,双向连通。

有向图的弱连通:两点之间有单向连通。

连通分量:一个图被割离成几部分,每个相连的部分称为连通分量。

网络:加上权值的图。

图的存储:

邻接矩阵:假设一个图有n个顶点,编号为1,2,...,n,

用一个n阶方阵R来存放图中各结点的关联信息,其矩阵元素Rij定义为:

若顶点i到顶点j有边,Rij = 1;若顶点i到顶点j无边,Rij = 0

邻接表:首先把每个顶点的邻接点用链表示出来,该表的结点结构可以设计为vertex link(顶点的链?我也不懂),这样n个顶点就有n个链表。

                然后用一个一维数组来顺序存储上面每个链表的头指针。一维数组的元素也可以设计成为vertex link,

                这样只要知道数组的元素就可以确定该顶点与之相关联的顶点信息。

图的遍历:

图的遍历分为深度优先和广度优先。

深度优先的遍历方法:

1、首先访问出发的顶点V

2、依次从V出发搜索V的每个邻接点W

3、若W未访问过,则从该点出发继续深度优先遍历类似于树的前序遍历

(意思就是类似前序遍历从根开始再左最后右访问)

广度优先的遍历方法:

1、首先访问出发的顶点V

2、然后访问与顶点V邻接的全部未访问顶点W、X、Y。。。

3、然后再依次访问W、X、Y。。。邻接的未访问的顶点

(意思就是按层级一层层访问)









原创粉丝点击