图的深度优先搜索遍历算法分析及其应用.pdf
重庆邮电大学
数学大类专业
2008级《数学建模与数学实验》课程设计
设计题目:图的深度优先搜索遍历算法分析及其应用
设计时间:2010.9.72010.9.12
设计成绩:
姓名:
班级:
学号:
指导教师:
图的深度优先搜索遍历算法分析及其应用
摘要:
文章介绍了图论,图的基本概念及其图的表示方法。详细的分析了图中以邻接表为
存储结构进行的图的深度优先搜索遍历的算法,并且在VC++环境中实现其算法的过程,对
运行记过做了一定量的分析,最后介绍了基于该算法的一些应用。
关键词:图;深度优先搜索;遍历;算法
图论〔GraphTheory〕是数学的一个分支。它以图为研究对象。图论中的图
是由若干给定的点及连接两点的线所构成的图形,这种图形通常用来描述某些事
物之间的某种特定关系,用点代表事物,用连接两点的线表示相应两个事物间具
有这种关系。
图(Graph)是一种较线性表和树更复杂的数据结构,图形结构中,结点之
间的关系可以是任意的,图中任意两个数据元素之间都可能相关。因此,在研究
有关图的问题时,要考虑图中每个顶点的信息,访问图中的各个顶点,而访问图
中各个顶点的操作过程即使图的遍历,图的遍历算法是求解图的连通性问题,拓
扑排序和求关键路径等算法的基础。
1图的三元组定义
图G是一个三元组由集合V,E和关联函数组成,记为:G=(V,E,W(G))。
其中V是顶点的集合,表示V(G)={V1,V2,V3,……Vn},V(G)≠NULL。
E是V中的点偶对的有穷集,表示为E(G)={e1,e2,e3……em},其中ei为V
j,Vt或{Vj,Vt},若ei为{Vj,Vt},称ei为以Vj和Vt为端点的无向边;若ei
为Vj,Vt,称ei为以Vj为起点,Vt为终点的有向边;W(G)称为E→VxV的
关联函数。
2图的存储结构
图的存储结构除了要存储图中各个顶点的本身的信息外,同时还要存储顶点
与顶点之间的所有关系(边的信息),因此,图的结构比较复杂,很难以数据元
素在存储区中的物理位置来表示元素之间的关系,但也正是由于其任意的特性,
故物理表示方法很多。常用的图的存储结构有邻接矩阵、邻接表、十字链表和邻
接多重表。邻接表是图的一种链式存储结构。对图的每个顶点建立一个单链表(n
个顶点建立n个单链表),第i个单链表中的结点包含顶点Vi的所有邻接顶点。
V1V2
V3
V4V5
图1无向图G
该图的G的邻接表表示如下:
为了便于理解,本文以无向图G作为具体示例(如图1所示),给出以邻接
表进行存储的图的数据结构。
现将图G的各顶点进行编号,其对应的邻接表如图2所示:
V131∧
V2420∧
V3431∧
V4
2
0∧
V5
2
1∧