数据结构与算法.ppt

  1. 1、本文档共105页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构与算法

数据结构与算法 2006.9-2007.1 图的遍历与连通性 从已给的连通图中某一顶点出发,沿着一些边访遍图中所有的顶点,且使每个顶点仅被访问一次,就叫做图的遍历 ( Graph Traversal )。 图中可能存在回路,且图的任一顶点都可能与其它顶点相通,在访问完某个顶点之后可能会沿着某些边又回到了曾经访问过的顶点。 为了避免重复访问,可设置一个标志顶点是否被访问过的辅助数组 visited [ ],它的初始状态为 0,在图的遍历过程中,一旦某一个顶点 i 被访问,就立即让 visited [i] 为 1,防止它被多次访问。 深度优先有哪些信誉好的足球投注网站DFS ( Depth First Search ) 深度优先有哪些信誉好的足球投注网站的示例 DFS 在访问图中某一起始顶点 v 后,由 v 出发,访问它的任一邻接顶点 w1;再从 w1 出发,访问与 w1邻 接但还没有访问过的顶点 w2;然后再从 w2 出发,进行类似的访问,… 如此进行下去,直至到达所有的邻接顶点都被访问过的顶点 u 为止。接着,退回一步,退到前一次刚访问过的顶点,看是否还有其它没有被访问的邻接顶点。如果有,则访问此顶点,之后再从此顶点出发,进行与前述类似的访问;如果没有,就再退回一步进行有哪些信誉好的足球投注网站。重复上述过程,直到连通图中所有顶点都被访问过为止。 算法分析 图中有 n 个顶点,e 条边。 如果用邻接表表示图,沿 Firstout ? link 链可以找到某个顶点 v 的所有邻接顶点 w。由于总共有 2e 个边结点,所以扫描边的时间为O(e)。而且对所有顶点递归访问1次,所以遍历图的时间复杂性为O(n+e)。 如果用邻接矩阵表示图,则查找每一个顶点的所有的边,所需时间为O(n),则遍历图中所有的顶点所需的时间为O(n2)。 广度优先有哪些信誉好的足球投注网站BFS ( Breadth First Search ) 广度优先有哪些信誉好的足球投注网站的示例 使用广度优先有哪些信誉好的足球投注网站在访问了起始顶点 v 之后,由 v 出发,依次访问 v 的各个未曾被访问过的邻接顶点 w1, w2, …, wt,然后再顺序访问 w1, w2, …, wt 的所有还未被访问过的邻接顶点。再从这些访问过的顶点出发,再访问它们的所有还未被访问过的邻接顶点,… 如此做下去,直到图中所有顶点都被访问到为止。 广度优先有哪些信誉好的足球投注网站是一种分层的有哪些信誉好的足球投注网站过程,每向前走一步可能访问一批顶点,不像深度优先有哪些信誉好的足球投注网站那样有往回退的情况。因此,广度优先有哪些信誉好的足球投注网站不是一个递归的过程,其算法也不是递归的。 为了实现逐层访问,算法中使用了一个队列,以记忆正在访问的这一层和上一层的顶点,以便于向下一层访问。 为避免重复访问,需要一个辅助数组 visited [ ],给被访问过的顶点加标记。 连通分量 (Connected component) 当无向图为非连通图时,从图中某一顶点出发,利用深度优先有哪些信誉好的足球投注网站算法或广度优先有哪些信誉好的足球投注网站算法不可能遍历到图中的所有顶点,只能访问到该顶点所在的最大连通子图(连通分量)的所有顶点。 若从无向图的每一个连通分量中的一个顶点出发进行遍历,可求得无向图的所有连通分量。 在算法中,需要对图的每一个顶点进行检测:若已被访问过,则该顶点一定是落在图中已求得的连通分量上;若还未被访问,则从该顶点出发遍历图,可求得图的另一个连通分量。 对于非连通的无向图,所有连通分量的生成树组成了非连通图的生成森林。 一个连通图G如果不是重连通图,那么它可以包括几个重连通分量。 在一个无向连通图G中, 重连通分量可以利用深度优先生成树找到。 dfn 顶点的深度优先数,标明进行深度优先有哪些信誉好的足球投注网站时各顶点访问的次序。 如果在深度优先生成树中,顶点 u 是顶点 v 的祖先, 则有dfn[u] dfn[v]。 深度优先生成树的根是关节点的充要条件是它至少有两个子女。 其它顶点 u 是关节点的充要条件是它至少有一个子女 w, 从 w 出发, 不能通过 w、w 的子孙及一条回边所组成的路径到达 u 的祖先。 在图G的每一个顶点上定义一个 low 值,low[u] 是从 u 或 u 的子孙出发通过回边可以到达的最低深度优先数。 low[u] = min { dfn[u], min{ low[w] | w 是 u 的一个子女 }, min{ dfn[x] | (u, x) 是一条回边 } } u 是关节点的充要条件是: u 是具有两个以上子女的生成树的根 u 不是根,但它有一个子女 w,使得 low[w] ? dfn[u] 这时 w 及其子孙不存在指向顶点u的祖先的回边。 最小生成树 ( minimum cost spanning tree ) 使用不同的遍历图的方法,可以得

文档评论(0)

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

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

1亿VIP精品文档

相关文档