在处理我的Levenshtein距离实现时,我偶然发现了我的索引被交换的事实,如此伪代码所示(注意s1[j] == s2[i]
而不是s1[i] == s2[j]
)。
L(i, j) = min(L(i - 1, j) + 1,
L(i, j - 1) + 1,
L(i - 1, j - 1) + (s1[j] == s2[i] ? 0 : 1))
但是因为我的实现将矩阵计算为矩形子矩阵序列,所以它似乎根本不会影响计算,并且无论索引是否被交换,总是产生正确的结果。 (或者为了简单起见,只需将字符串视为具有相同的长度。)
现在我的问题是,我如何证明(不一定以正式的方式)索引顺序对于相等长度的字符串并不重要?似乎因为这是唯一的影响矩阵的地方,因为它最终是对称的,交换索引只会转移矩阵,但我不确定我是否错过了重要的东西。