图的定义存储和遍历

文章目录

  • 图的基本概念
  • 图的存储
  • 图的遍历

图的基本概念

多对多关系
图(graph)是一种网状数据结构,图是由非空的顶点集合和一个描述顶点之间关系的集合组成;
其形式化的定义如下:
Graph = (V,E)
V = {x|x∈某个数据对象}
E = {|P(u,v)^(u,v∈V)}
V是具有相同特性的数据元素的集合,V中的数据元素通常称为顶点(Vertex),
E是两个顶点之间关系的集合,P(u,v)标识u和v之间由特定的关联属性。
∈E,则表示从顶点u到顶点v的一条弧,并称u为弧尾或七十点,称v为弧头或终止点,他表示顶点u和顶点v之间的一条边,此时图中顶点之间的连线是没有方向的,这种图称为无向图(undirected graph)。

在无向图和有向图中V的元素都称为顶点,而顶点之间的额关系却有着不同的称谓,即弧或边,为避免麻烦,在不影响理解的前提下,我们统一将他们称为边(edge)。并且我们还雪顶顶点集与边集都是有限的,并记顶点与边的数量为|V|和|E|
图的定义存储和遍历_第1张图片
无向图实际上也是有向图,是双向图。
图的定义存储和遍历_第2张图片
加权图
在实际应用中,图不但需要表示元素之间是否存在某种关系,而且图的边往往与具有一定实际意义的数有关,即每条边都有与它相关的实数,称为权。
这些权值可以表示从一个顶点到另一个顶点的距离或或消耗等信息,在本章中假设边的权均为正数。

图的存储

邻接矩阵:二维数组,顺序结构
图的定义存储和遍历_第3张图片
邻接表:链表,链式存储结构
图的定义存储和遍历_第4张图片

图的遍历

图的遍历就是从图中某个顶点出发,按某种方法对图中所有顶点访问且仅访问依次。图的遍历算法是求解图的连通性问题、拓扑排序和求关键路径等算法的基础。
深度优先遍历(DFS depth-first search):类似于树的先根遍历,是树的先根遍历的推广(可以采用递归和借助栈的非递归方式实现)
广度优先遍历(BFS breadth-first search):遍历类似于树的层次遍历,它是树的按层遍历的推广(借助队列 非递归的方式实现)
图的定义存储和遍历_第5张图片
无相图的深度优先遍历:0->1->3->7->4->2->5->6
无相图的广度优先遍历:0->1->2->3->4->5->6->7
图的定义存储和遍历_第6张图片
图的定义存储和遍历_第7张图片

你可能感兴趣的:(Java数据结构)