1
用于编辑距离计算的微优化:有效吗?
在Wikipedia上,给出了自下而上的用于编辑距离的动态编程方案的实现。它没有完全遵循定义。内部单元的计算如下: if s[i] = t[j] then d[i, j] := d[i-1, j-1] // no operation required else d[i, j] := minimum ( d[i-1, j] + 1, // a deletion d[i, j-1] + 1, // an insertion d[i-1, j-1] + 1 // a substitution ) } 如您所见,如果存在匹配项,该算法始终从左上角的邻居中选择值,从而节省了一些内存访问,ALU操作和比较。 但是,删除(或插入)可能会导致较小的值,因此该算法在局部上是不正确的,即,它违反了最佳标准。但是也许错误不会改变最终结果-可能会消除它。 这种微优化有效吗?为什么不呢?