开发工具与关键技术:数据结构与算法
作者:陈芝番
撰写时间:2020.4.26
目录
前言
图结构是一种比树型结构更为复杂的非线性结构,任意一个节点都可以有任意多个前驱和后继。图结构是一种重要的数据结构,对我们普遍的人来说,图是一种设计和规划等等,而图也可以是一个结构图,对图进行分析,验算,数据元素之间的关系。所谓数组,是有序的元素序列,用于存储多个相同类型数据的集合。
1.图的定义
图是由顶点和边组成,顶点表示图的数据元素,边表示数据元素之间的关系。
图的遍历:从图中某一顶点出发遍历图中其余顶点,且使每一顶点仅被访问一次。
若图中表示边的顶点对是无序的,即称无向边,则图为无向图。
若图中表示变的顶点对是有序的,即称有向边,则图为有向图。
其中图又有完全图,稠密图,稀疏图。若无向图有1/2n(n-1)条边,即图中每对顶点之间都有一条边,即称该无向图为无向完全图。若有向图中有n(n-1)条孤,即图中每对顶点之间都有方向相反的两条孤。则称该有向图为有向完全图。有很少边的图或孤的图称为稀疏图,反之称为稠密图。
当然还有连通图,连通分量;强连通图,强连通分量;权,网等等。
图的存储结构比线性表和树的结构来说更为复杂,既要存储所有顶点的信息,又要存储顶点与顶点之间的所有关系,也就是边的信息。我们常说的“顶点的位置”和邻接点只是一个相对概念,图上任一顶点都可以看做初始顶点,任一顶点邻接点之间不存在次序关系。
2.算法设计需要考虑什么呢
需要考虑三个问题
- 算法的参数要指定访问的第一个顶点;
- 要考虑遍历路径可能出现的死循环问题;
- 要使一个顶点的所有邻接顶点按照某种次序被访问。
3.遍历图的基本方法
(1)深度优先搜索: