쉽게배우는알고리즘 10장. 문자열매칭

Similar documents

Çмú´ëȸ¿Ï¼º

2012³â8¿ùÈ£˙ȸš

<FEFF E002D B E E FC816B CBDFC1B558B202E6559E830EB C28D9>

쿠폰형_상품소개서

第 1 節 組 織 11 第 1 章 檢 察 의 組 織 人 事 制 度 등 第 1 項 大 檢 察 廳 第 1 節 組 대검찰청은 대법원에 대응하여 수도인 서울에 위치 한다(검찰청법 제2조,제3조,대검찰청의 위치와 각급 검찰청의명칭및위치에관한규정 제2조). 대검찰청에 검찰총장,대

SW

1 SW

쉽게배우는알고리즘 8장. 동적프로그래밍 프로그래밍 Dynamic Programming (DP)

Microsoft PowerPoint 웹 연동 기술.pptx

쉽게배우는알고리즘 6장. 해시테이블 테이블 Hash Table


review hwp

chap 5: Trees

슬라이드 1

쉽게 배우는 알고리즘 강의노트

<5BBEE7BDC42D315DC0DBC7B0B0B3BFE42DC3BBC1D6BDC35FB8B6C1F6B8B7BFACB8F82E687770>

Microsoft PowerPoint - Chapter_08.pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

1아이패드(13~54)

LIDAR와 영상 Data Fusion에 의한 건물 자동추출

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

C++ Programming

슬라이드 1

슬라이드 1

Microsoft PowerPoint - chap10-함수의활용.pptx

ÃÖÁ¾-ÆíÁý

RVC Robot Vaccum Cleaner

2014시즌 수원삼성블루윙즈 겨울이적시장 결산 글 = 이 정 범 김 재 림 2014년 차가웠던 겨울 누구나 한번쯤은 들어봤을 노래. Let it go, let it go ~ (내버려둬~) 영화 겨울왕국 의 주인공 얼음공주 엘사는 수원과 비슷하게 고독한 모습을 보여준다.

PowerPoint 프레젠테이션

근대문화재분과 제4차 회의록(공개)

쉽게배우는알고리즘 6 장. 해시테이블 Hash Table IT COOKBOOK 6 장. 해시테이블 Hash Table 그에게서배운것이아니라이미내속에있었던것이그와공명을한것이다. - 제임스왓슨 한

= Fisher, I. (1930), ``The Theory of Interest,'' Macmillan ,

01장.자료구조와 알고리즘

04 Çмú_±â¼ú±â»ç

1. AWK 프로그래밍언어 AWK는자료처리중심의프로그래밍언어이며텍스트처리와보고서생성을목적으로만들어졌다. AWK라는명칭은이언어를처음설계한 Alfred V. Aho, Peter J. Weinberger, Brian W. Kernighan 3명의이름을따서지은것이다. AWK는

슬라이드 1

Microsoft PowerPoint - chap05-제어문.pptx

= Fisher, I. (1930), ``The Theory of Interest,'' Macmillan ,

Tcl의 문법

Microsoft PowerPoint - chap06-1Array.ppt

금오공대 컴퓨터공학전공 강의자료

PowerPoint Presentation

Microsoft PowerPoint - hw8.ppt [호환 모드]

Microsoft PowerPoint - ch07 - 포인터 pm0415

-09- 학습목표 기본정렬알고리즘을이해한다. 정렬을귀납적관점에서볼수있도록한다. 1 장과 2 장에서배운기법을사용해각정렬의수행시간을분석할수있도록한다. 비교정렬의한계를이해하고, 선형시간정렬이가능한조건과선형시간정렬알고리즘을이해한다. - - 한빛미디어 Sortng Algorth

슬라이드 1

Data Structure

Microsoft PowerPoint - chap04-연산자.pptx

자연언어처리


3장 어휘분석

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

02장.배열과 클래스

CS322 중간고사.docx

