这些天在了解chrome的courgette,  了解了rsync算法,  也了解了courgette使用了bsdiff 算法,  然后知道了bsdiff算法里主要使用的是 LCS 算法, 这里参考了july大牛的文章:

http://blog.csdn.net/v_july_v/article/details/6695482

自己做一点概括性的总结, 用以备忘,  也把自己学习中碰到的一些问题记录下来:

1、LCS 求最大子序列, 一个办法当然是穷举法了, 但是穷举法太耗时间了O(2^m*2^n), 基本没用.

2、聪明的程序员想到了,一个用矩阵来查找的算法,就是把两个队列用整形矩阵表示, 相同的为1, 不同的为0, 然后求最大对角线,优化是优化了很多, 不过求最大对角线也不省心。

3、聪明的程序员再次优化了算法,就是相同的不是用1表示, 而是数字叠加,这样再找最大对角线的时候,就比较舒服了,时间复杂度也降到了 O(mn)+O(m+n) 如下图:

在画上图的时候碰到了一些问题,自己总结成两条:

1、字符相同,则指向左上,并加1

2、字符不同,则指向左边或者上边较大的那个

LCS 最大公共序列算法相关推荐

  1. c语言最长公共子序列,算法设计与分析/动态规划——最长公共子序列LCS及模板...

    这位大佬写的对理解DP也很有帮助,我就直接摘抄过来了,代码部分来自我做过的题 一,问题描述 给定两个字符串,求解这两个字符串的最长公共子序列(Longest Common Sequence).比如字符 ...

  2. JavaScript实现shortestCommonSupersequence最短公共超序列算法(附完整源码)

    JavaScript实现shortestCommonSupersequence最短公共超序列算法(附完整源码) longestCommonSubsequence.js完整源代码 shortestCom ...

  3. 最长公共子串LCS (Longest Common Subsequence) 算法

    三个方法都有所借鉴,但代码部分是自己试着写出来的,虽然最后的运行结果都是正确的,但此过程中难免会有考虑不周全的地方,如发现代码某些地方有误,欢迎指正.同时有新的想法,也可以提出! 采用顺序结构存储串, ...

  4. 两个字符串的最长公共子序列长度_程序员编程算法,解决文本相似度问题的最长公共子序列算法!...

    在前面我讲解了如何通过最长公共子串来求解两个文本的相似度问题,但它有一定缺陷,举个例子,看下面的两个字符串 我爱吃小青菜和各种鲜水果. 我很爱吃青菜与各样水果. 上面两个字符串,如果通过计算子串来求相 ...

  5. 【学习笔记】山东大学生物信息学-05 高通量测序技术介绍 + 06 统计基础与序列算法(原理)

    课程地址:山东大学生物信息学 文章目录 五.高通量测序技术介绍(没有干货) 六.统计基础与序列算法(原理) 6.1 贝叶斯公式及其生物学应用 6.2 二元预测的灵敏度和特异度 6.3 基本序列算法 五 ...

  6. JavaScript实现longest Common Substring最长公共子串算法(附完整源码)

    JavaScript实现longest Common Substring最长公共子串算法(附完整源码) longestCommonSubstring.js完整源代码 longestCommonSubs ...

  7. JavaScript实现longestCommonSubsequence最长公共子序列算法(附完整源码)

    JavaScript实现longestCommonSubsequence最长公共子序列算法(附完整源码) longestCommonSubsequence.js完整源代码 longestCommonS ...

  8. C++lowest common ancestor最近公共祖先算法(附完整源码)

    C++lowest common ancestor最近公共祖先算法 C++lowest common ancestor最近公共祖先算法完整源码(定义,实现,main函数测试) C++lowest co ...

  9. POJ 3080 Blue Jeans (多个字符串的最长公共序列,暴力比较)

    题意:给出m个字符串,找出其中的最长公共子序列,如果相同长度的有多个,输出按字母排序中的第一个. 思路:数据小,因此枚举第一个字符串的所有子字符串s,再一个个比较,是否为其它字符串的字串.判断是否为字 ...

最新文章

  1. JavaWeb_响应和请求数据包
  2. 不了解这12个语法糖,别说你会Java!
  3. STM32外设驱动---SysTick精准延时
  4. 一文彻底搞懂快速幂(原理、实现、矩阵快速幂)
  5. unet论文_图像分割之RefineNet 论文笔记
  6. 如何在CRM WebClient UI里使用HANA Live Report
  7. 微服务~Eureka实现的服务注册与发现及服务之间的调用
  8. AI智能问答核心代码
  9. python123判断性别程序_听说听胎心能够预测宝宝性别?这是真的吗?
  10. 07: redis分布式锁解决超卖问题
  11. jmeter性能测试用户参数参数化
  12. JS设为首页、添加到收藏夹
  13. lingo数学软件完整教程
  14. java电子签名_java实现pdf文件电子签名
  15. 深度学习与神经网络之 反卷积/转置卷积 (deconvolution/transposed convolution/fractional strided convolution) (upsample)
  16. 机械师f117-7p安装linux禁用触摸板问题
  17. mysql版网络验证自动发卡功能
  18. aws api gateway 使用阿里云的域名访问
  19. python爬虫快速添加请求头、随机生成user-agent
  20. steam游戏打不开的可能性收集

热门文章

  1. sublime Text 3 javaScript代码自动提示插件安装步骤
  2. php eos,EOS区块链PHP开发包
  3. Java中的引用传递
  4. 基于SLAM的机器人导航避障方案
  5. 【C++之GDB调试】GDB调试从入门到精通
  6. MPPT电源控制器设计
  7. 团宝欠薪裁员续:合作商家停止接待团宝顾客
  8. 李宏毅机器学习Day03之误差
  9. 计算机的风扇参数,电脑静音高效有诀窍 选购对风扇不可少
  10. 制作html版圣诞礼物,10个圣诞礼物制作灵感 创意圣诞卡片手工制作