编辑距离问题——动态规划
问题描述:
编辑距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。
例如:
将EXPONENTIAL转成POLYNOMIAL,最少需要6次编辑操作。如下图:
分析:
根据算法概论的分析如图:对齐后最右侧的列只有下面三种情况:
第一种情况下,该列产生的代价为1,余下的则是使x[1…i-1]和y[1…f]更好地对齐的问题,这正对应于子问题E(i-1,j)。
第二种情况下,仍然产生代价1,剩下的是对应x[1…i]和y[1…j-1],恰好又是另一个子问题E(i,j-1).
最后一种情况,代价要么为1(如果x[i]不等于y[j])要么为0(如果x[i]等于y[j]),剩下的子问题为E(i-1,j-1).