- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Algorithms Design Techniques and Analysis 时间复杂度 Strassen算法的高效之处,就在于,它成功的减少了乘法次数,将8次乘法,减少到7次。 不要小看这减少的一次,每递归计算一次,效率就可以提高1 / 8,比如一个大的矩阵递归5次后,(7 / 8)5 = 0.5129,效率提升一倍。不过,这只是理论值,实际情况中,有隐含开销,并不是最常用算法。 矩阵是稀疏矩阵时,为稀疏矩阵设计的方法更快。所以,稠密矩阵上的快速矩阵乘法实现一般采用Strassen算法。 Algorithms Design Techniques and Analysis 6.8.4 三个算法的比较 三种算法所做的算术运算的次数 乘法 加法 复杂度 传统算法. n3 n3- n2 ?(n3) 递归方法. n3 n3- n2 ?(n3) STRASSEN 算法. nlog7 6 nlog7 -6 n2 ?(nlog7) Algorithms Design Techniques and Analysis 6.9 最近点对问题 问题: 设S是平面上n个点的集合,在这一节中,我们考虑在S中找到一个点对p和q的问题,使其相互距离最短。 换句话说,希望在S中找到具有这样性质的两点p1 = (x1,y1)和p2 = (x2,y2),使它们间的距离在所有S中点对间为最小。 Algorithms Design Techniques and Analysis 最近点对问题 蛮力算法就是简单地检验所有可能的n(n-1)/2个距离并返回最短间距的点对。耗费Θ(n2) 的时间 我们将运用分治设计技术描述一个时间复杂性为Θ(nlogn)的算法来解决最近点对间题。 Algorithms Design Techniques and Analysis 分治方法 Sort: 第一步是以x坐标增序对S中的点排序 Divide: S点集被垂直线L大约划分成两个子集Sl和Sr ,使|Sl| = ?|S|/2? , |Sr| = ?|S|/2? ,设L是经过x坐标S[?n/2?]的垂直线,这样在Sl中的所有点都落在或靠近L的左边,而所有Sr中的点落在或靠近L的右边。 Conquer: 现在按上述递归地进行,两个子集Sl和Sr的最小间距?l和?r可分别计算出来。 Combine: 组合步骤是把在Sl中的点与Sr中的点之间的最小间距?’计算出来。最后所要求的解是?l ,?r 和?’.中的最小值。 Algorithms Design Techniques and Analysis 基本思想 sort divide conquer combine 比较这三个距离,返回最小值 ?l ?r ?’ Algorithms Design Techniques and Analysis 怎样合并结果,这一步的关键在于计算?’,计算Sl中的每个点与Sr中每个点之间的距离的朴素方法需要?(n2)。 设? = min{?l, ?r},如果最近点对由Sl中的某个点pl与Sr中的某个点pr组成,则pl和pr一定在划分线L的距离?内。这样,如果令S’l和S’r分别表示为在线L距离?内的Sl和Sr 中的点,则pl一定在S’l中, pr一定在S’r中。 Algorithms Design Techniques and Analysis 假设? ’≤ ? ,则存在两点pl∈S’l和pr∈S’r ,有d(pl, pr) = ?’,从而pl和pr之间的垂直距离不超过? 因为pl,pr这两点都在以垂直线L为中心的?×2?矩形区内或其边界上 设T是两个垂直带内的点的集合 如果在?×2?矩形区内,任意两点间的距离一定不超过?,则这个矩形最多能容纳8个点,其中至多4个点属于Sl, 4个点属于Sr。 ? ? ? T L S’l S’r Algorithms Design Techniques and Analysis 分治方法 观察结论6.5 T中的每个点最多需要和T中的7个点进行比较。 上述的观察结论仅给出与T中每个点p的比较点数的上界,而没有给出哪些点与P比较的任何信息。 稍想一下,即可知P一定是与T中临近的点比较。为了找到这样的相邻点,我们借助于以r坐标的递增序对T中的点重新排序,然后,不难看出只需对T中每个点P,与它们的Y坐标递增序下的7个点比较。 Algorithms Design Techniques and Analysis 时间复杂度 排序S中的点需要Θ(nl
原创力文档


文档评论(0)