Di Wikipedia , implementasi untuk skema pemrograman dinamis bottom-up untuk jarak edit diberikan. Itu tidak mengikuti definisi sepenuhnya; sel-sel dalam dihitung sebagai berikut:
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
)
}
Seperti yang Anda lihat, algoritme selalu memilih nilai dari tetangga kiri atas jika ada kecocokan, menghemat beberapa akses memori, operasi ALU, dan perbandingan.
Namun, penghapusan (atau penyisipan) dapat menghasilkan nilai yang lebih kecil , sehingga algoritme tersebut salah secara lokal, yakni rusak dengan kriteria optimalitas. Tapi mungkin kesalahannya tidak mengubah hasil akhirnya - mungkin dibatalkan.
Apakah optimasi mikro ini valid, dan mengapa (tidak)?