CUDA 编程校园编程竞赛指定题目.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
CUDA 编程校园编程竞赛指定题目.pdf

CUDA 编程校园编程竞赛指定题目 最小生成树(Minimal Spanning Tree) 问题的GPU 加速 随着 《潜伏》等谍战电视剧热播,以余则成为代表的地下党特工在银幕上纵 横捭阖,煞是热闹。然而,真正的余则成恐怕更多考虑的是这样一个问题:怎样 在保证与上下级联系畅通的前提下,最小化他的特工组织暴露的风险。如果余则 成也是一位计算机科学家的话,他会把特工组织抽象为一个网络,组织中的每一 位特工都是网络中的一个节点。然后,余则成需要确定一个最佳的联络方案,这 里既要保证网络中的每一对节点都能够存在通信渠道(有可能是间接的,即通过 1 别的特工) ,又要保证通信渠道的数量最小 。以上第一条要求保证了上级的命令 能够传达到每一位情报员,而每一位情报员收集的情报也能够汇总到上级。同时, 第二条要求则保证不存在冗余的联系渠道,否则每增加一条渠道就也就增加了暴 露的机会。谍战片里常说的“单线联系”,实际上就反映了树(计算机科学中的树) 的一个重要特性,即任意两个节点只有一条通路。 实际上,余则成还真是“摊上大事儿了”,因为他面临的是计算机科学经典 问题之一,最小生成树(Minimal Spanning Tree,MST) 。我们首先来定义生成树 (spanning tree) 。 图1. 一个图的例子 生成树 给定一个连通图(connected graph),G=(V, E),其中V 为节点组合,E 为边组合(每一条边用两个节点定义) ,满足以下条件的子图(sub-graph)称为一个 生成树: 1 本文的写作借鉴了J. Eisner, “State-of-the-Art Algorithms for Minimum Spanning Trees∗A Tutorial Discussion” 一文的类比。 1. 是G 的连通子图; 2. 没有循环(即从1 个节点只有1 条路径到达任意其它节点) ; 3. 满足树的条件(边的个数为节点个数减1) 4. 包含G 的全部节点。 图1 是一个图的例子,其中一共有8 个节点,分别编号为 1 到8。该图还有 12 条边,每条边都有相应权重,标记在边的旁边。权重可以是相应节点之间的 距离,或者代表其它物理含义。图2 中用红色粗线标出的是图1 例子的一个生成 树,包括全部节点和7 条用红色标出的边。显然,一个图可以有多个生成树,其 中所有边的权重之和最小的一棵就是最小生成树。图3 是图1 中例子的最小生成 树。最小生成树在网络(计算机、通信、道路和电力等网络)规划、集成电路设计、 图像处理、计算生物学等科学和工程领域都有重要应用。 图2. 生成树的例子 图3. 最小生成树的例子 解决MST 问题的算法很多,参考文献[1]给出了全面的综述,而《算法导论》 [2]对该问题的一些经典方法如Kruskal 、Prim 和Borůvka 算法有着很好的阐述。 输入:图G=(V, E) 输出:最小生成树T 1. 把所有边按权重以权重递增顺序存放到数组L中 2. 初始化T为空集,即T= 3. 从L中选取权重最小的边e,如果e加入T不导致循 环,则将e与T合并 4. 重复3直至T覆盖G的所有节点 图4. Kruskal 算法伪代码 图4 是Kruskal 算法的伪代码。该算法思路很简单,是贪婪算法保证找到优 化解的经典例子。首先对所有边按权重排序,存放在数组 L 中;然后从空集开 始,每次从数组 L 中选择权重最小并且不产生循环的边加入集合,直至覆盖全 部节点。Kruskal 算法的瓶颈是排序,对边数量远大于节点数量的图(稠密图) 的效 率较差。同时,其贪婪式优化的本质不利于并行。文献[3]提出了一种改进的方 法,称为 Filter-Kruskal 算法,该算法采用递归结构,

文档评论(0)

kittymm + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档