收藏 分享(赏)

数据结构课程论文2.doc

上传人:11xg27ws 文档编号:9149479 上传时间:2019-07-25 格式:DOC 页数:3 大小:25.50KB
下载 相关 举报
数据结构课程论文2.doc_第1页
第1页 / 共3页
数据结构课程论文2.doc_第2页
第2页 / 共3页
数据结构课程论文2.doc_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

1、图及其应用数据结构与算法在本学期中是一门十分重要的课程,有很大的用处,数据结构内容丰富,在这里简单介绍一下有关图的相关知识。图的最早应用可以追溯到 18 世纪,伟大的数学家欧拉利用图解决了著名的哥尼斯堡桥的问题,这一创举为图在现代科学技术领域中的应用奠定了基础。目前图在计算机科学与技术领域的应用十分的广泛,已经渗透到电子线路分析、软件工程、人工智能等多个方面。图是一种较线性表更为复杂的数据结构,在图形数据结构中,结点之间的关系可以是任意的,图中任意两个数据元素之间都可能相关。因而,图具有特殊的存储结构、遍历算法和应用。在线性表中,数据元素之间仅存在线性结构,即每个元素只有一个直接前驱和直接后继

2、。在树形结构中,元素之间具有明显的层次关系,并且每个元素只能和上一层(如果有的话)的一个元素相关,但可以和下一层的多个元素相关。在图形结构中,元素之间的关系可以是任意的,一个图中任意两个元素都可以是相关的,即每个元素可以有多个前驱和多个后继。图是一种数据结构,可以用二元组表示。它的形式化定义为:Graph=(V,VR)。其中,V=x|xdataobject ,VR=|P(x,y)(x,yV)在图中的数据元素通常称为顶点(或结点) ,定义中的 V 是顶点的又穷非空集合。定义中的 VR 是两个顶点之间的关系集合,可以用序偶对来表示。图分为有向图和无向图。图不像线性表那样,在数据元素之间存在着明显的

3、前后关系,也不像树存在着严格的层次关系,从逻辑结构上来说,图中的每个顶点都可以称为是第一个或最后一个顶点。因此图中各顶点的位置完全是认为规定的概念。为了操作方便,将图中所有顶点按人为顺序排列,从而指定第 1、2、3、个顶点。同样,可以把一个顶点的所有邻接点排列起来,并称作第 1、2、3、个邻接点,并规定第 k+1 个邻接点是第 k 个邻接点的下一个邻接点,最后一个邻接点的下一个邻接点为空。图的基本操作和图的存储结构密切相关,图的基本运算有:顶点运算、取顶点、求第一个邻接点、求下一个邻接点、插入一个顶点、插入一条弧、删除一个顶点、删除一个弧。在图中,任意两个顶点之间都可能存在关系。由于不存在严格

4、的前后顺序,因而不能采用简单的数组来存储图;若采用链表存储,由于图中各顶点度数不尽相同,最小与最大度数可能相差很大如果按最大度数的顶点设计链表的指针域,则会浪费很多存储单元,反之,如果设计不同的链表结点,则操作困难。因此需要设计全新的存储结构。常用的图的存储结构有邻接矩阵、邻接表、十字链表和邻接多重表。在具体应用中采用何种存储结构往往取决于应用问题的特点和所定义的运算。邻接矩阵式表示图中各顶点之间关系的矩阵,在无向图中,邻接矩阵是对称的,而在有向图中,邻接矩阵不一定是对称的。一个图的邻接矩阵可以用两个数组表示。其中第一个数组 vexs 是一维数组,存储图中顶点的信息;另一个二维数组 edges

5、,用来存储图中边或弧的信息。邻接表是图的链式存储结构。在邻接表存储结构中,图中的每个顶点对应一个单链表,第 i 个单链表中的结点表示依附于顶点 Vi 的边(对于有向图,表示以 Vi 为尾的弧) 。如果一个无向图有 n 个顶点和 e 条边,则采用邻接表需要n 个表头结点和 2e 个链表结点;如果是有向图,则只需要 n 个表头结点和 e 个链表结点。这对于稀疏图而言要比采用邻接矩阵存储时极大地节省了空间。在无向图的邻接表中,求一个顶点 Vi 的度就是计算第 i 个链表中顶点的个数。在有向图中,第 i 个链表中的顶点是 Vi 的出度,但是求 Vi 的入度则必须遍历所有的链表,计算包含第 i 个结点的

6、链表的数目。十字链表是有相图的另外一种链式存储结构。十字链表可以看做是有向图的邻接表和逆邻接表相结合而得到的一种链表。和邻接表相似,十字链表中的表结点对应有向图中的一条弧,表头结点对应图中的一个顶点。从图的任一顶点出发访问图中的其余顶点,使每个顶点被访问且仅被访问一次,这一过程称为图的遍历。图的遍历是图的一种基本操作,是求解图的连通性、拓扑排序、最短路和关键路径等算法的基础。图的遍历算法通常有两个:深度优先遍历和广度优先搜索,它们对于无向图和有向图都适用。深度优先遍历类似于树的先序遍历,是先序遍历在图中的一种推广。其搜索的过程如下:(1)首先访问一个指定的顶点 V0。 (2)然后从 V0 出发

7、,访问一个与 V0 邻接且没有被访问的顶点 V1.(3)再从 V1 出发,选取一个与 V1 邻接且没有被访问过的顶点 V2 进行访问。 (4)重复( 3)直到某个顶点 Vi 的所有邻接点都已被访问过,后退一步查找前一顶点 Vi-1 的邻接点。 (5)如果存在尚未被访问的顶点,则重复(2)(4)部,直到图中的所有顶点都被访问。广度优先遍历类似于按树的层次遍历的过程。起遍历过程如下:(1)首先访问某一个指定顶点 V0,这是第一层。 (2)访问 V0 后,接着访问 V0 的所有邻接点 V1 、V 2、 V3、 Vk ,这是第 2 层。 (3)接着访问第 2 层的各顶点的所有尚未被访问的邻接点,这是第

8、 3 层。 (4)以此类推,一层一层的访问,直到所有顶点都被访问为止。图的常见的应用之一就是在交通运输或者通信技术网络中求两个结点之间的最短路径问题。拓扑排序是将有向无环图中的各个顶点排成一个序列,使得所有前驱后继关系都得到满足。拓扑排序可以分为以下 3 步:(1)从有向无环图中选择一个没有前驱的顶点并加入到结果序列中。 (2)从有向无环图中删除该顶点以及以该顶点为尾的所有弧。 (3)重复(1) (2)两步,直到所有顶点都加入到结果序列中。以上是对图的简单的介绍,图中的知识丰富,联系广泛,图在这本书中是属于比较复杂的数据结构,同时也是最为广泛的一种数据结构。图的许多操作都利用到了前面所学的知识,例如线性表、链表、树等,由此可见图在数据结构中的重要性。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报