
动态规划
FarmerJohn
Java后端工程师。
肿瘤学研究生;平时也喜欢研究算法、统计学、机器学习、深度学习、贝叶斯分析、临床数据分析、生信数据分析、Android开发。
展开
-
LCS、LIS、LCIS 与动态规划
话说LCS有O(n*m)的算法,LIS也有O(n*m)的算法;XX日,LIS被栈和二分优化了,复杂度变为了nlogn,于是n排列的LCS也被优化了,也达到了nlogn.nlogn的LCS:设有序列A,B。记序列A中各个元素在B 中的位置,用序列C存,求C的LIS即可。LCS与LIS结合,于是有了LCIS,LCIS有n*m的算法。代码如下:for i:=1 to n do begin t:=...原创 2011-10-31 20:40:57 · 744 阅读 · 0 评论 -
树的直径与树的中心
1. 树的直径概念:树中的最长路。求法:两次深搜或DP。1-两次深搜:任找一点A为源点,深搜遍历得到最远点B,这个最远点B必定在直径中(感性想想,以A点为源点找到的最长路后面一段必定属于树的直径的一部分);再以这个最远点B为源点深搜遍历求一个最长路,这个最长路即为树的直径。2-DP:显然最长路的两个端点必然是叶子或者根节点。设f(i)表示到i最远的叶子,g(i)表示到i次远的...原创 2011-10-29 17:49:22 · 4080 阅读 · 1 评论 -
字符串的非精确匹配
对于字符串的exact matching,KMP、Suffix Tree等方法是利器,但是对于inexact matching,这些方法就有些吃力了,虽然也能使用Suffix Tree解决一些错配问题或通配符问题,但是使用范围很有限。对于inexact matching,一般使用Dynamic Programming处理。DP是老朋友了,时隔6年,好久不见。这里使用的DP比较简单,转移方程容易理解...原创 2018-05-08 13:34:17 · 1432 阅读 · 0 评论 -
动态规划常见类型总结
本文针对动态规划的常见类型进行总结。虽说总结的是动态规划,但顺便把递推也放了进来。严格来说,递推不属于动态规划问题,因为动态规划不仅有递推过程,还要有决策(即取最优),但广义的动态规划是可以包含递推的,递推是一类简单的、特殊的动态规划,毕竟动态规划与递推密不可分。动态规划类型主要分为纯粹动态规划问题和复合动态规划问题。几点说明:1、博主本人于2012年对信息学竞赛中的动态规划问题进行了总结...原创 2019-03-26 23:55:28 · 20433 阅读 · 3 评论