에 위키 백과 , 편집 거리 상향식 동적 프로그래밍 방식의 구현이 제공됩니다. 정의를 완전히 따르지 않습니다. 내부 셀은 다음과 같이 계산됩니다.
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 작업 및 비교를 저장합니다.
그러나, 삭제 (또는 삽입)는 더 작은 값을 초래할 수 있으며 , 따라서 알고리즘은 국부적으로 부정확하다. 즉, 최적의 기준에 위반된다. 그러나 실수로 인해 최종 결과가 변경되지 않을 수 있습니다. 취소 될 수 있습니다.
이 미세 최적화가 유효합니까? 왜 그렇지 않습니까?