算法合集之《非完美算法初探》

上传人:子 文档编号:42631383 上传时间:2018-06-02 格式:DOC 页数:15 大小:105KB
返回 下载 相关 举报
算法合集之《非完美算法初探》_第1页
第1页 / 共15页
算法合集之《非完美算法初探》_第2页
第2页 / 共15页
算法合集之《非完美算法初探》_第3页
第3页 / 共15页
算法合集之《非完美算法初探》_第4页
第4页 / 共15页
算法合集之《非完美算法初探》_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《算法合集之《非完美算法初探》》由会员分享,可在线阅读,更多相关《算法合集之《非完美算法初探》(15页珍藏版)》请在金锄头文库上搜索。

1、本资料由-大学生创业|创业|创业网 http:/ 减肥药排行榜|淘宝最好的减肥药|什么减肥药效果最好|减肥瘦身药|http:/非完美算法的应用非完美算法的应用河北唐山一中 任一恒在平时的练习和考试中,我们都是尽量设计出完全正确的算法来解决问题。可是,实际中很多问题都是不能完美解决的,还有很多问题完美解决所需要的时间&空间是根本无法接受的,所以,非完美的算法在实际中有着很广的应用。随着竞赛的题目越来越接近时际,以按优劣计分的题目为代表的考察非完美算法的题目越来越多,本文将讨论一些常用的非完美算法,希望给读者一些启发。1、 贪心算法贪心算法贪心算法的基本思路是从问题的某一个初始解出发逐步逼近给定的

2、目标,以尽可能快的地求得更好的解。当达到某算法中的某一步不能再继续前进时,算法停止。这样我们就得到了一个解,但是我们无法保证解是最优的。下面我们来看看贪心算法的表现。例题 1 NOI2007 追捕盗贼某国家要追捕一个大盗,该国家的城市网络是一棵树,现在要你通过在某城市空降警察,让警察从某城市移动到有道路连接的城市,收回某警察来达到捕捉到盗贼的目的。用到的警察越少越好。这道题的标准算法用到了很多高等知识,而且实现也是相当复杂的,在限定的时间内完美的解决这道题可以说是不能完成的任务,那么我们贪心算法在这道题上的表现如何呢?我们不妨将原树想象为一棵有根的树,先在根结点空降一个警察,然后再次在根结点空

3、降一个警察,让这个警察走向某棵子树,对这棵子树重复上面的过程,这样一棵子树一棵子树的排除,直到整棵树被排除。这里可以采取一个十分有效的优化就是在只剩一棵子树的时候,不用再安排新的警察,直接让一直守在根结点的那个警察走过去即可。所以不妨安排需要警察最多的那颗子树最后走,这样可以使结果得到很大优化。由于结点数不超过 1000,所以我们可以枚举每个结点为根结点,找出其中需要警察最少的那个。这个算法虽然存在着反例,但是由于那个十分有用的优化,可以使结果十本资料由-大学生创业|创业|创业网 http:/ 减肥药排行榜|淘宝最好的减肥药|什么减肥药效果最好|减肥瘦身药|http:/分接近标准结果。通过数据

4、试验的结果,有 90%的结果和标准算法产生的结果一致,10%不一致的相差也是十分的小。可以说贪心算法在这道题目上发挥的很好。贪心算法的优点在于实现容易,时间效率高,而其缺点则是在很多时候和标准算法的差距过大,精确度不够。所以我们要尽量优化贪心算法。优化贪心算法主要从两个方面来着手:1、多和完美算法结合,可以通过在部分使用完美算法而总体使用贪心的方法,通过贪心来结合若干部分的最优结果,尽量的接近真正最优的结果;2、贪心权值的选择,一个贪心算法的关键就是所选的策略,所以在选择权值时我们要尽可能的包含更多的能对全局产生影响的信息,使最终解能更加接近最优解。二、随机算法二、随机算法和上面的贪心算法相同

