Given 2 sequence
A and B
How many step needed to convert B to A? Suppose any insertion, deletion and replacing cost 1 step.
Solution:
Dynamic Programming
C[i, j] is the least effort to convert A[1]...A[i-1]A[i] to B[1]... B[j-1]B[j]
x = C[i-1, j] +1 //first convert A[i-1]A[i-2]... to B[j]B[j-1]... then delete A[i]
y = C[i, j-1] +1 //first convert A[i]A[i-1]... to B[j-1]B[j-2]..., then insert A[i+1]=B[j]
if ai == bj
z = C[i-1, j-1] //when ai == bi, first convert A[j-1]A[j-2]... to B[j-1]B[j-2]... then add A[j] and B[j]
else
z = C[i-1, j-1]+1 //when ai != bi, first convert A[j-1]A[j-2]... to B[j-1]B[j-2]... then replace A[j] with B[j]
C[i, j] = min(x,y,z) //the least effort is the min value of x, y and z.
Algorithm Minimum_Edit_Distance(A,n,B,m)
Input: A (a string of size n), and B (a string of size m)
Output: C (the cost matrix)
Begin
for i:=0to n do C[i,0]:=i;
for j:=1 to m do C[0,j]:=j;
for i:=1 to n do
for j:=1 to m do
x:=C[i-1,j]+1;
y:=C[i,j-1]+1;
if ai=bj then z:=C[i-1,j-1]
else z:=C[i-1,j-1]+1;
C[i,j]:=min(x,y,z);
end