常用算法总结
来源:互联网 发布:电力大数据应用 编辑:程序博客网 时间:2024/06/05 14:48
KMP算法
简介
kmp算法又称“看毛片”算法,是一个效率非常高的字符串匹配算法。
kmp算法完成的任务是:给定两个字符串O和f,长度分别为n和m,判断f是否在O中出现,如果出现则返回出现的位置。
kmp算法思想
在字符串O中寻找f,当匹配到位置i时两个字符串不相等,这时我们需要将字符串f向前移动。常规方法是每次向前移动一位,但是它没有考虑前i-1位已经比较过这个事实,所以效率不高。事实上,如果我们提前计算某些信息,就有可能一次前移多位。假设我们根据已经获得的信息知道可以前移k位,我们分析移位前后的f有什么特点。我们可以得到如下的结论:
A段字符串是f的一个前缀。
B段字符串是f的一个后缀。
A段字符串和B段字符串相等。
分治算法
简介
把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。
动态规划
简介
每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。
能采用动态规划求解的问题的一般要具有3个性质:
(1) 最优化原理:如果问题的最优解所包含的子问题的解也是最优的,就称该问题具有最优子结构,即满足最优化原理。
(2) 无后效性:即某阶段状态一旦确定,就不受这个状态以后决策的影响。也就是说,某状态以后的过程不会影响以前的状态,只与当前状态有关。
(3)有重叠子问题:即子问题之间是不独立的,一个子问题在下一阶段决策中可能被多次使用到。(该性质并不是动态规划适用的必要条件,但是如果没有这条性质,动态规划算法同其他算法相比就不具备优势)
f(n,m)=max{f(n-1,m), f(n-1,m-w[n])+P(n,m)}
4.
- 常用排序算法总结
- 常用排序算法总结
- 常用排序算法总结
- php常用算法总结
- 常用排序算法总结
- 常用排序算法总结
- 常用算法总结
- 常用排序算法总结
- 常用排序算法总结
- 常用排序算法总结
- 常用排序算法总结
- F5常用算法总结
- JAVA 常用算法总结
- 常用排序算法 总结
- 常用排序算法总结
- 常用调度算法总结
- 常用排序算法总结
- 常用排序算法总结
- 小菜学Chromium之OpenGL学习之二
- 使用SharedPreference存储数据
- Python与Qt
- 出现error:unknown filesystem grub rescue解决办法
- 第26章 MYSQL Administrator
- 常用算法总结
- 【二毛分享】爱站SEO教程分享
- MySQL ERROR2013完美解决方案
- iOS 数据持久化之使用NSUserDefaults存储数据
- 4.4 StoneWall
- 【主席树】 BZOJ 2653 middle
- markdown基本语法
- 栈帧
- 为ExpandableListView这个控件自定义箭头