并行计算-实验指导-实验05 计算几何.docVIP

  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文档。上传文档
查看更多
并行计算-实验指导-实验05 计算几何.doc

实验5 计算几何 1 包 含 问 题 1 1.1 包含问题及其串行算法 1 1.2 包含问题并行算法 2 2 相交问题 4 2.1 两多边形相交问题及其串行算法 4 2.2 相交问题的并行算法 5 3 凸壳问题 6 3.1 凸壳问题及其串行算法 6 3.2 凸壳问题并行算法 7 小结 8 参考文献 8 附录 包含问题并行算法的MPI源程序 9 包 含 问 题 count=0 (2) while in do if p is on Ei then return true else if y=py(x≤px) intersects Ei left q and q is not Ei low-end then count=count+1 end if end if end while (3) if ((count mod 2)=1) then return true else return false end if End 算法的总运行时间为t(n)=O(n)。 1.2 包含问题并行算法 我们介绍两种简单方法来实现上面串行算法的并行化。一种方法是将串行算法中的步骤2并行化。假设系统有p个处理器,多边形有n条边,将n条边平均分配到这p个处理器中,每个处理器最多处理条边。具体的处理方法为过p点向x的负半轴方向做一条射线,判断:如果点是在边上则返回为;线与边无交点时返回0;如果有交点,那么就有2种情况,如果交点是边的下顶点,则返回为0,否则,即交点在边上,则返回为1;把一个处理器中的所有返回值加起来,然后将该值发送到主处理器(my_rank=0),最后主处理器根据点的个数来判断点与多边形的关系。 另一种方法同样也是将串行算法中的步骤2并行化。假设有p=2α-1个处理器,为正整数。p个处理器的编号从根开始自上而下,自左而右逐级向下推进。每个处理器存储多边形Q的一条边,边由其两个端点的迪卡尔坐标表示,点p的坐标为()。开始时,根读进,然后传送给树中的其余处理器。当接收到p的坐标时,他就确定:穿过p的射线是否和Q的边相交;对于特殊的情况需要利用图形学的知识处理之。如果条件满足,则产生“1”输出;否则为“0”。将个处理器的输出相加,若和为奇数,则p位于Q内;如果为偶数,则p位于Q外;如果和为,则输出p在多边形上。 算法17.2 多处理机上包含问题算法 输入:点p坐标(px,py);多边形Q的n条边E1,E2, ,…,En的两个端点坐标集合S 输出:点和多边形的位置关系:true(p位于Q内);false(p位于Q外) Begin (1) count=0 (2) for all Pj where 1≤j≤p par-do resultj=0 end for (3) for all Pj where 1≤j≤p par-do for i=1 to do if p is on Ei×p+j then return resultj= else if y=py(x≤px) intersects Ei×p+j left q and q is not Ei×p+j low-end then resultj= resultj+1 end if end if end for end for (4) for j=1 to p par-do Pj sends resultj to P0 end for for j=1 to p do count= count+ resultj end for if ((count mod 2)=1) or (count=) then return true else return false end if End 在有p个处理器的情况下,上述算法的时间复杂度为O()。 MPI源程序请参见所附光盘。 2 相交问题 …,En的两个端点坐标集合S1,多边形Q的m条边 F1,F2,,…,Fm的两个端点坐标集合S2 输出:两个多边形是否相交:true(两多边形相交);false(两多边形不相交) Begin for i=1 to n do for j=1 to m do if (Ei intersects Fj ) then return true end if end for end for return false End 显然上述算法所需时间为O(mn)。 2.2 相交问题的并行算法 下面我们给出两多边形相交问题的朴素并行算法:对于多边形R的每一条边,要确定其是否与多边形Q相交;如果R的边中有一条边与Q相交,那么就可以断定多边形R与Q是相交的。假设R有n条边,Q有m条边,总共有p个处理器P1 ,P2 ,…,Pp。对于R中的每条边依次判断是否与Q相交。 算法17.4 两多边形

文档评论(0)

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

1亿VIP精品文档

相关文档