分治算法-实验报告.docx

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
<<算法设计与分析 >> 实验报告之 <<算法设计与分析 <<算法设计与分析 ?实验报告 - - PAGE # - <<算法设计与分析 <<算法设计与分析 >> 实验报告 PAGE PAGE # - 实验 分治算法 一、实验目的 1.掌握分治算法的设计思想与方法,2.熟练使用高级编程语言实现分治算法, 1. 掌握分治算法的设计思想与方法, 2. 熟练使用高级编程语言实现分治算法, 3.4.实现基于枚举方法的凸包求解算法5.实现基于Graham-Scan勺凸包求解算法6.实现基于分治思想的凸包求解算法 3. 4. 实现基于枚举方法的凸包求解算法 5. 实现基于Graham-Scan勺凸包求解算法 6. 实现基于分治思想的凸包求解算法 7. 对比三种凸包求解算法 通过对比简单算法以及不同的分治求解思想,体验分治算法。 二、实验内容 三、实验过程及结果 3.1算法主要步骤及代码 三种算法同时用到的凸包输出函数: tfef rtakeCMOKtf)! xjnin Point ' anf'), float! * inf J) xjMK Point! floflff'lnf), flMf('inf')} --P 1 CH! P.M - x_miri P P-X - X-iraX.K! x_max P SU, SL [],(] P CH; Po int. t ros sMult Iply (n, P> SU.Bppend(P) SL.Mpen"(卩 J SU.sorU戟ey lufrbtia x:x.ir, revarse True) SL?iort怙社/cx.x, neverse-F^lse) CHO [] CHOpappendix jnln] CHO.extend(St) CHQ.extendfSUl CHU 1.基于枚举的方法的凸包求解算法 gstdtltBeThadcfef gstdtltBeThad cfef CrossWuUlpLy( oi, pi, pJ h (p2rX pl.x ) ( pl+y 〕 ( I ( p3?x pI.K I 若P在三角形内部,则:直雪ABfl會+ *g(A.B,P>0g(A,BP)<0E(A.B.P)>OPeAABCg(A.B.P)- g(A,B,C) iO g(ACP} g(A.C,B) >0 g(B.CP> g(B.CA) >0e律启.PpOZ\b5 若P在三角形内部,则: 直雪ABfl會+ * g(A.B,P>0 g(A,BP)<0 E(A.B.P)>O PeAABC g(A.B.P)- g(A,B,C) iO g(ACP} g(A.C,B) >0 g(B.CP> g(B.CA) >0 e律启.PpO Z\b 5 * g(A,&.P)-0 g(A?B,P)<0 设三角形三点 A(x1,y1), B(x2,y2), C(x3,y3),已知点 P(x,y) I p与C在AB同侧 P与A在BC同侧 P与B在CA同侧 Jt ft Br uteF orceC H(g)i L l ar HS'Cmg Do ir英中=点^^^于其他三庸?咸的三用理内Then 从Q中K除谏点 2. 3. def BruteForceCHtG*): CH [P P丄Q】 aef PoifitKnnerAflCtfl, u,「P): PxAB PxBC PkCA Pom.CrossMultiplylA, B, PJ Point,CrossMultiply(B, C, P) PointsCrassMultiplyfCj A, P) CxAB AxBC BkCA F*oint,CrossMjXtip^ytAj G, CJ PointiCrossHjltipVytej C, A) Paint,CrassMuItlplyfC, A,引 PxAB CkAB F; I PxBC AxK 0 PmCA BxCA e Q: BB0: A: Q: B B 0: A: 0: C B A: 0:C 0: C P B P A: ptsTnABC ptsTnABC PolntInnerAeC(A,D,C,P} PisInABC: □Hr removeCP) CH 2基于Graham-Scan的凸包求解算法 1)2) 1) 2) 3) 4) 准备堆栈:建立堆栈 S,栈指针设为t,将0、1、2三个点压入堆栈 S ; 对于下一个点i,只要S[t-1]、S[t]、i不做左转,就反复退栈;将 i压入堆栈S 堆栈中的点即为所求凸包; 耳 H Graham-Scan(0 1.血私屮沪殖* JEp*】 人*JI轟戸寵讨为)奏申M 3.4.5.6.7,8.Push(p0 A>; P 11血?” 3. 4. 5. 6. 7, 8. While N

文档评论(0)

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

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

1亿VIP精品文档

相关文档