
算法
沃·夏澈德
今天的明天是后天的昨天。----茨鲍勒·程德
展开
-
动态规划----从硬币找零初识动态规划
问题1:有1,3,5三种硬币,输入待找币数,输出最少用币。(如输入15)思路:可以把15划分为14+1,12+3,10+5三种情况来看,这样我们就把问题给缩小了,对14,12,10同理。分析;设f(x)为找x元所需的最少硬币数,显然f(0)=0,f(1)=1,f(2)=f(1)+1=f(2-1)+1,f(3)=min{f(2)+1,f(0)+1}=min{f(3-1)+1,...原创 2018-07-31 19:33:14 · 930 阅读 · 0 评论 -
动态规划----从求最长非降子序列的长度问题看动态规划的算法设计
最长非降子序列的长度问题先给出问题:比如现在有一组数,5,3,4,2,7,答案显然是3,序列是3,4,7设计要素1.问题建模,获得优化的目标函数。2.划分子问题。3.得到问题最优函数值与子问题的最优函数值的关系,也就是递推方程。4.看是否存在最优子结构(不存在则不可以使用动态规划)5.解决最小的子问题是什么,获取初值算法设计:1.设f(x) 为到x时的最长非...原创 2018-08-03 11:04:18 · 718 阅读 · 0 评论 -
混合蛙跳算法实现步骤与例子
算法背景混合蛙跳算法的运行原理从仿生上来说可以这么认为:在一个池塘,有若干块石头,青蛙可以落在石头上,每块石头上可以获取到的食物数量是不同的,在池塘中有很多只青蛙,也有很多块石头,青蛙间可以交流,这样所有青蛙就都会往自己所在蛙群中所知道的最多食物的方向跳,或往全部青蛙中食物最多的方向跳,最终在池塘中找到最多食物的石头。算法原理不作赘述。(主要懒得写,而且功力不够写不好~)实现步...原创 2018-09-26 21:27:01 · 9077 阅读 · 11 评论 -
动态规划----通俗理解动态规划解决最小编辑距离的原理
最小编辑距离两个字符串之间的最小编辑距离,就是其中一个字符串通过若干次插入,删除,替换字符从而得到另一个字符,而这若干次就是最小编辑距离,这里假定允许替换为一次操作,否则替换则认为是删除,插入,是两次操作。原理方面这里有一片写的很详细的博文https://blog.youkuaiyun.com/qq_34552886/article/details/72556242,以下主要为举例理解。先上一...原创 2018-11-06 20:51:03 · 1081 阅读 · 0 评论 -
循环不变体与算法正确性
循环不变式主体是不变式,也就是一种描述规则的表达式。其过程分三个部分:初始,保持,终止。 (1)初始:保证在初始的时候不变式为真。 (2)保持:保证在每次循环开始和结束的时候不变式都为真。 (3)终止:如果程序可以在某种条件下终止,那么在终止的时候,就可以得到自己想要的正确结果。 上面的意思个人理解其实就是:一个算法在开始迭代之前的初始值是真的,然后每次迭代产生的结果也是真的...原创 2018-11-16 12:02:24 · 319 阅读 · 0 评论 -
全域散列与完全散列思想简单记录
参考:算法导论全域散列全域散列法在执行开始时,就从一组精心设计的函数中,随机地选择一个作为散列函数。选定后,后续操作都用这一个函数,不再更改。完全散列采用两级的散列方法来设计完全散列方案,在每级上都使用全域散列。 ...原创 2018-12-24 10:39:16 · 1128 阅读 · 0 评论