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

More Related Content

Similar to 최소 편집 거리와 동적 프로그래밍

[224] 번역 모델 기반_질의_교정_시스템
[224] 번역 모델 기반_질의_교정_시스템[224] 번역 모델 기반_질의_교정_시스템
[224] 번역 모델 기반_질의_교정_시스템NAVER D2
 
Adversarial Attack in Neural Machine Translation
Adversarial Attack in Neural Machine TranslationAdversarial Attack in Neural Machine Translation
Adversarial Attack in Neural Machine TranslationHyunKyu Jeon
 
R 프로그램의 이해와 활용 v1.1
R 프로그램의 이해와 활용 v1.1R 프로그램의 이해와 활용 v1.1
R 프로그램의 이해와 활용 v1.1happychallenge
 
Machine learning linearregression
Machine learning linearregressionMachine learning linearregression
Machine learning linearregressionHaYoungChoi17
 
이정근_project_로봇비전시스템.pdf
이정근_project_로봇비전시스템.pdf이정근_project_로봇비전시스템.pdf
이정근_project_로봇비전시스템.pdftangtang1026
 
활용예시를 통한 Sql server 2012의 향상된 프로그래밍 기능 엿보기
활용예시를 통한 Sql server 2012의 향상된 프로그래밍 기능 엿보기활용예시를 통한 Sql server 2012의 향상된 프로그래밍 기능 엿보기
활용예시를 통한 Sql server 2012의 향상된 프로그래밍 기능 엿보기cranbe95
 
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 4장. 모델 훈련
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 4장. 모델 훈련[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 4장. 모델 훈련
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 4장. 모델 훈련Haesun Park
 
내가 이해하는 SVM(왜, 어떻게를 중심으로)
내가 이해하는 SVM(왜, 어떻게를 중심으로)내가 이해하는 SVM(왜, 어떻게를 중심으로)
내가 이해하는 SVM(왜, 어떻게를 중심으로)SANG WON PARK
 
R 프로그래밍 기본 문법
R 프로그래밍 기본 문법R 프로그래밍 기본 문법
R 프로그래밍 기본 문법Terry Cho
 
2.supervised learning
2.supervised learning2.supervised learning
2.supervised learningHaesun Park
 
제7장 비불리언 모델
제7장 비불리언 모델제7장 비불리언 모델
제7장 비불리언 모델Chang-yong Jung
 
Transliteration English to Korean
Transliteration English to KoreanTransliteration English to Korean
Transliteration English to KoreanHyunwoo Kim
 
Support Vector Machine Tutorial 한국어
Support Vector Machine Tutorial 한국어Support Vector Machine Tutorial 한국어
Support Vector Machine Tutorial 한국어Jungkyu Lee
 
[신경망기초] 선형회귀분석
[신경망기초] 선형회귀분석[신경망기초] 선형회귀분석
[신경망기초] 선형회귀분석jaypi Ko
 

Similar to 최소 편집 거리와 동적 프로그래밍 (20)

강의자료 2
강의자료 2강의자료 2
강의자료 2
 
[224] 번역 모델 기반_질의_교정_시스템
[224] 번역 모델 기반_질의_교정_시스템[224] 번역 모델 기반_질의_교정_시스템
[224] 번역 모델 기반_질의_교정_시스템
 
3주차 스터디
3주차 스터디3주차 스터디
3주차 스터디
 
Adversarial Attack in Neural Machine Translation
Adversarial Attack in Neural Machine TranslationAdversarial Attack in Neural Machine Translation
Adversarial Attack in Neural Machine Translation
 
Ch11
Ch11Ch11
Ch11
 
R 프로그램의 이해와 활용 v1.1
R 프로그램의 이해와 활용 v1.1R 프로그램의 이해와 활용 v1.1
R 프로그램의 이해와 활용 v1.1
 
Machine learning linearregression
Machine learning linearregressionMachine learning linearregression
Machine learning linearregression
 
이정근_project_로봇비전시스템.pdf
이정근_project_로봇비전시스템.pdf이정근_project_로봇비전시스템.pdf
이정근_project_로봇비전시스템.pdf
 
06장 함수
06장 함수06장 함수
06장 함수
 
활용예시를 통한 Sql server 2012의 향상된 프로그래밍 기능 엿보기
활용예시를 통한 Sql server 2012의 향상된 프로그래밍 기능 엿보기활용예시를 통한 Sql server 2012의 향상된 프로그래밍 기능 엿보기
활용예시를 통한 Sql server 2012의 향상된 프로그래밍 기능 엿보기
 
함수적 사고 2장
함수적 사고 2장함수적 사고 2장
함수적 사고 2장
 
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 4장. 모델 훈련
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 4장. 모델 훈련[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 4장. 모델 훈련
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 4장. 모델 훈련
 
내가 이해하는 SVM(왜, 어떻게를 중심으로)
내가 이해하는 SVM(왜, 어떻게를 중심으로)내가 이해하는 SVM(왜, 어떻게를 중심으로)
내가 이해하는 SVM(왜, 어떻게를 중심으로)
 
R 프로그래밍 기본 문법
R 프로그래밍 기본 문법R 프로그래밍 기본 문법
R 프로그래밍 기본 문법
 
2.supervised learning
2.supervised learning2.supervised learning
2.supervised learning
 
문자함수(1)
문자함수(1)문자함수(1)
문자함수(1)
 
제7장 비불리언 모델
제7장 비불리언 모델제7장 비불리언 모델
제7장 비불리언 모델
 
Transliteration English to Korean
Transliteration English to KoreanTransliteration English to Korean
Transliteration English to Korean
 
Support Vector Machine Tutorial 한국어
Support Vector Machine Tutorial 한국어Support Vector Machine Tutorial 한국어
Support Vector Machine Tutorial 한국어
 
[신경망기초] 선형회귀분석
[신경망기초] 선형회귀분석[신경망기초] 선형회귀분석
[신경망기초] 선형회귀분석
 

More from EunGi Hong

철자 교정기
철자 교정기철자 교정기
철자 교정기EunGi Hong
 
라틴어로 보는 컴퓨터 과학
라틴어로 보는 컴퓨터 과학라틴어로 보는 컴퓨터 과학
라틴어로 보는 컴퓨터 과학EunGi Hong
 
Android App Bar
Android App BarAndroid App Bar
Android App BarEunGi Hong
 
검색엔진 오픈 소스 Lucene
검색엔진 오픈 소스 Lucene검색엔진 오픈 소스 Lucene
검색엔진 오픈 소스 LuceneEunGi Hong
 
Haskell and Function
Haskell and FunctionHaskell and Function
Haskell and FunctionEunGi Hong
 
Wordswordswords
WordswordswordsWordswordswords
WordswordswordsEunGi Hong
 
Haskell and List
Haskell and ListHaskell and List
Haskell and ListEunGi Hong
 
Introduction to Natural Language Processing
Introduction to Natural Language ProcessingIntroduction to Natural Language Processing
Introduction to Natural Language ProcessingEunGi Hong
 
Ah Counter App 마무리
Ah Counter App 마무리Ah Counter App 마무리
Ah Counter App 마무리EunGi Hong
 
안드로이드 개발하기 3rd week
안드로이드 개발하기 3rd week안드로이드 개발하기 3rd week
안드로이드 개발하기 3rd weekEunGi Hong
 
안드로이드 개발하기 2nd week
안드로이드 개발하기 2nd week안드로이드 개발하기 2nd week
안드로이드 개발하기 2nd weekEunGi Hong
 
안드로이드 개발하기_1st
안드로이드 개발하기_1st안드로이드 개발하기_1st
안드로이드 개발하기_1stEunGi Hong
 
Python learning for Natural Language Processing (2nd)
Python learning for Natural Language Processing (2nd)Python learning for Natural Language Processing (2nd)
Python learning for Natural Language Processing (2nd)EunGi Hong
 
Python Learning for Natural Language Processing
Python Learning for Natural Language ProcessingPython Learning for Natural Language Processing
Python Learning for Natural Language ProcessingEunGi Hong
 

More from EunGi Hong (16)

철자 교정기
철자 교정기철자 교정기
철자 교정기
 
라틴어로 보는 컴퓨터 과학
라틴어로 보는 컴퓨터 과학라틴어로 보는 컴퓨터 과학
라틴어로 보는 컴퓨터 과학
 
Android App Bar
Android App BarAndroid App Bar
Android App Bar
 
검색엔진 오픈 소스 Lucene
검색엔진 오픈 소스 Lucene검색엔진 오픈 소스 Lucene
검색엔진 오픈 소스 Lucene
 
Haskell and Function
Haskell and FunctionHaskell and Function
Haskell and Function
 
Wordswordswords
WordswordswordsWordswordswords
Wordswordswords
 
Haskell and List
Haskell and ListHaskell and List
Haskell and List
 
Introduction to Natural Language Processing
Introduction to Natural Language ProcessingIntroduction to Natural Language Processing
Introduction to Natural Language Processing
 
Automata
AutomataAutomata
Automata
 
Ah Counter App 마무리
Ah Counter App 마무리Ah Counter App 마무리
Ah Counter App 마무리
 
Linguistics
LinguisticsLinguistics
Linguistics
 
안드로이드 개발하기 3rd week
안드로이드 개발하기 3rd week안드로이드 개발하기 3rd week
안드로이드 개발하기 3rd week
 
안드로이드 개발하기 2nd week
안드로이드 개발하기 2nd week안드로이드 개발하기 2nd week
안드로이드 개발하기 2nd week
 
안드로이드 개발하기_1st
안드로이드 개발하기_1st안드로이드 개발하기_1st
안드로이드 개발하기_1st
 
Python learning for Natural Language Processing (2nd)
Python learning for Natural Language Processing (2nd)Python learning for Natural Language Processing (2nd)
Python learning for Natural Language Processing (2nd)
 
Python Learning for Natural Language Processing
Python Learning for Natural Language ProcessingPython Learning for Natural Language Processing
Python Learning for Natural Language Processing
 

최소 편집 거리와 동적 프로그래밍

  • 2.  편집 거리(edit distance)는 두 문자열의 차이를 측 정하기 위한 문자열 측정 단위(string metric).  최소 편집 거리(minimum edit distance), 또는 리벤슈타인 거리(Levenshtein distance)는 원천 문자열을 목표 문자열로 변환하기 위해 필요한 최소한 의 편집 연산(edit operation)의 횟수. 편집 거리란?
  • 3.  철자 교정기에서 철자 오류에 대한 교정 후보를 랭킹 하는 데 이용 (최소 편집 거리가 작을 수록 더 높은 순 위)  생물정보학에서 DNA 배열의 유사도를 측정하는 데 이용 편집 거리의 용례
  • 4. (1) Insertion(삽입) ex) “argument”(argment) (2) Deletion(삭제) ex) “acquire” (acquiire) (3) Substitution(치환) ex) “calendar” (calandar) 편집 연산의 종류
  • 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 참조 및 예문 출처