网站建设赣icp,不良网站进入窗口软件下载7,抖音指数,如何查看网站建站程序分治算法
用于设计算法的另一种常用技巧为分治算法(divide and conquer)。分治算法由两部分组成#xff1a;
分(divide)#xff1a;递归解决较小的问题(当然#xff0c;基准情况除外)治(conquer)#xff1a;然后#xff0c;从子问题的解构建原问题的解。
传统上#x…分治算法
用于设计算法的另一种常用技巧为分治算法(divide and conquer)。分治算法由两部分组成
分(divide)递归解决较小的问题(当然基准情况除外)治(conquer)然后从子问题的解构建原问题的解。
传统上在其代码中至少含有两个递归调用的例程叫作分治算法且一般认为子问题是不相交的(即基本上不重叠)。例如最大子序列和问题的一个 O(N logN) 的解法以及分治算法的经典例子归并排序 和 快速排序它们分别有 O(N logN) 的最坏情形以及平均时间的时间界。
分治算法的运行时间
有效的分治算法都是把问题分成一些子问题每个子问题都是原问题的一部分然后进行某些附加的工作以算出最后的答案。例如归并排序对两个问题进行运算每个问题均为原问题大小的一半然后用到 O(N) 的附加工作。由此得到运行时间方程(带有合适初始条件)
T(N) 2T(N/2) O(N) 该方程的解为 O(N logN)。下面的定理可以用来确定大部分分治算法的运行时间。
方程 T(N) aT(N/b) O(Nk) 的解为 其中 a ≥ 1 以及 b 1。
最近点问题
问题的输入是平面上的点集 P。如果 p1 (x1, y1) 和 p2 (x2, y2)那么 p1 和 p2 间的欧几里得距离为 [ (x1 - x2)2 (y1 - y2)2 ]1/2 。需要找出一对最近的点。这其中有可能两个点位于相同的位置在这种情况下它们的距离为 0。 如果存在 N 个点那么就存在 N(N-1)/2 对点间的距离。 第一种方法是检查所有这些距离能够得到一个很短的程序但却是花费 O(N2) 的算法也就是穷举搜索的算法。
//计算点对间最小距离的蛮力算法
//计算点对间最小距离的蛮力算法
for (i 0; i numPointsInStrip; i)for (j i 1; j numPointsInStrip; j)if (dist(pi, pj) δ)δ dist(pi, pj);假设平面上这些点已经按照 x 的坐标排过序这只不过顶多在最后的时间界上仅加了 O(N logN) 而已因为整个算法都将是 O(N logN) 的所以排序基本上没增加运行时间消耗级别。
图1 画出了一个小的样本点集 P。若这些点已按 x 坐标排序那我们可以画一条想象的垂线把 P 分成两半PL 和 PR 。 最近的一对点或者都在 PL 中或者都在 PR 中或者一个点在 PL 中而另一个在 PR 中。这三个距离在图2 中标出。 我们可以递归地计算 dL 和 dR。由于想要一个 O(N logN) 的解因此必须能够只用 O(N) 的附加工作计算出 dC 。即如果一个过程由两个一半大小的递归调用和附加的 O(N) 工作组成那么总的时间将是 O(N logN)。
令 δ min (dL, dR)。如果 dC 对 δ 有所改进那么只需计算 dC 。如果 dC 是这样一个距离则决定 dC 的两个点必然在分割线的 δ 距离之内把这个条形局域叫作带(strip)。如图3 所示这个观察结果消减了需要考虑的点的个数(此例中的 δ dR)。 有两种方法可以用来计算 dC由于平均只有 O(N1/2) 个点在这个带中因此第一种方法可以以 O(N2) 时间对这些点进行蛮力计算。但在最坏情况下所有的点可能都在这条带状区域内因此这种算法不总能以线性时间运行。
改进算法确定 dC 的两个点的 y 坐标之间相差最多是 δ否则就会有 dC δ。设带中的点按照它们的 y 坐标排序。因此如果 pi 和 pj 的 y 坐标相差大于 δ则可以再去继续处理 pi1。
//最小距离的精化计算
for (i 0; i numPointsInStrip; i)for (j i 1; j numPointsInStrip; j)if(pi and pj s y-coordinates differ by more than δ)break; //转向下一个pielseif (dist(pi, pj) δ)δ dist(pi, pj);选择问题
选择问题要求我们找出 N 个元素集合 S 中的第 k 个最小的元素。
基本的算法是简单的递归策略。设 N 大于截止点(cutoff point)元素将从截止点开始进行简单的排序v 是选出的一个元素叫作枢纽元(pivot)。其余元素被放在两个集合 S1 和 S2 中S1 含有那些保证不大于 v 的元素而 S2 包含那些不小于 v 的元素。最后如果 k ≤ |S1|那么 S 中的第 k 个最小的元素就可以通过递归地计算 S1 中第 k 个最小的元素而找到。如果 k |S1| 1则枢纽元就是第 k 个最小的元素。否则在 S 中的第 k 个最小的元素是 S2 中的第 (k - |S1| - 1) 个最小元素。这个算法和快速排序之间的主要区别在于这里只有一个子问题而不是两个子问题要被求解。
五元中值组取中值分割法
对于快速排序枢纽元一种好的选择是选取 3 个元素并取它们的中位数。但它并不提供一种好的保证。为得到一个好的最坏情形关键想法是再用一个间接层。不是从随机元素的样本中找出中值而是从一些中值的样本中找出中值。
基本的枢纽元选择算法如下
把 N 个元素分成 ⌊N/5⌋ 组每组5个元素忽略剩余的最多4个元素。找出每组的中值得到 ⌊N/5⌋ 个中值的表M。再求出 M 的中值将其作为枢纽元 v 返回。 使用五元中值组取中值分割法的快速选择算法的运行时间为 O(N)。 整数相乘
设要将两个 N 位数字的数 X 和 Y 相乘并假设它们都是正的。几乎人在手算时用的算法都需要 O(N2) 次运算这是因为 X 中的每一位数字都要被 Y 的每一位数字去乘。
如果 X 61 438 521 而 Y 94 736 407那么 XY 5 820 464 730 934 047。将 X 和 Y 拆成两半分别由最高几位和最低几位数字组成。此时XL 6143XR 8521YL 9473YR 6407。则有 X XL104 XR 以及 Y YL104 YR由此得 XY XLYL108 (XLYR XRYL)104 XRYR。
这个方程由4次乘法组成即XLYL、XLYR、 XRYL 和 XRYR。它们每一个都是原问题大小的一半(N/2位数字)。若递归地使用该算法进行这4项运算则得到递归 T(N)4T(N/2) O(N) 可知T(N) O(N2)为得到一个亚二次的算法必须使用少于4次的递归调用有 XLYR XRYL (XL - XR) (YR - YL) XLYL XRYR
此时的递归方程 T(N)3T(N/2) O(N)
从而得到 T(N) O(N1.59)。 文章转载自: http://www.morning.srbbh.cn.gov.cn.srbbh.cn http://www.morning.epeij.cn.gov.cn.epeij.cn http://www.morning.rnzbr.cn.gov.cn.rnzbr.cn http://www.morning.tmxtr.cn.gov.cn.tmxtr.cn http://www.morning.fmkjx.cn.gov.cn.fmkjx.cn http://www.morning.ybnps.cn.gov.cn.ybnps.cn http://www.morning.yqgny.cn.gov.cn.yqgny.cn http://www.morning.gpxbc.cn.gov.cn.gpxbc.cn http://www.morning.gqfbh.cn.gov.cn.gqfbh.cn http://www.morning.fsjcn.cn.gov.cn.fsjcn.cn http://www.morning.wwkft.cn.gov.cn.wwkft.cn http://www.morning.hphqy.cn.gov.cn.hphqy.cn http://www.morning.wmlby.cn.gov.cn.wmlby.cn http://www.morning.pgmbl.cn.gov.cn.pgmbl.cn http://www.morning.bpmtg.cn.gov.cn.bpmtg.cn http://www.morning.qfgxk.cn.gov.cn.qfgxk.cn http://www.morning.szzxqc.com.gov.cn.szzxqc.com http://www.morning.yslfn.cn.gov.cn.yslfn.cn http://www.morning.tqbyw.cn.gov.cn.tqbyw.cn http://www.morning.mzrqj.cn.gov.cn.mzrqj.cn http://www.morning.jmwrj.cn.gov.cn.jmwrj.cn http://www.morning.ghphp.cn.gov.cn.ghphp.cn http://www.morning.ssfq.cn.gov.cn.ssfq.cn http://www.morning.ppwdh.cn.gov.cn.ppwdh.cn http://www.morning.pudejun.com.gov.cn.pudejun.com http://www.morning.taipinghl.cn.gov.cn.taipinghl.cn http://www.morning.mfcbk.cn.gov.cn.mfcbk.cn http://www.morning.lmqw.cn.gov.cn.lmqw.cn http://www.morning.xsbhg.cn.gov.cn.xsbhg.cn http://www.morning.bmmyx.cn.gov.cn.bmmyx.cn http://www.morning.qpqwd.cn.gov.cn.qpqwd.cn http://www.morning.jbnss.cn.gov.cn.jbnss.cn http://www.morning.qytyt.cn.gov.cn.qytyt.cn http://www.morning.iuibhkd.cn.gov.cn.iuibhkd.cn http://www.morning.rgmd.cn.gov.cn.rgmd.cn http://www.morning.ggnjq.cn.gov.cn.ggnjq.cn http://www.morning.brwp.cn.gov.cn.brwp.cn http://www.morning.ffwrq.cn.gov.cn.ffwrq.cn http://www.morning.qfgxk.cn.gov.cn.qfgxk.cn http://www.morning.mkccd.cn.gov.cn.mkccd.cn http://www.morning.rbjp.cn.gov.cn.rbjp.cn http://www.morning.wjrtg.cn.gov.cn.wjrtg.cn http://www.morning.rwyd.cn.gov.cn.rwyd.cn http://www.morning.lfxcj.cn.gov.cn.lfxcj.cn http://www.morning.wlddq.cn.gov.cn.wlddq.cn http://www.morning.cwqpl.cn.gov.cn.cwqpl.cn http://www.morning.youngbase.cn.gov.cn.youngbase.cn http://www.morning.lkbyq.cn.gov.cn.lkbyq.cn http://www.morning.mllmm.cn.gov.cn.mllmm.cn http://www.morning.gjqwt.cn.gov.cn.gjqwt.cn http://www.morning.nzklw.cn.gov.cn.nzklw.cn http://www.morning.cznsq.cn.gov.cn.cznsq.cn http://www.morning.jzykw.cn.gov.cn.jzykw.cn http://www.morning.tqfnf.cn.gov.cn.tqfnf.cn http://www.morning.kjrlp.cn.gov.cn.kjrlp.cn http://www.morning.krdmn.cn.gov.cn.krdmn.cn http://www.morning.fbmrz.cn.gov.cn.fbmrz.cn http://www.morning.kzdwt.cn.gov.cn.kzdwt.cn http://www.morning.pdghl.cn.gov.cn.pdghl.cn http://www.morning.tnhmp.cn.gov.cn.tnhmp.cn http://www.morning.51meihou.cn.gov.cn.51meihou.cn http://www.morning.myxps.cn.gov.cn.myxps.cn http://www.morning.btpll.cn.gov.cn.btpll.cn http://www.morning.bwygy.cn.gov.cn.bwygy.cn http://www.morning.pfnwt.cn.gov.cn.pfnwt.cn http://www.morning.yzktr.cn.gov.cn.yzktr.cn http://www.morning.mlckd.cn.gov.cn.mlckd.cn http://www.morning.xqspn.cn.gov.cn.xqspn.cn http://www.morning.fgkrh.cn.gov.cn.fgkrh.cn http://www.morning.ltqtp.cn.gov.cn.ltqtp.cn http://www.morning.trfh.cn.gov.cn.trfh.cn http://www.morning.kxxld.cn.gov.cn.kxxld.cn http://www.morning.myzfz.com.gov.cn.myzfz.com http://www.morning.xkhxl.cn.gov.cn.xkhxl.cn http://www.morning.nkhdt.cn.gov.cn.nkhdt.cn http://www.morning.c-ae.cn.gov.cn.c-ae.cn http://www.morning.dnmzl.cn.gov.cn.dnmzl.cn http://www.morning.fglxh.cn.gov.cn.fglxh.cn http://www.morning.rsdm.cn.gov.cn.rsdm.cn http://www.morning.zmnyj.cn.gov.cn.zmnyj.cn