c++&oi

USACO5.2.3-fence5

USACO5.2.3-fence5-
我也觉得好像算法是错的。
但就是过掉了,算法就是逐渐加大精度的搜索。
先找出最优解的大致范围,然后继续搜索。
但的确是一种解决问题的思路吧!加上卡时间,应该能拿很多分的。
两次递降精度扫描


据说正解是模拟退火,等待学习。

其实这道题,本来就是考察近似算法,所以一开始的那种方法也是可以接受的。(不过效果更差罢了)

学习了一下模拟退火,主要懂了思想,就是有一定的概率接受较次的解,以防止陷入局部最优之中。
然后温度T,单调递减,目的是使这个概率逐渐降低。
但实现时非常不成功,需要大量的调试+枚举算法对拍。
我的经历:1.一次只向一个方向移动,x或y
               2.设计移动距离关于T的函数比较困难,多项式显然错误,因为T是递减的幂函数,
                  概率函数是指数函数,我尝试地试了对数函数,结果错解无数。。。
               3.T不一定要降到一个指定的值啊,只要周围没有更优解就结束。
               4.其实我写的东西还是精度递降的形式(常数递降),每个精度也不过尝试一个常数次数罢了,只是加上了接受较劣解的函数而已。
      ——可以见得,设计各种函数、常数都是有一定技巧的——

不正版的模拟退火

据说正版代码,部分代码求解释

posted on 2012-04-05 23:09 zyn.cpp 阅读(108) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2012年4月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

导航

统计

常用链接

留言簿

随笔档案(57)

文章档案(13)

搜索

最新评论

阅读排行榜

评论排行榜