本篇介绍Leventice distance以及它的变种,主要包括:
- Leventice distance及其复杂度
- 基于权重的编辑距离
- Needleman-Wunsch算法
- 改进的算法
- Smith-Waterman算法
- Smith-Waterman与 Needleman-Wunsch对比
- Leventice distance:
代价(cost):删除-1,插入-1,替换-2
- 如何确定编辑距离:
(1)初始状态,目标状态
(2)操作:删除、插入、替换
(3)操作路径的代价,即cost
公式:
- 复杂度:
时间:O(nm)
空间:O(nm)
回溯:O(n+m)
- 基于权重的编辑距离:
- Needleman-Wunsch算法:
- 改进的算法:
思想:改变初始和结束匹配的位置,如: -
- Smith-Waterman算法:
对上面改进算法的改进,找到最大子串,从中间开始。
改进的地方:
- Smith-Waterman 算法与 Needleman-Wunsch 算法存在着三个区别:
(1)在初始化阶段,第一行和第一列全填充为 0(而且第一行和第一列的指针均为空)。
(2)在填充表格时,如果某个得分为负,那么就用 0 代替,只对得分为正的单元格添加返回指针。
(3)在回溯的时候,从得分最高的单元格开始,回溯到得分为 0 的单元格为止。除此之外,回溯的方式与 Needleman-Wunsch 算法完全相同。
两者详细介绍参考:
http://blog.csdn.net/hugeheadhuge/article/details/6329558
总结:
- 编辑距离无论算法的核心在于3个操作:insert、delete和substitute
- Needleman-Wunsch算法的核心是全局序列比对,引入了d和s,使得编辑距离可能为负值
- Smith-Waterman算法的核心是局部序列比对,对于小于0的值会用0代替,只有大于0的值才有指针