`
jimmee
  • 浏览: 531338 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

基本数据结构的说明(四)

阅读更多
4.图
图(Graph)G由两个集合V(Vertex)和E(Edge)组成,记为G=(V,E),其中V是顶点的有限集合,记为V(G),E是连接V中两个不同顶点(顶点对)的边的有限集合,记为E(G)。
图一般可以采用三种方式来表示:使用一个二维数组;使用邻接表;使用边数组。图的遍历一般有深度优先的方式和广度优先的方式。
所谓深度优先:从图中某个初始顶点v出发,首先访问初始顶点v,然后选择一个与顶点v相邻且没被访问过的顶点w为初始顶点,再从w出发进行深度优先搜索,直到图中与当前顶点v邻接的所有顶点都被访问过为止。显然,这个遍历过程是个递归过程。
所谓广度优先:首先访问初始点vi,接着访问vi的所有未被访问过的邻接点vi1,vi2,…,vit,然后再按照vi1,vi2,…,vit的次序,访问每一个顶点的所有未被访问过的邻接点,依次类推,直到图中所有和初始点vi有路径相通的顶点都被访问过为止。
深度优先的伪码:
procedure dfs(G,v)
input: G=(V,E) is a graph;v∈V;
output: visited(u) is set to true for all nodes u reachable from v

visited(v)=true;
previsit(v);
for each edge(v,u) ∈E:
if not visited(u):dfs(u)
postvisit(v);
广度优先的伪码:
procedure dfs(G,s)
input: G=(V,E) is a graph;s∈V;
output: visited(u) is set to true for all nodes u reachable from v

Q=[s] (queue contains just s)
while Q is not empty
u=Q.remove();
visited(u)=true;
for all edges (u,v) ∈ E
if visited(v) is false
Q.insert(v);
小结:图的遍历算法DFS和BFS在实现时也就是采用的数据结构不一样而已,一个是采用栈(Stack),一个是采用队列(Queue),其实这里的数据结构都是采用一些特殊的数据结构而已。一个是FILO的Stack,一个是采用FIFO的Queue,未访问过的顶点都是放在Stack和Queue里的。对这些顶点的处理则采用FILO和FIFO的原则。OK,如果我们现在把未访问过的顶点的放进一个容器里,之后按照一定的规则取出这些顶点,那么就得到另一些图的算法了。如果是随机取出的,那么就是随机游走的算法了。后面的最小生成树,最短路径的算法都可以看作在这些基础上的算法。
0
0
分享到:
评论

相关推荐

    数据结构与算法分析_java语言描述

    作者采用了独特的方法将数据结构分成说明和实现两部分,并充分利用了已有的数据结构库(Java集合类API)。本书分为四个部分:第一部分讨论适合大多数应用的集合类API的一个子集,并覆盖基本的算法分析技术、递归和...

    数据结构与问题求解Java语言

    作者采用了独特的方法将数据结构分成说明和实现两部分,并充分利用了已有的数据结构库(Java集合类API)。本书分为四个部分:第一部分讨论适合大多数应用的集合类API的一个子集,并覆盖基本的算法分析技术、递归和...

    数据结构学位复习课-上海交通大学.pdf

    第一部分:数据结构与算法的基本概念 考核内容: 算法、算法正确性、复杂性; 算法的时间与空间复杂性级别; 数据类型、数据结构和表示、实现; 抽象数据类型的说明、高级语言对抽象数据类型的支持 考核要求: 理解...

    基于C语言实现的基本数据结构定义以及简单的解题应用项目源码.zip

    基于C语言实现的基本数据结构定义以及简单的解题应用项目源码.zip基于C语言实现的基本数据结构定义以及简单的解题应用项目源码.zip基于C语言实现的基本数据结构定义以及简单的解题应用项目源码.zip基于C语言实现的...

    数据结构课程设计:串基本操作演示

    串基本操作演示代码加报告,报告里面有使用说明书

    数据结构与算法分析,主要包括最基本的说明和基本算法举例说明.

    数据结构与算法分析,主要包括最基本的说明和基本算法举例说明.

    数据结构JAVA实现

    JAVA实现链表 有序二叉树 队列的代码例子

    数据结构课程设计,数据结构课程设计

    数据结构课程设计,本课程设计是为了配合《数据结构》课程的开设,通过设计一完整的程序,使学生能达到如下要求: 1. 了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力; 2. 初步掌握软件开发过程...

    数据结构教程,含习题和答案

    包括习题与答案及要点,很实用啊 ... 数据结构的定义虽然没有标准,但是它包括以下三方面内容:逻辑结构、存储结构、和对数据的操作。这一段比较重要,我用自己的语言来说明一下,大家看看是不是这样。

    C#数据结构

    数据结构形成了程序员基本数据结构工具箱(toolkit)。对于许多常见的问题,工 具箱里的数据结构是理想的选择。就像.NET Framework 中Windows应用程序开 发中的工具箱,程序员可以直接拿来或经过少许的修改就可以使用...

    数据结构与算法分析学习笔记

    数据结构与算法分析 经典笔记学习笔记 1 前言 1.1 所选教材 1.2 写作原因 1.3 一些约定 1.4 历史记录 1.5 联系方式 2 单链表 2.1 代码实现 2.2 效率问题 2.3 应用:一元多项式(加法和乘法) 2.3.1 基础知识 2.3.2 ...

    数据结构大作业+设计说明书

    (3) 录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定) (4) 查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满...

    数据结构课程设计学生成绩管理系统方案.doc

    任 务 书 "题目:学生成绩管理系统 " "设计容与要求... 1968年美国唐·欧·克努特教授开创了数据结构的最初体系,他所著的《计算机程序设计技 巧》第一卷《基本算法》是第一本较系统地阐述数据的逻辑结构和存储结构与其

    图解数据结构--使用Java

    全书内容浅显易懂,利用大量且丰富的图示与范例, 详解复杂的抽象理论,从最基本的数据结构概念开始 说明,再以Java工具加以诠释阵列结构、堆栈、链表 、队列、排序、查找等重要的概念,引领读者抓住重 点轻松进入...

    数据结构学习资料

    它基本上涉及了数据结构基础的“方方面面”。很难想象这书的厚度,居然能讲这么多内容(你看看算法导论有多厚就知道我在说什么了)。 它在内容上并不乏深度。高级数据结构部分并不容易,如果你第一次就全部耐心看完...

    最简单易懂的数据结构

    一、基本概念和术语 数据(Data) 数据是信息的载体。它能够被计算机识别、存储和加工处理,是计算机程序加工...为了增加对数据结构的感性认识,下面举例来说明有关数据结构的概念。 【例1.1】 学生成绩表,见下表。

    天健医院信息系统数据结构手册.doc

    天健医疗HIS系统的数据库表结构说明,再数据分析时可以帮助不了解的数据结构的工程师,快速的了解详细的数据情况。

    数据结构栈的实验报告.doc

    《数据结构》课程第三次实验报告 实验报告(三) "姓名 " "学号 " "班级 " " "实验名称 "顺序栈的基本操作 "实验日期 " "机房 " " "实验报告 " "1. 说明自己在实验操作过程中遇到的难点及解决方法 " "难点: " "1....

    谭浩强C语言程序设计,C++程序设计,严蔚敏数据结构,高一凡数据结构算法分析与实现.rar

    2.4.3 三种基本结构和改进的流程图 28 2.4.4 用N-S 流程图表示算法 29 2.4.5 用伪代码表示算法 30 2.4.6 用计算机语言表示算法 31 2.5 结构化程序设计方法 31 3 数据类型、运算符与表达式 3.1 C语言的数据类型 32 ...

    SQL数据结构.doc

    数据结构 一、基本信息数据结构 1、商品基本资料数据结构 说明: "Products "商品信息表 " "Barcode "一品多码表 " "Unit "商品单位表 " "Price "价格表 " "MedType "剂型表 " 2、往来单位基本信息 说明: "Clients ...

Global site tag (gtag.js) - Google Analytics