我正在用Dafny编码edit distance递归方程。
我认为我已经对其进行了验证,但是我很好奇是否存在一种更简洁的方式来表示重复发生在三个编辑选择中的选择:
E(i,j) := min { 1 + E(i-1,j),1 + E(i,j-1),diff(i,j) + E(i-1,j-1) }
在达夫尼:
if 1 + recEdDist'(a,b,ai+1,bi) < 1 + recEdDist'(a,ai,bi+1)
&& 1 + recEdDist'(a,bi) < diff(a[ai],b[bi]) + recEdDist'(a,bi+1)
then 1 + recEdDist'(a,bi) else
if 1 + recEdDist'(a,bi+1) < 1 + recEdDist'(a,bi)
&& 1 + recEdDist'(a,bi+1) < diff(a[ai],bi+1) else
diff(a[ai],bi+1)
完整source here。