1 / 14

알고리즘 CHAPTER 10.4~10.5 문자열 매칭

알고리즘 CHAPTER 10.4~10.5 문자열 매칭. 천주희 wngml1205@kunsan.ac.kr 군산대학교 통계컴퓨터과학과 정보과학기술 연구실 2012.11.15. 목차. KMP 알고리즘 보이어 - 무어 알고리즘. KMP 알고리즘 (1/4). 오토마타 매칭 : 문자열 차례로 훑음 어느 지점을 기준으로 매칭을 성공하지 못해도 그 지점을 기준으로 마지막 몇 개의 부분 문자열이 찾으려는 패턴 문자열의 앞부분과 일치한다면 그 정보 이용. A[ ]. 매칭 실패. P[ ].

sandro
Download Presentation

알고리즘 CHAPTER 10.4~10.5 문자열 매칭

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 알고리즘CHAPTER 10.4~10.5 문자열 매칭 천주희 wngml1205@kunsan.ac.kr • 군산대학교 통계컴퓨터과학과 정보과학기술 연구실 2012.11.15

  2. 목차 KMP 알고리즘 보이어-무어 알고리즘 IST (Information Sciences & Technology) Laboratory

  3. KMP 알고리즘 (1/4) 오토마타 매칭: 문자열 차례로 훑음 어느 지점을 기준으로 매칭을 성공하지 못해도 그 지점을 기준으로 마지막 몇 개의 부분 문자열이 찾으려는 패턴 문자열의 앞부분과 일치한다면 그 정보 이용 A[ ] 매칭 실패 P[ ] • Knuth-Morris-Pratt 알고리즘 • 패턴의 각 위치에 대해 매칭에 실패했을 때 돌아갈 곳을 알려주는 일차원 배열을 준비하고 이를 이용해 텍스트 문자열을 훓어 나감 IST (Information Sciences & Technology) Laboratory

  4. KMP 알고리즘 (2/4) 1 2 3 4 5 6 7 8 9 패턴의 맨 앞의 abc와 실패 직전의 abc는 동일함을 이용 → 실패한 텍스트 문자와 P[4]를 비교 P[ ] π[8] = 4 8 9 10 1 2 3 4 5 6 7 π[ ] → 매칭실패했을 때 돌아갈 곳을 준비 IST (Information Sciences & Technology) Laboratory KMP 알고리즘 예

  5. KMP 알고리즘 (3/4) KMP(A[ ], P[ ]) { preprocessing(P); i  ← 1;  ▷ 본문 문자열 포인터 j  ← 1;  ▷ 패턴 문자열 포인터 ▷ n: 배열 A[ ]의 길이, m: 배열 P[ ]의 길이 while (i ≤ n) {                                  if (j = 0 or A[i] = P[j]) then { i++; j++; }            elsej ← π[j]; if(j = m+1) then {                 A[i-m]에서 매치되었음을 알림; j ← π[j]; }  } } A[ ] 매칭 실패 P[ ] • 수행시간: Θ(n) i+(i-j) ≤ 2i i+(i-j) ≤ 2i≤ 2n KMP 알고리즘 IST (Information Sciences & Technology) Laboratory

  6. KMP 알고리즘 (4/4) preprocessing(P) { i  ← 1;  ▷ 본문 문자열 포인터 k  ← 0;▷ 패턴 문자열 포인터 • π[1] ←0; while (j ≤ m) {                                  if (k = 0 or A[j] = P[k]) • then { j++; k++; π[j] ←k;} elsek ← π[k]; }  } 8 9 10 1 2 3 4 5 6 7 π[ ] • 수행시간: Θ(m) KMP 알고리즘 IST (Information Sciences & Technology) Laboratory

  7. 보이어-무어 알고리즘 (1/7) • 개념 • 앞의 알고리즘 공통점 • 텍스트 문자열의 문자를 적어도 한번씩 확인 • 최선의 경우에도 Ω(n) • 보이어-무어 알고리즘 • 텍스트 문자를 다 보지 않아도 됨 • 맨 뒤부터 비교 IST (Information Sciences & Technology) Laboratory

  8. 보이어-무어 알고리즘 (2/7) A[ ] P[ ] 다섯 칸 점프! • 상황1 • 텍스트의 b와 패턴의 r을 비교하여 실패 IST (Information Sciences & Technology) Laboratory

  9. 보이어-무어 알고리즘 (3/7) A[ ] P[ ] 세 칸 점프! • 상황2 • 텍스트의 i와 패턴의 r을 비교하여 실패 IST (Information Sciences & Technology) Laboratory

  10. 보이어-무어 알고리즘 (4/7) 패턴 “tiger”에 대한 점프 정보 패턴 “rational”에 대한 점프 정보 • 보이어-무어-호스풀 알고리즘 점프 정보 IST (Information Sciences & Technology) Laboratory

  11. 보이어-무어 알고리즘 (5/7) BoyerMooreHorspool(A[ ], P[ ]) {   ▷ n : 배열 A[ ]의 길이, m : 배열 P[ ]의 길이 computeSkip(P, jump);                         i ← 1; while (i ≤ n − m+1) {                   j ← m; k ← i + m −1; while ( j > 0 and P[j] = A[k]) {        j--; k--;  } if (j = 0) then A[i] 자리에서 매칭이 발견되었음을 알림; i ←i + jump[A[i + m − 1]];                 } } • 최악의 경우 수행시간: Θ(mn) • 입력에 따라 다르지만 일반적으로 Θ(n)보다 시간이 덜 든다 • 보이어-무어-호스풀 알고리즘 IST (Information Sciences & Technology) Laboratory

  12. 보이어-무어 알고리즘 (6/7) 4칸 점프! 불일치 문자 휴리스틱 3칸 점프! 일치 접미부휴리스틱 • 예제1. 일치접미부 휴리스틱과 불일치문자 휴리스틱 중 좋은 것 선택 IST (Information Sciences & Technology) Laboratory

  13. 보이어-무어 알고리즘 (7/7) -1칸 점프! 7칸 점프! 불일치 문자 휴리스틱 일치 접미부휴리스틱 • 예제2. 일치접미부 휴리스틱과 불일치문자 휴리스틱 중 좋은 것 선택 IST (Information Sciences & Technology) Laboratory

  14. 감사합니다천주희wngml1205@kunsan.ac.kr IST (Information Sciences & Technology) Laboratory

More Related