70 likes | 163 Views
S tring Matching Techniques. 필요성 색인(역화일, PAT 트리 등)되지 않은 텍스트에서의 검색 예: 검색기의 ‘ 출력 ’ 단계에서의 필터링 혹은 용어 검색 검색 소요 시간: 최악의 경우 O(n) 이 목표 임의의 (알파벳수= c) 에서 나온 두 문자가 같을 확률은 1/ c 이고, 각각 길이가 m 인 임의의 텍스트(문서)와 유형(검색용어)가 일치할 확률은, Prob[match] = 1/c m 이고
E N D
필요성 • 색인(역화일, PAT 트리 등)되지 않은 텍스트에서의 검색 • 예: 검색기의 ‘출력’단계에서의 필터링 혹은 용어 검색 • 검색 소요 시간: 최악의 경우 O(n)이 목표 • 임의의 (알파벳수=c)에서 나온 두 문자가 같을 확률은 1/c이고, 각각 길이가 m인 임의의 텍스트(문서)와 유형(검색용어)가 일치할 확률은, • Prob[match] = 1/cm이고 • 길이가 n인 임의의 텍스트에서 길이가 m인 임의의 유형(pattern)을 발견할 수 있는 횟수의 기대값은, • E[match] = (n - m + 1) / cm이다 • 최악의 알고리즘을 쓰면 비교횟수가 매우 큼 O(mn)
A.1 Knuth-Moriss-Pratt 알고리즘 • 이전의 비교(comparison)를 기억 • 패턴의 초기 순차(initial sequence or heads)를 기억 • 유한 상태 인식기(기계)(Finite State Recognizer) 활용 • FSR의 각 상태가 패턴의 head를 기억 • FSR의 state transition diagram 작성 순서 • spine: 패턴의 정확한 매치 • default bus: 매치되는 것이 없을 때의 이동 • initial bus: 텍스트의 문자가 패턴의 첫 글자일때의 이동 • link: 패턴의 head와 매치되는 부문자열(텍스트의)에 해당 • initial bus는 link의 특수한 경우 • 그림 A.1~3 • ex) t h r t h r o w : initial bus의 필요성(그림 A.3)
initial bus 작성시 주의사항 • 패턴 내에서 문자가 반복되는 경우 • ex) c a t c h : t에서 initial bus로는 연결 안함(그림 A.4) • link가 필요한 경우 • 패턴 catch의 경우, 텍스트 catch, catcocatch, catccatch에 대하여는 link가 필요 없으나 catcatch, catcacatch에 대하여는 link가 필요함(그림 A.5) • 추가 예) 패턴: c o c o a • (그림 A.6)
패턴의 중복(multiple occurence)과 중첩(overlapping) • 중복: 텍스트 내에서 패턴이 여러번 등장 • 중복을 허용하지 않으려면 final state에서 나가는 간선을 제거 • 중첩: 텍스트에 등장하는 패턴들의 구간이 겹치는 경우 • 패턴 aba, 텍스트 abababa: 중첩 허용시 3번 발견 • KMP 인식기의 최종 구성 • 텍스트의 모든 문자는 반드시 한번만 검사된다 • O(n)의 비교, O(m)의 인식기 구성 복잡도 • -> 최종 복잡도 = O(n+m) • failure links -> state trasition table