算法课讲稿.doc

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

第5组 算法课讲稿 —————小组成员 §6-1 集合上的基本操作 在算法设计中,集合是许多重要抽象数据类型的基础。有许多的问题也常常是用集合来描述的。与一个问题有关的数据一般取自某一特定集合,该集合称为问题的定义域(或全集)。求解问题的算法可用问题定义域上的基本操作来实现。 如果把问题所考察的数据全体称为集合U(全集),可变子集记为S, S≤U, 集合中的一个具体数据或唯一表征该数据的关键字称为元素,则在集合S上的操作大致如下: MENBER ( a, S ) 询问元素a 是否属于集合 S INSERT ( a ,S ) 把一个元素a插入集合 S DELETE ( a , S) 把一个元素a 从集合中S删除 MIN ( S )     给出S中的最小元素 FIND( a )     在集合S中检索元素a SPLIT ( a , S )   以a为界,将集合S分成两个集合S1、S2 UNION ( S1 , S2 ,S ) 合并集合S1、S2,用S1∪S2代替S 实际问题往往可以分成几个较小的问题,对于每个问题又可以抽象的描述成某种数据集合上的上述7种操作的某一种操作。 例如求某一无向连同图的最小耗费树,在他当中就要用到INSETT、 DELETE、 UNION、 FIND及MIN 操作。 设G=(V , E ) , 其生成的无向树 S=( V 、T ), 而它的生成森林是一个无向树的集合 {(V1 , T1),(V2 , T2)…… (Vk , Tk)}, 并使得Vi 形成一个 V的划分,即 ∪Vi=V 且 Vi ∩Vj=Φ (i≠j) 例1 给定图G=(V , E ) 构造最小耗费生成树 算法6-1 利用集合上的操作求图G的最小耗费生成树 begin T←Φ VS ←Φ for 每个顶点v∈V do 把只有一个元素的集合{v}加到VS; while ||VS|| 1 do begin 选出E中最低耗费的边 (V, W) 从E中删去边(V , W) if v和w属于VS中两个不同的集合W1,W2, then begin 用 W1 ∪W2 替换VS中的W1和W2 边(v , w)加入T end end end 这个算法中的行5是在集合上运用操作MIN, 行6是执行DELETE操作,执行着两种操作利用对结构(求最大、最小元素)很方便。行7要确定边(v , w)是否连接了生成森林中的两棵树。如果是,那么被(v , w)连接的两棵树就在行8中合并(即执行操作UNION),而行9 把边(v , w)加入最终生成树的边集T(执行操作INSERT)。总的来说,行7要求找到特定节点的集合的名字,即执行FIND, 行8执行UNION操作,而行9执行INSERT操作。 §6-2 二叉检索 前提:U,S是两个集合,S是U的真子集, S中有n个元素,并具有线序≦ , 而且已经存储在数组A中,A(1)A(2)…A(n)。 U中元素a是否在S中? 定义:集合S的二叉检索树是一有标记的二叉树,它的每个节点v用一个元素L(v)∈S 来标记,使得 对于v的左子树中的每个节点u,有 L(u)L(v) 对于v的右子树中的每个节点w,有 L(w)L(v) 对于每个元素a∈S, 恰有一个节点v, 使得 L(v)=a 显然,集合S中的元素和二叉树中的标号之间存在一一对应的关系。这样L(v)=a 就是在二叉树中寻找节点v , 其标号的值恰恰为a 。 算法6-2 在二叉树中寻找元素a 集合S的二叉树及元素a procedure SEARCH(a, v) if a=L(v) then return “yes” else if aL(v) then if v 有左子树U then return SEARCH(a,U) else return “no” else if v 有左子树W then return SEARCH(a,W) else return “no ” end 此算法,显然执行了MENBER(a , S) 操作。 对于此算法稍加修改久可以执行MIN 、INSERT操作。(稍后会举例) 定理

文档评论(0)

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

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

1亿VIP精品文档

相关文档