02图与简单图论算法.pdf

  1. 1、本文档共35页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2010 年潍坊市信息学奥赛夏令营 图及简单图论算法 潍坊七中 刘振业 DS- 图 学习指南 离散数学中的图论是专门研究图性质的一个数学分 支,但图论注重研究图的纯数学性质,而数据结构中对 图的讨论则侧重于在计算机中如何表示图以及如何实现 图的操作和应用等。图是较线性表和树更为复杂的数据 结构,因此和线性表、树不同,虽然在遍历图的同时可 以对顶点或弧进行各种操作,但更多图的应用问题如求 最小生成树和最短路径等在图论的研究中都早已有了特 定算法,在本章中主要是介绍它们在计算机中的具体实 现。这些算法乍一看都比较难,应多对照具体图例的存 储结构进行学习。而图遍历的两种搜索路径和树遍历的 两种搜索路径极为相似,应将两者的算法对照学习以便 提高学习的效益。 DS- 图的类型 DS- 图的常用术语 顶点的度 对无向图而言,邻接点的个数定义为顶点的度。 对有向图而言,顶点的度为其出度和入度之和,其中 出度定义为以该顶点为弧尾的弧的个数,入度定义为以 该顶点为弧头的弧的个数。 DS- 图的常用术语 子图 (subgraph) DS- 图的常用术语 路径和回路 若有向图 G 中 k+1 个顶点之间都有弧存在,则这个顶点的 序列 {v0,v1,…,vk } 为从顶点 v0 到顶点 vk 的一条有向路径, 路径中弧的数目定义为路径长度,若序列中的顶点都不相同,则 为简单路径。对无向图,相邻顶点之间存在边的 k+1 个顶点序 列构成一条长度为 k 的无向路径。如果v0 和 vk 是同一个顶 点,则是一条由某个顶点出发又回到自身的路径,称这种路径为 回路或环。 DS- 图的常用术语 连通图和连通分量、强连通图和强连通分量 若无向图中任意两个顶点之间都存在一条无向路径, 则称该无向图为连通图,否则称为非连通图。 非连通图中各个极大连通子图称作该图的连通分量。 若有向图中任意两个顶点之间都存在一条有向路径, 则称该有向图为强连通图。 非强连通的有向图中的极大强连通子图称作有向图的 强连通分量。 DS- 图的常用术语 生成树和生成森林 一个含 n 个顶点的连通图的生成树是该图中的一个 极小连通子图,它包含图中 n 个顶点和足以构成一棵 树的 n-1 条边。 对于非连通图,对其每个连通分量可以构造一棵生成 树,合成起来就是一个生成森林。 DS- 图的常用术语 无向网和有向网 在实际应用中,图的弧或边往往与具有一定意义的数 相关,称这些数为 权 ,分别称带权的有向图和无向 图为有向网和无向网。 DS- 图的数组存储表示法 由于图结构中任意两个顶点之间都可能存在 关 系 ,因此无法以顺序存储映象表示这种关系,即 图没有顺序存储结构。 假设图中顶点数为n ,则邻接矩阵 定义为 : 网的邻接矩阵的定义为,当v 到 v 有弧相邻接 i j 时, A 的值应为该弧上的权值 ,否则为∞。 i,j DS- 图的数组存储表示法 DS- 图的邻接表存储表示法 类似于树的孩子链表,将和同一顶点 相邻 接 的所有邻接点链接在一个单链表中,单链表 的头指针则和顶点信息一起存储在一个一维数组 中。 DS- 图的遍历 与二叉树和树的遍历相同,图的 遍历 是对 图中的每个顶点都进行一次访问且仅进行一次访 问。但由于图结构较树和二叉树更为复杂,图中 任意两个顶点之间都可 能存在一条弧或边,反之 也可能存在某个顶点和其它顶点之间都不存在弧 或边。因此对图的遍历而言,除了要确定一条搜 索路径之外,还要解决两个问题 : (1)如何确 每个顶点都被访问到 ; (2)如何确 每个顶点只被访问一次。 DS- 深度优先搜索遍历图 从某个顶点 V0 出发深度优先搜索遍历连通图的 定义为 : 首先访问该顶点,然后依次从 V0 的各个未被访 问过的邻接点出发进行深度优先搜索遍历。 算法 7.3 void DFS(Graph G, int v)   {    // 从顶点 v 出发递归地深度优先遍历图G    visited[v] = TRUE; VisitFunc(v);

文档评论(0)

chqs52 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档