5、,随机算法也是使用较多的一种算法。下面我们来看一道例题。例题 2 SPOJ1481 Yet another computer network problem给你一个 n 个点,m 条边的无向图,让你构建一棵生成树,但是每个点的度数不能超过一个给定的限制 b,求所能构建的最小生成树。(10,然后转第 2 步。例题 4 TSP 问题设有 n 个城市,用数码 1,n 代表。城市 i 和城市 j 之间的距离为 d(i,j) i, j=1,n找出遍访每个域市恰好一次的一条回路,且其路径总长度为最短。求解 TSP 的模拟退火算法模型可描述如下: 解空间 解空间 S 是遍访每个城市恰好一次的所有回路,是1,

6、n的所有循环排列的集合,S 中的成员记为(w1,w2 ,,wn),并记 wn+1= w1。初始解可选为(1,n) 本资料由-大学生创业|创业|创业网 http:/ 减肥药排行榜|淘宝最好的减肥药|什么减肥药效果最好|减肥瘦身药|http:/目标函数 此时的目标函数即为访问所有城市的路径总长度或称为代价函数:我们要求此代价函数的最小值。 新解的产生 随机产生 1 和 n 之间的两相异数 k 和 m,若 km,则将 (w1, w2 ,,wm , wm+1 ,,wk,,wn)变为:(wm, wm-1 ,,w1 , wm+1 ,,wk-1 ,wn , wn-1 ,,wk). 上述变换方法可简单说成是“

7、逆转中间或者逆转两端”。代价函数差 设将(w1, w2 ,,wn)变换为(u1, u2 ,,un), 则代价函数差为:d(u1,u2)+d(u2,u3)+d(un-1 ,un)+d(un,u1)- d(w1,w2)+d(w2,w3)+d(wn-1 ,wn)+d(wn,w1)。将这些部分代入模拟退火算法的基本过程即可解决 TSP 问题了。模拟退火算法的应用很广泛,在应用的时候主要注意以下 3 点:(1) 温度T 的初始值设置问题。温度 T 的初始值设置是影响模拟退火算法全局搜索性能的重要因素之一,初始温度高,则搜索到全局最优解的可能性大,但因此要花费大量的计算时间;反之,则可节约计算时间,但全局

8、搜索性能可能受到影响。实际应用过程中,初始温度一般需要依据实验结果进行若干次调整。(2) 退火速度问题。模拟退火算法的全局搜索性能也与退火速度密切相关。一般来说,同一温度下的“充分”搜索(退火)是相当必要的,但这需要计算时间。实际应用中,要针对具体问题的性质和特征设置合理的退火平衡条件。(3) 温度管理问题。温度管理问题也是模拟退火算法难以处理的问题之一。实际应用中,由于必须考虑计算复杂度的切实可行性等问题,常采用如下所示的降温方式:T(t+1)kT(t) 式中 k 为正的略小于 1.00 的常数,t 为降温的次数。实践实践例题 5 百度之星 2007 紧急修复某市的 k 家公司瘫痪,要在 T

9、 小时之后才能自动修复,每家公司每小时都在受到损失,第 i 家公司每小时受损为 P(i),现在派遣 n 只维修队进行抢修,力求在自动修复之前将损失降到最小。城市被划分为 r*c 的网格,现给出了每个公司的坐标,每个维修队的初始坐标,每个公司的受损程度。每小时每个维本资料由-大学生创业|创业|创业网 http:/ 减肥药排行榜|淘宝最好的减肥药|什么减肥药效果最好|减肥瘦身药|http:/修队可以移动(最多 s 格) ,也可以维修它所处在的格子,现在希望你设计一种方案使损失降低到最小。对于这道题目,并不存在一个完美的算法,所以我们要想出一个尽可能优秀的算法。首先,我们要进行一个 bfs,计算两点

10、间的距离,由于每个维修队肯定都是以一个公司为某段行程的终点,所以并不需要计算任意两点间的距离,只需要算出每个点到每个公司的距离即可,这一步的时间复杂度为 O(RCK)。按照题目要求,我们在 T 时间之前修理完越多的公司越好。所以我们不妨安排一个要修理的公司的顺序,按照顺序依次全力修理完每个公司。对于当前选中的公司,如果某个修理队赶到那里能提前结束维修,就让他赶过去修理。如果不能,他就可以前往下一个公司了。公司顺序的选择关系到了我们算法的优秀程度,我们可以使用前面提到的模拟退火方法来实现公司顺序的选择,这样整个算法的结果就十分优秀了。总结总结本文介绍了几种常用的非完美算法,通过以上问题的分析,我

11、们可以看出,非完美算法有着很广泛的应用,它有着时空消耗低,编程复杂度低,思维容易的优点,而且在处理很多题目时,有着不逊于甚至优于完美算法的表现。所以,合理的使用非完美算法能给我们满意的结果。由于学识有限,所以本文的探讨比较肤浅,非完美算法还需要大家在学习时更多的探讨和总结。参考文献参考文献非最优化算法初探杨培 2000 年论文。浅析非完美算法在信息学竞赛中的应用胡伟栋 2005 年论文。楼天成百度之星解题报告。SAA,模拟退火算法 。本资料由-大学生创业|创业|创业网 http:/ 减肥药排行榜|淘宝最好的减肥药|什么减肥药效果最好|减肥瘦身药|http:/【附录附录】例题原题例题原题NOI2

12、007 DAY2追捕盗贼追捕盗贼问题描述问题描述魔法国度 Magic Land 里最近出现了一个大盗 Frank,他在 Magic Land 四处作案,专门窃取政府机关的机密文件(因而有人怀疑 Frank 是敌国派来的间谍)。为了捉住 Frank,Magic Land 的安全局重拳出击! Magic Land 由 N 个城市组成,并且这 N 个城市又由恰好 N-1 条公路彼此连接起来,使得任意两个城市间都可以通过若干条公路互达。从数据结构的角度我们也可以说,这 N 个城市和 N-1 条公路形成了一棵树。 例如,下图就是 Magic Land 的一个可能格局(4 个城市用数字编号,3 条公路用字

13、母编号):大盗 Frank 能够在公路上以任意速度移动。 比方说,对于上图给出的格局,在 0.00001 秒钟内(或者任意短的一段时间内) ,Frank 就可以从城市 1 经过城市 2 到达城市 4,中间经过了两条公路。 想要生擒 Frank 困难重重,所以安全局派出了经验丰富的警探,这些警探具有非凡的追捕才能: 1. 只要有警探和 Frank 同处一个城市,那么就能够立刻察觉到 Frank,并且将其逮捕。 2. 虽然 Frank 可以在公路上以任意快的速度移动,但是如果有警探和 本资料由-大学生创业|创业|创业网 http:/ 减肥药排行榜|淘宝最好的减肥药|什么减肥药效果最好|减肥瘦身药|

14、http:/Frank 在同一条公路上相遇,那么警探也可以立刻察觉到 Frank 并将其逮捕。 安全局完全不知道 Frank 躲在哪个城市,或者正在哪条公路上移动,所以需要制定一个周密的抓捕计划,计划由若干步骤组成。在每一步中,可以做如下几件事中的一个: 1. 在某个城市空降一位警探。警探可以直接从指挥部空降到 Magic Land的任意一个城市里。此操作记为“L x”,表示在编号为 x 的城市里空降一位警探。耗时 1 秒。 2. 把留在某个城市里的一位警探直接召回指挥部。以备在以后的步骤中再度空降到某个城市里。此操作记为“B x”。表示把编号为 x 的城市里的一位警探召回指挥部。耗时 1 秒

15、。3. 让待在城市 x 的一位警探沿着公路移动到城市 y,此操作记为“M x y”。耗时 1 秒。当然,前提是城市 x 和城市 y 之间有公路。如果在警探移动的过程中,大盗 Frank 也在同一条公路上,那么警探就抓捕到了 Frank。 现在,由你来制定一套追捕计划,也就是给出若干个步骤,需要保证:无论大盗 Frank 一开始躲在哪儿,也无论 Frank 在整个过程中如何狡猾地移动(Frank 大盗可能会窃取到追捕行动的计划书,所以他一定会想尽办法逃避) ,他一定会被缉拿归案。 希望参与的警探越少越好,因为经验丰富的警探毕竟不多。 例如对于前面所给的那个图示格局,一个可行的计划如下: 1. L 2 在城市 2 空降一

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号