Microsoft PowerPoint - chap08-1 [호환 모드]

슬라이드 1

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C4C656D70656C2D5A69762E637070>

n 정의 정규표현 (Regular Expression) n 정규문법 G 를대수학적인성질로표현 n 정규언어에속해있는스트링의모양을직접기술 n 정규문법은문법이나타내는언어의형태를체계적으로구하여정규표현으로나타낼수있음. 정규문법 (Regular ) 정규표현 (Regular ) 유

설계란 무엇인가?

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

Microsoft PowerPoint - Regular Expresssions.ppt

10 강. 쉘스크립트 l 쉘스크립트 Ÿ 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 Ÿ 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 Ÿ 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다

Microsoft PowerPoint - DSD03_verilog3b.pptx

PowerPoint 프레젠테이션

4. 1 포인터와 1 차원배열 4. 2 포인터와 2 차원배열 4. 3 포인터배열 4. 4 포인터와문자그리고포인터와문자열

1.2 자료형 (data type) 프로그램에서다루는값의형태로변수나함수를정의할때주로사용하며, 컴퓨터는선언된 자료형만큼의메모리를확보하여프로그래머에게제공한다 정수 (integer) 1) int(4 bytes) 연산범위 : (-2 31 ) ~ (2 31 /2)-

sp확인서 I. 회사의 개요 1. 회사의 개요 가. 회사의 법적, 상업적 명칭 당사의 명칭은 "무림에스피 주식회사" 이고, 영문으로는 "MOORIM SP CO., LTD." 라 표기합니다. 약식은 "무림에스피(주)", 영문약자는 "M.S"라고 표기합니다. 나. 설립일자

PowerPoint Presentation

PowerPoint 프레젠테이션

Microsoft PowerPoint - 제5장-스택의응용.pptx

금오공대 컴퓨터공학전공 강의자료

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

윈도우즈프로그래밍(1)

제1장 군 제1절 소개와 예 제2절 이항연산 2.1 보기. 다음은 정수방정식 a + x = b를 푸는 과정이다. (1) 준식에 a를 더하여 ( a) + (a + x) = ( a) + b. (2) 결합법칙을 사용하면 (( a) + a) + x = ( a) + b. (3)

Microsoft PowerPoint - chap03-변수와데이터형.pptx

PowerPoint Presentation

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

11장 포인터


Computer Architecture

KNK_C_05_Pointers_Arrays_structures_summary_v02

제 9 도는 6제어항목의 세팅목표의 보기가 표시된 레이더 챠트(radar chart). 제 10 도는 제 6 도의 함수블럭(1C)에서 사용되는 각종 개성화 함수의 보기를 표시하는 테이블. 제 11a 도 제 11c 도까지는 각종 조건에 따라 제공되는 개성화함수의 변화의

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

.4 편파 편파 전파방향에수직인평면의주어진점에서시간의함수로 벡터의모양과궤적을나타냄. 편파상태 polriion s 타원편파 llipill polrid: 가장일반적인경우 의궤적은타원 원형편파 irulr polrid 선형편파 linr polrid k k 복소량 편파는 와 의

2_안드로이드UI

KOREAN-1_2169.xls

Algorithms

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

WISHBONE System-on-Chip Interconnection Architecture for Portable IP Cores

OCW_C언어 기초

A 001~A 036

Sequences with Low Correlation

11장 포인터

Microsoft PowerPoint - chap06-2pointer.ppt

Python과 함께 배우는 신호 해석 제 5 강. 복소수 연산 및 Python을 이용한 복소수 연산 (제 2 장. 복소수 기초)

OCW_C언어 기초

Transcription:

쉽게배우는알고리즘 1장. 문자열매칭 http://academy.hanb.co.kr

1장. 문자열매칭 전혀새로운아이디어를갑자기착상하는일이자주있다. 하지만그것을착상하기까지줄곧오랜동안문제를생각하고있다. 오랜동안생각한끝에갑자기답을착상하게되는것이다. - 라이너스폴링 - 2 - 한빛미디어

