2. 편집 거리(edit distance)는 두 문자열의 차이를 측
정하기 위한 문자열 측정 단위(string metric).
최소 편집 거리(minimum edit distance), 또는
리벤슈타인 거리(Levenshtein distance)는 원천
문자열을 목표 문자열로 변환하기 위해 필요한 최소한
의 편집 연산(edit operation)의 횟수.
편집 거리란?
3. 철자 교정기에서 철자 오류에 대한 교정 후보를 랭킹
하는 데 이용 (최소 편집 거리가 작을 수록 더 높은 순
위)
생물정보학에서 DNA 배열의 유사도를 측정하는 데
이용
편집 거리의 용례
5. Q. defualt를 default로 바꿀 수 있는 가능한 편집 연
산의 조합은?
1. u를 a로 치환, a를 u로 치환
2. u, a를 삭제, a, u를 삽입
3. u, a를 삭제, a를 삽입, a를 삭제, a를 삽입…
4. …
무한한 조합의 편집 연산이 존재
편집 연산의 조합
6. 상한점(upper bound) 설정하기
문자열 A를 문자열 B로 바꾼다고 할 때, 문자열 A의 모
든 문자를 삭제 후, 문자열 B의 모든 문자를 삽입할 수
있음. 따라서 필요한 편집 연산의 횟수는 length(A) +
length(B)
Insert -> insertion
Insert의 모든 문자를 삭제 후, insertion의 모든 문
자를 삽입 (6 + 8 = 14)
UPPER BOUND
7. 상한점(upper bound) 설정하기
문자열 A의 길이가 문자열 B의 길이보다 짧을 때, 문자
열 A의 각 문자를 동일한 인덱스를 갖는 문자열 B의 문
자로 치환 후, 문자열 B의 나머지 문자를 삽입. 따라서
필요한 편집 연산의 횟수는 length(B)
fine -> define
fine을 defi로 치환 후, 나머지 문자열 ne를 삽입 (4 +
2 = 6)
UPPER BOUND
8. Q. 설정한 상한점보다 더 적은 횟수의 편집 연산을 수행
하는 최소 편집 거리를 찾으려면?
1. 동적 프로그래밍(Dynamic programming)을 이
용
2. 동적 프로그래밍이란 알고리듬 패러다임의 한 종류
로서, 문제를 하위문제로 나눈 후, 하위문제를 푼 결
과를 표에 따로 저장. 나중에 동일한 하위문제에 대
한 해답이 필요한 경우, 또다시 그 문제를 풀지 않고,
저장해 놓은 결과를 이용.
동적 프로그래밍
9. 방향성 비순환 그래프(DAG, Directed Acyclic
Graph)를 이용
삽입, 삭제, 치환 연산에 대한 비용은 각각 1
최소 편집 거리
X를 삭제
Y를 삽입 Y를 X로 치환
10. 최소 편집 거리
H
L
A E F G
B I KJ
C M N O P
f
r
D Q R S T
f
y
y r e
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
1
1 1
1
1
0
0
오탈자 fyre를 fry로 변환하는 데 필요한 편집 거리 계산
11. Q. A에서 I로 가는 데 필요한 최소 편집 거리는?
A -> I (0)
B -> I (2)
E -> I (2)
A -> I가 가장 적은 비용을 소모하므로 I에 대한 최소
편집 거리 0을 표에 저장해 놓고, 나중에 I가 필요 시 표
를 열람!
최종적으로 A -> T에 대한 최소 편집 거리를 구할 수
있음
최소 편집 거리
12. Dickinson et al. 2013. Language and
Computers. Wiley-Blackwell.
https://en.wikipedia.org/wiki/Edit_distance
참조 및 예문 출처