优化算法入门系列文章目录(更新中): 1.模拟退火算法 2.遗传算法一. 爬山算法 ( Hill Climbing ) 介绍模拟退火前,先介绍爬山算法。爬山算法是一种简单的贪心搜索算法,该算法每次从当前解的临近解空间中选择一个最优解作为当前解,直到达到一个局部最优解。 爬山算法实现很简单,其主要.....
分类:
其他好文 时间:
2014-07-10 10:54:28
阅读次数:
288
题目大意:有一头奶牛要上太空,他有很多种石头,每种石头的高度是hi,但是不能放到ai之上的高度,并且这种石头有ci个
将这些石头叠加起来,问能够达到的最高高度。
解题思路:首先对数据进行升序排序,这样才是一个标准的多重背包的问题
为什么要排序?
因为只有这样才能得到最优解,如果一开始就是高的在前面,那么后面有低的却不能选到,就直接选高的去了。这样是不能达到最优解的
使f[i]的状态标记,...
分类:
其他好文 时间:
2014-07-06 09:41:36
阅读次数:
177
题意:
给定一个序列,以最小代价将其变成单调不增或单调不减序列,这里的代价看题目公式。
思路:
很容易想到是DP。
1.
对前i个序列,构成的最优解其实就是与两个参数有关。一个是这个序列处理后的最大值mx,和这个序列处理的代价值cost。
显然最大值mx最小最好(这样第i+1个值可以不花代价直接接在其后面的可能性更大),cost最小也最好(题意要求),但是两者往往是鱼和熊掌。
用dp...
分类:
其他好文 时间:
2014-07-06 09:37:41
阅读次数:
350
今天又遇见一个有趣问题,有趣就会分享。 和往常一样,当然是我自认为这个题目有意思,有研究的价值。题目如下:“32瓶液体,1瓶有毒,老鼠喝了1小时死亡,用1小时确定至少30个瓶子无毒,至少需要多少老鼠。” 我的解法如下: 又是一个求最优解的问题。这个问题需要把一个老鼠能使用的信息用到极致,即能...
分类:
其他好文 时间:
2014-07-03 23:55:54
阅读次数:
344
在聚类中我们经经常使用到EM算法(i.e. Estimation - Maximization)进行參数预计, 在该算法中我们通过函数的凹/凸性,在estimation和maximization两步中迭代地进行參数预计,并保证能够算法收敛,达到局部最优解。PS:为了不在11.11这个吉祥的日子发bl...
分类:
其他好文 时间:
2014-07-02 09:56:51
阅读次数:
234
1.打表打表,是一个信息学专用术语,意指对某种找规律等题目,直接输出答案。这种算法也在对某种题目没有最优解法时,用来得到分数的一种策略。打表一般分为两步:找到答案与输出答案。找到答案的方式一、通过找规律,找出对于每个输入数据n,f[n]的最终结果。常见题目有费波纳契数列等;二、通过暴力搜索,找出对于...
分类:
其他好文 时间:
2014-06-28 16:52:06
阅读次数:
174
做这个题的时候想到了,先来一遍最短路,判断是否可以到达,若可以减去最短路的花费,再在剩下的花费里进行DP求最优解,想到了但是没做到,很多细节没有处理好,结果崩盘了,唉,看题解很多人都是两边dfs,不过这位大牛也是先spfa了一遍, 给我这个弱菜看看 刚好,这篇好好记录下来,
最后参考了大牛的:http://blog.csdn.net/acm_cxlove/article/details...
分类:
其他好文 时间:
2014-06-26 07:07:46
阅读次数:
199
问题:
假设有n个物品,每个物品都是有重量的,同时每个物品也是有价值的,要求把这些物品放到一个背包中,这个背包的载重量是有限制的,怎么使得背包里面的物品总价值最大?
符号表示:
N:物品个数
W:背包载重量
w[i]:物品i的重量(1
v[i]:物品i的价值(1
c[i, j]:到物品i为止,背包重量限制为j的最优解(1
分析:
最优解结构:对于物品i,只...
分类:
其他好文 时间:
2014-06-25 08:38:29
阅读次数:
259
兑换硬币问题,是贪婪算法的经典问题,本文不仅用python演示了这个算法,更指出此算法存在的问题,即不一定得到的结果都是最优解。...
分类:
其他好文 时间:
2014-06-18 11:23:08
阅读次数:
222
给一堆盒子,知道每个盒子的三围(长宽高),盒子正面朝你,不能旋转摆放,按照大的放在小的下面的原则堆起来,必须是 strictly larger,同样大小的盒子不行,问怎么样堆到最大的高度?思路:动态规划最优解一定是 max( {box_1 be the bottom}, {box_2 be the ...
分类:
其他好文 时间:
2014-06-14 15:46:55
阅读次数:
369