학습목표 원시적인매칭방법에깃든비효율성을감지할수있도록한다. 오토마타를이용한매칭방법을이해한다. 라빈 - 카프알고리즘의수치화과정을이해한다. KMP 알고리즘을이해하고, 오토마타를이용한방법과비교해이점을이해하도록한다. 보이어 - 무어알고리즘의개요를이해하고, 다른매칭알고리즘들에비해어떤특장점이있는지이해한다. - 3 - 한빛미디어

String Matching 입력 A[1n]: 텍스트문자열 P[1m]: 패턴문자열 m << n 수행작업 텍스트문자열 A[1n] 이패턴문자열 P[1m] 을포함하는지알아본다 - 4 - 한빛미디어

원시적인매칭 naivematching(a[ ], P[ ]) { n: 배열 A[ ] 의길이, m: 배열 P[ ] 의길이 for i 1 to n-m+1{ if (P[1m] = A[ii+m-1]) then A[i] 자리에서매칭이발견되었음을알린다 ; ü 수행시간 : O(mn) - 5 - 한빛미디어

원시적인매칭의작동원리 A[ ] b o b o y c a t s o a r o p t 1. P[ ] s o a r 2. s o a r 3. s o a r 12. s o a r - 6 - 한빛미디어

원시적인매칭이비효율적인예 불일치 A[ ]..... a b c d a b c d..... 1. a b c d a b c w z P[ ] 2. 3. 4. 5. a b c d a b c w z a b c d a b c w z a b c d a b c w z a b c d a b c w z - 7 - 한빛미디어

오토마타를이용한매칭 오토마타 문제해결절차를상태 state 의전이로나타낸것 구성요소 : (Q, q, A,, δ) Q : 상태집합 Q : 시작상태 A : 목표상태들의집합 : 입력알파벳 δ : 상태전이함수 매칭이진행된상태들간의관계를오토마타로표현한다 - 8 - 한빛미디어

ababaca 를체크하는오토마타 a a b a a a a b a c a 1 2 3 4 5 6 7 b b S: dvganbbactababaababacabababacaagbk - 9 - 한빛미디어

오토마타의 S/W 구현 입력문자 입력문자 상태 a b c d e z 상태 a b c 기타 1 1 1 1 2 1 1 2 2 3 2 3 3 1 4 3 1 4 4 5 4 5 5 1 4 6 5 1 4 6 6 7 6 7 7 1 2 7 1 2-1 - 한빛미디어

오토마타를이용해매칭을체크하는알고리즘 FA-Matcher (A, δ, f ) f : 목표상태 { n: 배열 A[ ] 의길이 q ; for i 1 to n { q δ(q, A[i]); if (q = f ) then A[i-m+1] 에서매칭이발생했음을알린다 ; ü 총수행시간 : Θ(n + m) - 11 - 한빛미디어

라빈 - 카프 Rabin-Karp 알고리즘 문자열패턴을수치로바꾸어문자열의비교를수치비교로대신한다 수치화 가능한문자집합 의크기에따라진수가결정된다 예 : = {a, b, c, d, e = 5 a, b, c, d, e 를각각, 1, 2, 3, 4 에대응시킨다 문자열 cad 를수치화하면 2*5 2 +*5 1 +3*5 = 28-12 - 한빛미디어

수치화작업의부담 A[ii+m-1] 에대응되는수치의계산 a i = A[i+m-1] + d(a[i+m-2] + d(a[i+m-3] + d( + d(a[i]))) Θ(m) 의시간이든다 그러므로 A[1n] 전체에대한비교는 Θ(mn) 이소요된다 원시적인매칭에비해나은게없다 다행히, m의크기에상관없이아래와같이계산할수있다 a i = d(a i-1 d m-1 A[i-1]) + A[i+m-1] d m-1 은반복사용되므로미리한번만계산해두면된다 곱셈 2회, 덧셈 2회로충분 - 13 - 한빛미디어

수치화를이용한매칭의예 P[ ] e e a a b p = 4*5 4 + 4*5 3 + *5 2 + *5 1 + 1 = 31 A[ ] a c e b b c e e a a b c e e d b a 1 =*5 4 +2*5 3 +4*5 2 +1*5 1 +1 = 356 a c e b b c e e a a b c e e d b a 2 = 5(a 1 -*5 4 )+2 = 1782 a c e b b c e e a a b c e e d b a 3 =5(a 2-2*5 4 )+4 = 2664 a c e b b c e e a a b c e e d b a 7 =5(a 6-2*5 4 )+1 = 31-14 - 한빛미디어

수치화를이용해매칭을체크하는알고리즘 basicrabinkarp(a, P, d, q) { n : 배열 A[ ] 의길이, m : 배열 P[ ] 의길이 p ; a 1 ; for i 1 to m { a 1 계산 p dp + P[i]; a 1 da 1 + A[i]; for i 1 to n-m+1{ if (i 1) then a i d(a i-1 d m-1 A[i-1]) + A[i+m-1]; if (p = a i ) then A[i] 자리에서매칭이되었음을알린다 ; ü 총수행시간 : Θ(n) - 15 - 한빛미디어

앞의알고리즘의문제점 문자집합 Σ 와 m 의크기에따라 a i 가매우커질수있다 심하면컴퓨터레지스터의용량초과 오버플로우발생 해결책 나머지연산modulo을사용하여 a i 의크기를제한한다 a i = d(a i-1 d m-1 A[i-1]) + A[i+m-1] 대신 b i = (d(b i-1 (d m-1 mod q)a[i-1]) + A[i+m-1]) mod q 사용 q를충분히큰소수로잡되, dq가레지스터에수용될수있도록잡는다 - 16 - 한빛미디어

나머지연산을이용한매칭의예 P[ ] e e a a b p = (4*5 4 + 4*5 3 + *5 2 + *5 1 + 1) mod 113 = 63 A[ ] a c e b b c e e a a b c e e d b a 1 = (*5 4 +2*5 3 +4*5 2 +1*5 1 +1) mod 113 = 17 a c e b b c e e a a b c e e d b a 2 = (5(a 1 -*(5 4 mod 113))+2) mod 113 = 87 a c e b b c e e a a b c e e d b a 3 = (5(a 2-2*(5 4 mod 113))+4) mod 113 = 65 a c e b b c e e a a b c e e d b a 7 = (5(a 6-2*(5 4 mod 113))+1) mod 113 = 63-17 - 한빛미디어

라빈 - 카프알고리즘 RabinKarp(A, P, d, q) { n : 배열 A[ ] 의길이, m : 배열 P[ ] 의길이 p ; b 1 ; for i 1 to m { p (dp + P[i]) mod q; b 1 (db 1 + A[i]) mod q; b 1 계산 h d m-1 mod q; for i 1 to n-m+1{ if (i 1) then b i (d(b i-1 ha[i-1]) + A[i+m-1]) mod q; if (p = b i ) then if (P[1m] = A[ii+m-1]) then A[i] 자리에서매칭이되었음을알린다 ; ü 평균수행시간 : Θ(n) - 18 - 한빛미디어

KMPKnuth-Morris-Pratt 알고리즘 오토마타를이용한매칭과동기가유사 공통점 매칭에실패했을때돌아갈상태를준비해둔다 오토마타를이용한매칭보다준비작업이단순하다 A[ ]..... a b c d a b c d..... P[ ] a b c d a b c w z a b c d a b c w z - 19 - 한빛미디어

매칭이실패했을때돌아갈곳준비작업 P[ ] 1 2 3 4 5 6 7 8 a b c d a b c w z 9 π [8] = 4 텍스트에서 abcdabc 까지는매치되고, w 에서실패한상황패턴의맨앞의 abc 와실패직전의 abc 는동일함을이용할수있다실패한텍스트문자와 P[4] 를비교한다 1 2 3 4 5 6 7 8 9 1 π [ ] 1 1 1 1 2 3 4 1 1 a b c d a b c w z 패턴의각위치에대해매칭에실패했을때돌아갈곳을준비해둔다 - 2 - 한빛미디어

KMP 알고리즘 KMP(A[ ], P[ ]) { preprocessing(p); i 1; 본문문자열포인터 j 1; 패턴문자열포인터 n: 배열 A[ ] 의길이, m: 배열 P[ ] 의길이 while (i n) { if (j = or A[i] = P[j]) then { i++; j++; else j π [j]; if (j = m+1) then { A[i-m] 에서매치되었음을알림 ; j π [j]; ü 수행시간 : Θ(n) - 21 - 한빛미디어

준비작업 preprocessing(p) { i 1; 본문문자열포인터 k 1; 패턴문자열포인터 while (j m) { if (k = or A[j] = P[k]) then { j++; k++; π [j] k; else k π [k]; if (j = m+1) then { A[i-m] 에서매치되었음을알림 ; j π [j]; ü 수행시간 : Θ(m) - 22 - 한빛미디어

보이어 - 무어 Boyer-Moore 알고리즘 앞의매칭알고리즘들의공통점 텍스트문자열의문자를적어도한번씩훑는다 따라서최선의경우에도 Ω(n) 보이어 - 무어알고리즘은텍스트문자를다보지않아도된다 발상의전환 : 패턴의오른쪽부터비교한다 - 23 - 한빛미디어

Motivation 상황 : 텍스트의 b 와패턴의 r 을비교하여실패했다 A[ ]........ b t i g e r.. P[ ] t i g e r 다섯칸한꺼번에점프! t i g e r ü 관찰 : 패턴에문자 b 가없으므로패턴이텍스트의 b 를통째로뛰어넘을수있다 - 24 - 한빛미디어

상황 : 텍스트의 i 와패턴의 r 을비교하여실패했다 A[ ]....... t i g e r.... P[ ] t i g e r 세칸한꺼번에점프! t i g e r ü 관찰 : 패턴에서 i 가 r 의 3 번째왼쪽에나타나므로패턴이 3 칸을통째로움직일수있다 - 25 - 한빛미디어

점프정보준비 패턴 tiger 에대한점프정보 오른쪽끝문자 t i g e r 기타 jump 4 3 2 1 5 5 패턴 rational 에대한점프정보 오른쪽끝문자 r a t i o n a l 기타 jump 7 6 5 4 3 2 1 8 8 오른쪽끝문자 r t i o n a l 기타 jump 7 5 4 3 2 1 8 8-26 - 한빛미디어

보이어 - 무어 - 호스풀알고리즘 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 > and P[j] = A[k]) { j--; k--; if (j = ) then A[i] 자리에서매칭이발견되었음을알린다 ; i i + jump[a[i + m 1]]; ü 최악의경우수행시간 : Θ(mn) ü 입력에따라다르지만일반적으로 Θ(n) 보다시간이덜든다 - 27 - 한빛미디어

불일치문자휴리스틱과일치접미부휴리스틱....... a i n e r...... 4 칸점프! c a l i n t i n 3 칸점프! c a l i n t i n c a l i n t i n 4 칸점프선택! 불일치문자휴리스틱 일치접미부휴리스틱....... a i n e r...... c a l i n t i n - 28 - 한빛미디어

....... a a l e r...... r a t i o n a l -1 칸점프! r a t i o n a l 7 칸점프! 불일치문자휴리스틱 일치접미부휴리스틱 r a t i o n a l 7 칸점프선택!....... a a l e r...... r a t i o n a l - 29 - 한빛미디어

Thank you - 3 - 한빛미디어