On Vikipedi , düzenleme mesafe için aşağıdan yukarıya dinamik programlama şeması için bir uygulama verilmiştir. Tanımı tam olarak takip etmez; iç hücreler şu şekilde hesaplanır:
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
)
}
Gördüğünüz gibi , bir eşleşme varsa algoritma her zaman sol üstteki komşudan değeri seçer, bazı bellek erişimlerini, ALU işlemlerini ve karşılaştırmaları kaydeder.
Bununla birlikte, silme (veya ekleme) daha küçük bir değere neden olabilir , bu nedenle algoritma yerel olarak yanlıştır, yani optimallik kriteri ile kırılır. Ama belki de hata sonucu değiştirmez - iptal edilebilir.
Bu mikro optimizasyon geçerli mi ve neden (değil)?