KR101662957B1 - 해싱기반의 순위다중패턴매칭 방법 - Google Patents

해싱기반의 순위다중패턴매칭 방법 Download PDF

Info

Publication number
KR101662957B1
KR101662957B1 KR1020150108101A KR20150108101A KR101662957B1 KR 101662957 B1 KR101662957 B1 KR 101662957B1 KR 1020150108101 A KR1020150108101 A KR 1020150108101A KR 20150108101 A KR20150108101 A KR 20150108101A KR 101662957 B1 KR101662957 B1 KR 101662957B1
Authority
KR
South Korea
Prior art keywords
quot
rti
pattern
length
remind
Prior art date
Application number
KR1020150108101A
Other languages
English (en)
Inventor
심정섭
강문성
조석현
Original Assignee
인하대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인하대학교 산학협력단 filed Critical 인하대학교 산학협력단
Priority to KR1020150108101A priority Critical patent/KR101662957B1/ko
Application granted granted Critical
Publication of KR101662957B1 publication Critical patent/KR101662957B1/ko

Links

Images

Classifications

    • G06K9/723
    • G06F17/30949

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명에서는 순위다중패턴매칭문제를 해결하는 해싱기반의 알고리즘을 제안한다. 순위패턴매칭은 두 문자열의 일치여부를 문자열 내의 각 문자들의 순위가 동일한 순서로 나타나는지를 기준으로 판단하는 문자열매칭방법이다. 순위패턴매칭은 주가지수분석과 음악의 유사성분석과 같이 값의 변화순서가 중요한 분야에 응용이 가능하다. 순위다중패턴매칭문제는 텍스트와 여러 개의 패턴들로 이루어진 패턴집합이 이루어졌을 때, 패턴집합내의 패턴과 각 문자들의 순위가 동일한 순서로 나타나는 텍스트의 모든 부분문자열을 찾는 문제이다.

Description

해싱기반의 순위다중패턴매칭 방법{A METHOD FOR ORDER-PRESERVING MULTIPLE PATTERN MATCHING BASED ON HASHING}
아래의 설명은 해싱기반의 순위다중패턴매칭 알고리즘에 관한 것이다.
패턴매칭문제(pattern matching problem)는 텍스트
Figure 112015074291766-pat00001
와 패턴
Figure 112015074291766-pat00002
가 주어질 때, P와 일치하는 T의 모든 부분문자열의 위치를 찾는 문제이다. 패턴매칭문제를 해결하는 알고리즘들로는
Figure 112015074291766-pat00003
시간에 수행되는 Knuth-Morris-Pratt 알고리즘과 평균수행시간이 빠른 Boyer-Moore 알고리즘이 잘 알려져 있다. 다중패턴매칭문제(multiple pattern matching problem)는
Figure 112015074291766-pat00004
개의 패턴으로 구성된 패턴집합
Figure 112015074291766-pat00005
와 T가 주어질 때, 패턴
Figure 112015074291766-pat00006
와 일치하는 T의 모든 부분문자열의 위치를 찾는 문제이다.
다중패턴매칭문제를 해결하는 알고리즘들로는 Aho-Corasick 알고리즘과 Wu-Manber 알고리즘이 잘 알려져 있다. Aho-Corasick 알고리즘은 모든
Figure 112015074291766-pat00007
의 길이를 더한 값을 M이라고 할 때,
Figure 112015074291766-pat00008
시간에 수행되며, Wu-Manber 알고리즘은 해싱(hashing)을 적용하여 평균수행시간을 개선한 알고리즘이다.
순위패턴매칭문제(order preserving pattern matching problem)는 크기 비교가 가능한 문자들로 구성된 T와 P가 주어질 때, P 내의 각 문자들의 순위(rank)와 동일한 순서로 나타나는 T의 모든 부분문자열의 위치를 찾는 문제이다. 도 1을 참고하면, 순위패턴매칭문제의 예를 나타낸 것으로,
Figure 112015074291766-pat00009
의 원소로 구성된 T와 P가 주어질 때, T의 부분문자열
Figure 112015074291766-pat00010
과 P는 첫 번째 문자가 각각 7과 10으로 문자열에서 가장 크고, 두 번째 문자는 각각 3과 4로 가장 작고, 세 번째 문자는 각각 5와 6으로 두 번째로 작다. 나머지 문자들도 순위의 순서가 동일하다.
순위패턴매칭문제는 주가지수분석, 음악의 유사성분석 등과 같은 분야에 응용 가능성이 밝혀져 있다. 종래의 기술에 따르면, 순위패턴매칭문제를
Figure 112015074291766-pat00011
시간에 해결하는 알고리즘이 제시되었고, 문자열이
Figure 112015074291766-pat00012
시간에 정렬되면
Figure 112015074291766-pat00013
시간에 순위패턴매칭문제를 해결할 수 있음을 보였으며, 또한, Horspool 알고리즘을 기반으로 하여 평균수행시간이 빠른 알고리즘이 제시되었다.
순위다중패턴매칭문제(order preserving multiple pattern matching problem)는
Figure 112015074291766-pat00014
개의 패턴으로 이루어진 패턴집합
Figure 112015074291766-pat00015
와 T가 주어졌을 때, 패턴
Figure 112015074291766-pat00016
내의 각 문자들의 순위와 동일한 순서로 나타나는 T의 모든 부분문자열의 위치를 찾는 문제이다. 순위다중패턴매칭문제를 해결하기 위한 알고리즘으로는 Aho-Corasick 기반의 알고리즘이 있다. Aho-Corasick 기반의 알고리즘은
Figure 112015074291766-pat00017
시간에 순위다중패턴매칭문제를 해결한다.
본 발명의 일 실시예들에 따르면, 순위다중패턴매칭문제를 해결하기 위한 해싱기반의 알고리즘을 제안한다.
일 실시예에 따르면, 해싱기반의 순위다중패턴매칭을 수행하는 방법은, 텍스트와 복수 개의 패턴들로 구성된 패턴집합이 주어짐에 따라 상기 패턴집합 내의 패턴과 각 문자들의 순위가 동일한 순서로 나타나는 텍스트의 모든 부분문자열을 탐색하기 위하여 이동테이블 및 해시테이블을 생성하고, 모든
Figure 112015074291766-pat00018
에 대해
Figure 112015074291766-pat00019
Figure 112015074291766-pat00020
를 계산하는 전처리단계; 및
Figure 112015074291766-pat00021
와 순위동형인 T의 모든 부분문자열의 위치를 탐색하는 검색단계를 포함할 수 있다.
일측에 따르면, 상기 전처리단계는, 상기 이동테이블에 존재하는 값들을
Figure 112015074291766-pat00022
로 초기화하는 단계; 상기
Figure 112015074291766-pat00023
에 대하여 위치
Figure 112015074291766-pat00024
에서 q-그램
Figure 112015074291766-pat00025
에 대한 핑거프린트함수를 계산하는 단계; 상기 에 대한 핑거프린트함수의 값이
Figure 112015074291766-pat00027
인 경우, 상기 이동테이블의
Figure 112015074291766-pat00028
번째 위치의 값을 참조하는 단계; 및 상기 이동테이블의
Figure 112015074291766-pat00029
번째 위치의 값이
Figure 112015074291766-pat00030
보다 크다면,
Figure 112015074291766-pat00031
로 갱신하고, 상기 이동테이블의
Figure 112015074291766-pat00032
번째 위치의 값이
Figure 112015074291766-pat00033
보다 작다면, 기존의 값을 유지하는 단계를 포함할 수 있다.
또 다른 일측에 따르면, 상기 전처리단계는, 상기 패턴집합내의 가장 오른쪽에서
Figure 112015074291766-pat00034
가 발생한 위치를 기준으로 계산된 이동거리를 이동테이블의
Figure 112015074291766-pat00035
번째 위치에 저장하는 단계를 포함할 수 있다.
또 다른 일측에 따르면, 상기 전처리단계는, 상기 해시테이블을 생성하기 위하여 상기
Figure 112015074291766-pat00036
의 길이가 q인 접미사
Figure 112015074291766-pat00037
에 대한 핑거프린트함수를 계산하는 단계; 및 상기
Figure 112015074291766-pat00038
에 대한 핑거프린트함수의 값이
Figure 112015074291766-pat00039
인 경우, 상기 해시테이블의
Figure 112015074291766-pat00040
번째 위치에 저장된 패턴들의 리스트에
Figure 112015074291766-pat00041
를 추가하는 단계를 포함할 수 있다.
또 다른 일측에 따르면, 상기 검색단계는, T의 검색위치를 j라 할 때, 상기 j가 m부터 시작하여 n에 도달할 때까지 진행되며, 상기 검색위치 j에서 q-그램
Figure 112015074291766-pat00042
에 대하여 핑거프린트함수를 계산하는 단계; 상기 핑거프린트함수의 값이
Figure 112015074291766-pat00043
라면, 상기 이동테이블의
Figure 112015074291766-pat00044
번째 값을 참조하여 이동거리 s를 도출하는 단계; 상기 s가 0임에 따라 순위동형이 발생 가능한 경우에 상기 해시테이블의
Figure 112015074291766-pat00045
번째 값에 포함된 모든
Figure 112015074291766-pat00046
에 대해 상기
Figure 112015074291766-pat00047
와 상기
Figure 112015074291766-pat00048
를 사용하여
Figure 112015074291766-pat00049
Figure 112015074291766-pat00050
의 순위동형 여부를 조사하고, 상기 검색위치 j를 오른쪽으로 1만큼 이동시키는 단계; 및 상기 s가 0이 아닌 경우에 상기 j를 오른쪽으로 s만큼 이동시키는 단계를 포함할 수 있다.
또 다른 일측에 따르면, 가장 긴 패턴의 길이를
Figure 112015074291766-pat00051
이라고 하고, 상기 이동테이블을 생성할 때, 상기
Figure 112015074291766-pat00052
의 위치
Figure 112015074291766-pat00053
에서
Figure 112015074291766-pat00054
에 대한 핑거프린트함수를 계산하므로
Figure 112015074291766-pat00055
시간이 소요되고, 상기 해시테이블을 생성할 때, 상기
Figure 112015074291766-pat00056
Figure 112015074291766-pat00057
에 대해 핑거프린트함수를 계산하므로
Figure 112015074291766-pat00058
시간이 소요되고, 패턴집합에 속한 모든 패턴
Figure 112015074291766-pat00059
에 대해
Figure 112015074291766-pat00060
Figure 112015074291766-pat00061
를 계산할 때
Figure 112015074291766-pat00062
시간이 소요되고, 상기 전처리단계를 계산하기 위한 시간은,
Figure 112015074291766-pat00063
시간에 계산되는 단계를 포함할 수 있다.
일 실시예에 따르면, 해싱기반의 순위다중패턴매칭을 수행하는 장치는, 텍스트와 복수 개의 패턴들로 구성된 패턴집합이 주어짐에 따라 상기 패턴집합 내의 패턴과 각 문자들의 순위가 동일한 순서로 나타나는 텍스트의 모든 부분문자열을 탐색하기 위하여 이동테이블 및 해시테이블을 생성하고, 모든
Figure 112015074291766-pat00064
에 대해
Figure 112015074291766-pat00065
Figure 112015074291766-pat00066
를 계산하는 전처리부; 및
Figure 112015074291766-pat00067
와 순위동형인 T의 모든 부분문자열의 위치를 탐색하는 검색부를 포함할 수 있다.
일 실시예에 따른 해싱기반의 순위다중패턴매칭 수행 장치는 순위다중패턴매칭 문제를 해결하기 위한 해싱기반의 알고리즘을 제공할 수 있고, 종래에 제시되었던 알고리즘에 비하여 길이가 긴 패턴에 대하여 검색단계를 더욱 빠르게 수행할 수 있다.
도 1은 순위패턴매칭문제의 예를 나타낸 도면이다.
도 2 및 도 3은 본 발명의 일 실시예에서 개시되는 용어를 설명하기 위한 도면이다.
도 4는 Horspool 알고리즘의 오문자규칙 및 순위패턴매칭문제에 적용된 오문자 규칙을 설명하기 위한 도면이다.
도 5는 Wu-Manber 알고리즘에서 이동테이블과 해시테이블을 설명하기 위한 도면이다.
도 6은 해싱기반의 알고리즘에서 이동테이블과 해시테이블을 설명하기 위한 도면이다.
도 7은 일 실시예에 따른 해싱기반의 순위다중패턴매칭 수행 장치에서 패턴개수의 변화에 따른 알고리즘의 수행시간을 나타낸 도면이다.
도 8은 일 실시예에 따른 해싱기반의 순위다중패턴매칭 수행 장치에서 패턴길이의 변화에 따른 알고리즘의 수행시간을 나타낸 도면이다.
도 9는 일 실시예에 따른 해싱기반의 순위다중패턴매칭 수행 장치의 구성을 설명하기 위한 블록도이다.
도 10은 일 실시예에 따른 해싱기반의 순위다중패턴매칭 수행 장치의 해싱기반의 순위다중패턴매칭 수행 방법을 설명하기 위한 흐름도이다.
이하, 실시예를 첨부한 도면을 참조하여 상세히 설명한다.
도 2 및 도 3을 참고하면, 본 발명에서 크기 비교가 가능한 문자들로 구성된 문자집합
Figure 112015074291766-pat00068
에 대해,
Figure 112015074291766-pat00069
의 원소로 구성된 문자열집합을
Figure 112015074291766-pat00070
로 표기한다. 또한,
Figure 112015074291766-pat00071
의 원소로 구성된 길이 m인 문자열집합은
Figure 112015074291766-pat00072
으로 표기한다. 문자열
Figure 112015074291766-pat00073
의 길이를
Figure 112015074291766-pat00074
로,
Figure 112015074291766-pat00075
Figure 112015074291766-pat00076
번째 문자는
Figure 112015074291766-pat00077
로 표기한다.
Figure 112015074291766-pat00078
Figure 112015074291766-pat00079
번째부터
Figure 112015074291766-pat00080
번째까지의 부분문자열은
Figure 112015074291766-pat00081
로 표기한다.
Figure 112015074291766-pat00082
의 각
Figure 112015074291766-pat00083
의 순위를 저장한 서열을
Figure 112015074291766-pat00084
라 하고 순위별 위치를 저장한 서열을
Figure 112015074291766-pat00085
라 하자. 예를 들어,
Figure 112015074291766-pat00086
이 주어졌을 때,
Figure 112015074291766-pat00087
이며,
Figure 112015074291766-pat00088
이다.
Figure 112015074291766-pat00089
Figure 112015074291766-pat00090
를 이용해
Figure 112015074291766-pat00091
시간에 구할 수 있으며,
Figure 112015074291766-pat00092
Figure 112015074291766-pat00093
를 정렬하여
Figure 112015074291766-pat00094
시간에 구할 수 있다.
두 문자열
Figure 112015074291766-pat00095
가 주어지고, 모든
Figure 112015074291766-pat00096
에 대해
Figure 112015074291766-pat00097
를 만족하면,
Figure 112015074291766-pat00098
Figure 112015074291766-pat00099
는 서로 순위동형(order-isomorphic)이라 하고
Figure 112015074291766-pat00100
로 표기한다.
Figure 112015074291766-pat00101
가 주어졌을 때,
Figure 112015074291766-pat00102
Figure 112015074291766-pat00103
가 순위동형인지 판단하기 위한 방법은 다음과 같다.
Figure 112015074291766-pat00104
인 경우
Figure 112015074291766-pat00105
이 되고, 반대의 경우
Figure 112015074291766-pat00106
이 되는 이진벡터를
Figure 112015074291766-pat00107
라 하자. 모든
Figure 112015074291766-pat00108
에 대해
Figure 112015074291766-pat00109
이면
Figure 112015074291766-pat00110
를 만족하고,
Figure 112015074291766-pat00111
이면
Figure 112015074291766-pat00112
를 만족할 때
Figure 112015074291766-pat00113
이 성립된다. 위 과정은
Figure 112015074291766-pat00114
Figure 112015074291766-pat00115
가 주어질 때
Figure 112015074291766-pat00116
시간에 수행된다.
Horspool 알고리즘의 오문자규칙은 일치여부를 조사할 필요가 없는 구간을 건너뛰기 위하여 사용하는 이동규칙이다. Horspool 알고리즘에서 오문자규칙이 적용되는 과정은 다음과 같다.
Figure 112015074291766-pat00117
와 P의 일치여부를 비교하는 경우
Figure 112015074291766-pat00118
Figure 112015074291766-pat00119
부터 역방향으로 일치여부를 검사한다. 오문자 규칙은
Figure 112015074291766-pat00120
Figure 112015074291766-pat00121
이 불일치일 때 적용되며, 이때의 이동거리는
Figure 112015074291766-pat00122
와 일치하는 P의 문자들 중 가장 오른쪽에 위치한 문자를
Figure 112015074291766-pat00123
의 위치로 이동시키는 거리이다. 도 4(a)의 예를 보면,
Figure 112015074291766-pat00124
Figure 112015074291766-pat00125
가 불일치하여 오문자규칙이 적용되고, 이때의 이동거리는
Figure 112015074291766-pat00126
Figure 112015074291766-pat00127
의 위치로 이동시킬 때의 거리 2가 된다.
순위패턴매칭문제를 위한 오문자규칙을 제시한 문헌에서는 q 길이의 문자열을 하나의 단위로 취급하는 q-그램의 순위정보를 이용하여 하나의 숫자로 대응시키는 핑거프린트함수를 사용하였다. q-그램
Figure 112015074291766-pat00128
에 대한 핑거프린트함수
Figure 112015074291766-pat00129
는 다음과 같이 정의된다.
Figure 112015074291766-pat00130
여기서
Figure 112015074291766-pat00131
는 문자열
Figure 112015074291766-pat00132
를 접두사표현법(prefix representation)으로 나타낸 서열이며,
Figure 112015074291766-pat00133
로 정의된다. 순위동형인 두 문자열은 접두사표현법에 의한 서열이 동일하다.
Figure 112015074291766-pat00134
는 총 q!가지의
Figure 112015074291766-pat00135
서열이 발생할 수 있고,
Figure 112015074291766-pat00136
는 핑거프린트함수를 통해
Figure 112015074291766-pat00137
범위의 숫자로 변환된다.
Figure 112015074291766-pat00138
의 핑거프린트함수는 순위통계트리(order-statistic tree)를 사용하면
Figure 112015074291766-pat00139
시간에 계산할 수 있다. 도 4(b)에서 오문자규칙에 의한 이동거리는 2이다. 그 이유는 q-그램
Figure 112015074291766-pat00140
과 핑거프린트함수 값이 동일한 P의 q-그램인
Figure 112015074291766-pat00141
Figure 112015074291766-pat00142
중에서 가장 오른쪽에 위치한 q-그램인
Figure 112015074291766-pat00143
Figure 112015074291766-pat00144
의 위치로 이동시킬 때의 거리가 2이기 때문이다.
Wu-Manber 알고리즘은 해싱과 오문자규칙을 사용하여 다중패턴매칭문제를 해결하는 알고리즘이다. Wu-Manber 알고리즘은 전처리단계와 검색단계로 구성된다. 전처리단계에서는 이동테이블(shift table)과 해시테이블(hash table), 그리고 접두사 테이블(prefix table)을 생성한다. 이때
Figure 112015074291766-pat00145
의 패턴들 중 가장 짧은 패턴의 길이가 m인 경우, 각 패턴에서 길이 m인 접두사들만 고려한다. 검색 단계에서는 전처리 단계에서 생성한 테이블들을 사용하여
Figure 112015074291766-pat00146
가 T의 부분문자열과 일치하는 위치를 찾는다.
전처리단계에서 생성하는 테이블들에 대한 설명은 다음과 같다. 이동테이블은 오문자규칙에 의한 이동거리를 미리 계산하여 저장한 테이블이다. Wu-Manber 알고리즘은 q-그램
Figure 112015074291766-pat00147
Figure 112015074291766-pat00148
사이의 숫자로 변환하는 함수
Figure 112015074291766-pat00149
의 값을 이동테이블의 인덱스(index)로 사용한다. 이동테이블의 크기는
Figure 112015074291766-pat00150
이며, 각 인덱스에 해당하는 q-그램이 패턴집합의 가장 오른쪽에서 발생한 위치를 기준으로 이동거리를 계산하여 저장한다. 패턴집합에서 나타나지 않는 q-그램에 대해서는
Figure 112015074291766-pat00151
을 저장한다. 도 5에서 생성된 이동테이블의 예를 보면, 2-그램 "AA"의 경우 패턴집합의 가장 오른쪽에서 발생한 위치는
Figure 112015074291766-pat00152
의 부분문자열
Figure 112015074291766-pat00153
이고, 이때의 오문자규칙에 의한 이동거리는 2가 되므로 이동테이블의 "AA"에 대응되는 위치에는 2가 저장된다.
해시테이블은 이동테이블과 마찬가지로 크기가
Figure 112015074291766-pat00154
이며,
Figure 112015074291766-pat00155
의 값을 인덱스로 사용한다. 해시테이블의
Figure 112015074291766-pat00156
번째 위치에는
Figure 112015074291766-pat00157
에 속한 패턴들의 리스트를 저장한다. q-그램
Figure 112015074291766-pat00158
Figure 112015074291766-pat00159
값으로 해시테이블을 참조하면, 접미사가
Figure 112015074291766-pat00160
와 동일한 패턴들을 구할 수 있다. 도 5의 예에서 2-그램 "TA"의 경우 "TA"를 접미사로 갖는 패턴은
Figure 112015074291766-pat00161
Figure 112015074291766-pat00162
이므로 해시테이블의 2-그램 "TA"에 해당하는 위치에는
Figure 112015074291766-pat00163
이 저장된다. 접두사테이블은 해시테이블과 유사한 방식으로 패턴들의 접두사에 대한 테이블을 생성한다.
검색단계의 과정은 다음과 같다. 검색위치
Figure 112015074291766-pat00164
는 m부터 시작하여 n에 도달할 때까지 진행된다. 검색위치
Figure 112015074291766-pat00165
에서는
Figure 112015074291766-pat00166
의 값을 인덱스로 하여 이동테이블을 참조한 뒤 검색위치를 이동시킨다. 이동거리가 0이 되어
Figure 112015074291766-pat00167
에 속한 패턴이 존재하는 경우에는 해시테이블과 접두사테이블을 참조하여 일치여부를 조사할 후보패턴들에 대한 리스트를 얻는다. 이후 리스트에 포함된 패턴과 텍스트의 부분문자열 사이에서 같은 위치의 문자들을 모두 비교하는 방식으로 일치여부를 검증한다.
Wu-Manber 알고리즘은 가장 짧은
Figure 112015074291766-pat00168
의 길이를 m이라 할 때, 전처리단계는
Figure 112015074291766-pat00169
시간에 수행되고, 검색단계는 평균적으로
Figure 112015074291766-pat00170
시간에 수행된다.
Figure 112015074291766-pat00171
도 6은 해싱기반의 알고리즘에서 이동테이블과 해시테이블을 설명하기 위한 도면이다.
해싱기반의 알고리즘에서 P={(4,5,1,2,3), (1,6,3,4,2,5), (8,2,5,5,1)}, q=3에 대한 이동테이블과 해시테이블을 나타낸 것이다.
도 9는 일 실시예에 따른 해싱기반의 순위다중패턴매칭 수행 장치의 구성을 설명하기 위한 블록도이다.
해싱기반의 순위다중패턴매칭 수행 장치(900)는 전처리부(910) 및 검색부(920)로 구성될 수 있다. 전처리부(910)는 이동테이블, 해시테이블을 생성하며, 모든
Figure 112015074291766-pat00172
에 대해
Figure 112015074291766-pat00173
Figure 112015074291766-pat00174
를 계산하는 전처리단계를 수행할 수 있다. 검색부(920)는
Figure 112015074291766-pat00175
와 순위동형인 T의 모든 부분문자열의 위치를 찾는 검색단계를 수행할 수 있다. 전처리단계에서의 이동테이블과 해시테이블을 생성할 때는 Wu-Manber 알고리즘과 같은 방식으로
Figure 112015074291766-pat00176
내의 패턴들 중 가장 짧은 패턴의 길이가 m인 경우, 각 패턴에서 처음 m길이의 접두사만 고려한다.
단계(1011) 내지 단계(1021)는 전처리부(910) 및 검색부(920)에 의하여 수행될 수 있다. 이동테이블과 해시테이블을 생성하는 방법은 다음과 같다. 먼저 이동테이블에 있는 모든 값들을
Figure 112015074291766-pat00177
로 초기화한다. 이후 각
Figure 112015074291766-pat00178
에 대해 위치
Figure 112015074291766-pat00179
에서 q-그램
Figure 112015074291766-pat00180
에 대한 핑거프린트함수를 계산한다.
Figure 112015074291766-pat00181
에 대한 핑거프린트함수의 값이
Figure 112015074291766-pat00182
인 경우, 이동테이블의
Figure 112015074291766-pat00183
번째 위치의 값을 참조한다. 이 값이
Figure 112015074291766-pat00184
보다 크다면
Figure 112015074291766-pat00185
로 갱신되고, 이 값이
Figure 112015074291766-pat00186
보다 작다면 기존의 값이 유지된다. 다시 말해서, 패턴집합내의 가장 오른쪽에서
Figure 112015074291766-pat00187
가 발생한 위치를 기준으로 계산된 이동거리를 이동테이블의
Figure 112015074291766-pat00188
번째 위치에 저장한다. 해시테이블을 생성하기 위해서 먼저 각
Figure 112015074291766-pat00189
의 길이가 q인 접미사
Figure 112015074291766-pat00190
에 대한 핑거프린트함수를 계산한다.
Figure 112015074291766-pat00191
에 대한 핑거프린트함수의 값이
Figure 112015074291766-pat00192
인 경우, 해시테이블의
Figure 112015074291766-pat00193
번째 위치에 저장된 패턴들의 리스트에
Figure 112015074291766-pat00194
를 추가한다.
검색단계는 다음과 같이 진행된다. T의 검색위치를 j라 할 때, j는 m부터 시작하여 n에 도달할 때까지 진행된다. 검색위치 j에서는 q-그램
Figure 112015074291766-pat00195
에 대하여 핑거프린트함수를 계산한다. 이때의 값이
Figure 112015074291766-pat00196
라면, 이동테이블의
Figure 112015074291766-pat00197
번째의 값을 참조하여 s를 구한다. s가 0인 경우, 다시 말해서, 순위동형이 발생 가능한 경우에는 해시테이블의
Figure 112015074291766-pat00198
번째 값에 포함된 모든
Figure 112015074291766-pat00199
에 대해
Figure 112015074291766-pat00200
Figure 112015074291766-pat00201
를 사용하여
Figure 112015074291766-pat00202
Figure 112015074291766-pat00203
의 순위동형 여부를 조사한다. 그리고 검색위치 j를 오른쪽으로 1만큼 이동시킨다. s가 0이 아닌 경우는 j를 오른쪽으로 s만큼 이동시킨다. 검색단계에 대한 의사코드(pseudo code)는 알고리즘 1에서 표현하고 있다.
해싱기반의 순위다중패턴매칭 알고리즘의 전처리단계를 계산하기 위한 시간은 다음과 같다. 가장 긴 패턴의 길이를
Figure 112015074291766-pat00204
이라 하자. 이동테이블을 생성할 때는 각
Figure 112015074291766-pat00205
의 위치
Figure 112015074291766-pat00206
에서
Figure 112015074291766-pat00207
에 대한 핑거프린트함수를 계산하므로
Figure 112015074291766-pat00208
시간이 필요하다. 해시테이블을 생성할 때는 각
Figure 112015074291766-pat00209
Figure 112015074291766-pat00210
에 대해 핑거프린트함수를 계산하므로
Figure 112015074291766-pat00211
시간이 필요하다. 그리고 패턴집합에 속한 모든 패턴
Figure 112015074291766-pat00212
에 대해
Figure 112015074291766-pat00213
Figure 112015074291766-pat00214
를 계산할 때
Figure 112015074291766-pat00215
시간이 필요하다. 따라서 전처리 단계는 총
Figure 112015074291766-pat00216
시간에 계산된다.
Figure 112015074291766-pat00217
Figure 112015074291766-pat00218
Figure 112015074291766-pat00219
Aho-Corasick 기반의 알고리즘과 해싱기반의 순위다중패턴매칭 수행 장치에서 수행되는 해싱기반의 알고리즘을 q의 길이를 각각 7, 8, 9로 변환시키며 수행할 수 있다. 실험환경은 예를 들면, 표 1과 같다. 도 7을 참고하면, 텍스트의 길이가 10,000,000이고, 패턴의 길이가 20~30인 조건에서 패턴의 개수가 100~1,000개인 구간에서 패턴의 개수를 100개씩 증가시킴에 따라 각 알고리즘의 전처리단계의 수행시간과 검색단계의 수행시간을 보여준다. 같은 조건에서 표 2는 각 알고리즘의 전처리단계의 수행시간을 보여주고, 표 3은 각 알고리즘의 검색단계의 수행시간을 보여준다.
검색단계에서 패턴개수가 100개일 때는 해싱기반의 알고리즘이 q의 길이가 7일 때, 가장 빨랐으며, Aho-Corasick 기반의 알고리즘보다 3.6배 빠름을 알 수 있다. 패턴개수가 200~1,000개인 경우, 해싱기반의 알고리즘이 q의 길이가 8일 때 가장 빨랐으며, Aho-Corasick 기반의 알고리즘보다 3.2~3.38배 빠름을 알 수 있다. 전처리단계에서는 해싱기반의 알고리즘이 Aho-Corasick 기반의 알고리즘보다 1.6~8.7배 빠름을 알 수 있다.
Figure 112015074291766-pat00220
Figure 112015074291766-pat00221
도 8을 참고하면, 패턴개수가 1,000개이고, 패턴집합의 가장 짧은 패턴의 길이를 10씩 증가시키며 가장 짧은 패턴의 길이가 10~90인 구간에서 각 알고리즘의 전처리단계의 수행시간과 검색단계의 수행시간을 보여준다. 같은 조건에서 표 4는 각 알고리즘의 전처리단계의 수행시간을 보여주고, 표 5는 각 알고리즘의 검색단계의 수행시간을 보여준다. 전처리단계의 수행시간은 해싱기반의 알고리즘이 Aho-Corasick 기반의 알고리즘보다 4.7~11배 빠름을 알 수 있다. 검색단계에서는 패턴의 길이가 10일 때는 Aho-Corasick 기반의 알고리즘이 가장 빨랐지만, 패턴의 길이가 20이상일 때는 해싱기반의 알고리즘이 모든 q에 대해 Aho-Corasick 기반의 알고리즘보다 1.4~1.7배 빠름을 알 수 있다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (7)

  1. 해싱기반의 순위다중패턴매칭을 수행하는 방법에 있어서,
    텍스트(T)와 k(k는 자연수) 개의 패턴(
    Figure 112016063794729-pat00282
    )들로 구성된 패턴집합(
    Figure 112016063794729-pat00283
    )이 주어짐에 따라 상기 패턴집합 내의 패턴과 각 문자들의 순위가 동일한 순서로 나타나는 텍스트의 모든 부분문자열을 탐색하기 위하여
    이동테이블 및 해시테이블을 생성하고, 모든
    Figure 112016063794729-pat00222
    에 대해
    Figure 112016063794729-pat00223
    Figure 112016063794729-pat00224
    를 계산하는 전처리단계; 및
    상기 패턴
    Figure 112016063794729-pat00225
    와 순위동형인 T의 모든 부분문자열의 위치를 탐색하는 검색단계
    를 포함하고,
    상기
    Figure 112016063794729-pat00284
    는, 상기
    Figure 112016063794729-pat00285
    가 상기 패턴집합
    Figure 112016063794729-pat00286
    에 속한 문자열이고, 길이가
    Figure 112016063794729-pat00287
    라고 할 때,
    Figure 112016063794729-pat00288
    를 만족하는 정수 j, k에 대해
    Figure 112016063794729-pat00289
    를 만족하는 배열을 의미하고,
    상기
    Figure 112016063794729-pat00290
    는, 문자열
    Figure 112016063794729-pat00291
    에서 문자
    Figure 112016063794729-pat00292
    의 순위가 k라는 것을 의미하고,
    Figure 112016063794729-pat00293
    는 상기 문자열
    Figure 112016063794729-pat00294
    에서 k번째 순위의 문자가
    Figure 112016063794729-pat00295
    라는 것을 의미하고,
    상기
    Figure 112016063794729-pat00296
    는, 상기
    Figure 112016063794729-pat00297
    가 상기 패턴집합
    Figure 112016063794729-pat00298
    에 속하고, 상기 길이가
    Figure 112016063794729-pat00299
    이라 할 때,
    Figure 112016063794729-pat00300
    를 만족하는 정수 j에 대해
    Figure 112016063794729-pat00301
    는 상기
    Figure 112016063794729-pat00302
    에서 상기
    Figure 112016063794729-pat00303
    보다 크기가 작은 문자의 개수와
    Figure 112016063794729-pat00304
    에서 상기
    Figure 112016063794729-pat00305
    와 크기가 같은 문자의 개수를 합한 값이며, 상기
    Figure 112016063794729-pat00306
    를 상기
    Figure 112016063794729-pat00307
    범위에서 계산하여 저장한 배열을 의미하고,
    상기
    Figure 112016063794729-pat00308
    는, 상기
    Figure 112016063794729-pat00309
    가 상기 패턴집합
    Figure 112016063794729-pat00310
    에 속하고, 상기 길이가
    Figure 112016063794729-pat00311
    이라 할 때, 상기
    Figure 112016063794729-pat00312
    를 만족하는 정수 j에 대해
    Figure 112016063794729-pat00313
    Figure 112016063794729-pat00314
    일 때 0이고,
    Figure 112016063794729-pat00383
    일 때 1이고, 상기
    Figure 112016063794729-pat00384
    는 상기
    Figure 112016063794729-pat00317
    Figure 112016063794729-pat00318
    범위에서 계산하여 저장한 배열을 의미하는
    것을 특징으로 하는 해싱기반의 순위다중패턴매칭 수행 방법.
  2. 제1항에 있어서,
    상기 전처리단계는,
    상기 이동테이블에 존재하는 값들을
    Figure 112016028654927-pat00226
    로 초기화하는 단계;
    상기
    Figure 112016028654927-pat00227
    에 대하여 위치
    Figure 112016028654927-pat00228
    에서 q-그램
    Figure 112016028654927-pat00229
    에 대한 핑거프린트함수를 계산하는 단계;
    상기
    Figure 112016028654927-pat00230
    에 대한 핑거프린트함수의 값이
    Figure 112016028654927-pat00231
    인 경우, 상기 이동테이블의
    Figure 112016028654927-pat00232
    번째 위치의 값을 참조하는 단계; 및
    상기 이동테이블의
    Figure 112016028654927-pat00233
    번째 위치의 값이
    Figure 112016028654927-pat00234
    보다 크다면,
    Figure 112016028654927-pat00235
    로 갱신하고, 상기 이동테이블의
    Figure 112016028654927-pat00236
    번째 위치의 값이
    Figure 112016028654927-pat00237
    보다 작다면, 기존의 값을 유지하는 단계
    를 포함하고,
    상기 m은, 상기 패턴집합
    Figure 112016028654927-pat00319
    에서 가장 짧은 패턴의 길이,
    상기 q-그램은, 길이가 q인 문자열을 하나의 단위로 취급하는 개념을 의미하고,
    상기 q는, 상기 q-그램에 속한 문자의 수를 의미하고,
    상기
    Figure 112016028654927-pat00320
    는, 상기
    Figure 112016028654927-pat00321
    가 상기 패턴집합
    Figure 112016028654927-pat00322
    에 속하고, 상기 길이가
    Figure 112016028654927-pat00323
    라 할 때, 정수 l, q는
    Figure 112016028654927-pat00324
    를 만족하는 경우, 상기
    Figure 112016028654927-pat00325
    의 l-q+1번째 문자에서 시작하고 l번째 문자에서 끝나는 길이가 q인 부분문자열을 의미하는
    것을 특징으로 하는 해싱기반의 순위다중패턴매칭 수행 방법.
  3. 제2항에 있어서,
    상기 전처리단계는,
    상기 패턴집합내의 가장 오른쪽에서
    Figure 112015074291766-pat00238
    가 발생한 위치를 기준으로 계산된 이동거리를 이동테이블의
    Figure 112015074291766-pat00239
    번째 위치에 저장하는 단계
    를 포함하는 해싱기반의 순위다중패턴매칭 수행 방법.
  4. 제1항에 있어서,
    상기 전처리단계는,
    상기 해시테이블을 생성하기 위하여 상기
    Figure 112016028654927-pat00240
    의 길이가 q인 접미사
    Figure 112016028654927-pat00241
    에 대한 핑거프린트함수를 계산하는 단계; 및
    상기
    Figure 112016028654927-pat00242
    에 대한 핑거프린트함수의 값이
    Figure 112016028654927-pat00243
    인 경우, 상기 해시테이블의
    Figure 112016028654927-pat00244
    번째 위치에 저장된 패턴들의 리스트에
    Figure 112016028654927-pat00245
    를 추가하는 단계
    를 포함하고,
    상기 m은, 상기 패턴집합
    Figure 112016028654927-pat00326
    에서 가장 짧은 패턴의 길이,
    상기
    Figure 112016028654927-pat00327
    는, 상기
    Figure 112016028654927-pat00328
    가 상기 패턴집합
    Figure 112016028654927-pat00329
    에 속하고, 상기
    Figure 112016028654927-pat00330
    에 속한 패턴 중 가장 짧은 패턴의 길이가 m이고, 정수 q는
    Figure 112016028654927-pat00331
    을 만족하는 경우, 상기
    Figure 112016028654927-pat00332
    의 m-q+1번째 문자에서 시작하고 m번째 문자에서 끝나는 길이가 q인
    Figure 112016028654927-pat00333
    의 부분문자열을 의미하는
    것을 특징으로 하는 해싱기반의 순위다중패턴매칭 수행 방법.
  5. 제1항에 있어서,
    상기 검색단계는,
    상기 텍스트 T의 검색위치를 j라 할 때, 상기 j가 m부터 시작하여 n에 도달할 때까지 진행되며,
    상기 검색위치 j에서 q-그램
    Figure 112016028654927-pat00246
    에 대하여 핑거프린트함수를 계산하는 단계;
    상기 핑거프린트함수의 값이
    Figure 112016028654927-pat00247
    라면, 상기 이동테이블의
    Figure 112016028654927-pat00248
    번째 값을 참조하여 이동거리 s를 도출하는 단계;
    상기 s가 0임에 따라 순위동형이 발생 가능한 경우에 상기 해시테이블의
    Figure 112016028654927-pat00249
    번째 값에 포함된 모든
    Figure 112016028654927-pat00250
    에 대해 상기
    Figure 112016028654927-pat00251
    와 상기
    Figure 112016028654927-pat00252
    를 사용하여
    Figure 112016028654927-pat00253
    Figure 112016028654927-pat00254
    의 순위동형 여부를 조사하고, 상기 검색위치 j를 오른쪽으로 1만큼 이동시키는 단계; 및
    상기 s가 0이 아닌 경우에 상기 j를 오른쪽으로 s만큼 이동시키는 단계
    를 포함하고,
    상기 q는, 상기 q-그램에 속한 문자의 수,
    상기 m은, 상기 패턴집합
    Figure 112016028654927-pat00334
    에서 가장 짧은 패턴의 길이,
    상기 n은 상기 텍스트의 길이,
    상기
    Figure 112016028654927-pat00335
    는, 상기
    Figure 112016028654927-pat00336
    의 길이,
    상기
    Figure 112016028654927-pat00337
    는, 상기
    Figure 112016028654927-pat00338
    의 길이,
    상기
    Figure 112016028654927-pat00339
    는, 상기 텍스트 T에 대하여 정수 j, q가
    Figure 112016028654927-pat00340
    을 만족할 때, 상기 텍스트 T의 j-q+1번째 문자부터 시작하고 j번째 문자에서 끝나는 길이가 q인 상기 텍스트 T의 부분문자열,
    상기
    Figure 112016028654927-pat00341
    는, 상기 텍스트 T에 대하여 정수 j, q가
    Figure 112016028654927-pat00342
    을 만족할 때, j-m+1번째 문자에서 시작하여
    Figure 112016028654927-pat00343
    번째 문자에서 끝나는 상기 텍스트 T의 부분문자열을 의미하는
    것을 특징으로 하는 해싱기반의 순위다중패턴매칭 수행 방법.
  6. 제1항에 있어서,
    가장 긴 패턴의 길이를
    Figure 112016028654927-pat00255
    이라고 하고,
    상기 이동테이블을 생성할 때, 상기
    Figure 112016028654927-pat00256
    의 위치
    Figure 112016028654927-pat00257
    에서
    Figure 112016028654927-pat00258
    에 대한 핑거프린트함수를 계산하므로
    Figure 112016028654927-pat00259
    시간이 소요되고,
    상기 해시테이블을 생성할 때, 상기
    Figure 112016028654927-pat00260
    Figure 112016028654927-pat00261
    에 대해 핑거프린트함수를 계산하므로
    Figure 112016028654927-pat00262
    시간이 소요되고,
    패턴집합에 속한 모든 패턴
    Figure 112016028654927-pat00263
    에 대해
    Figure 112016028654927-pat00264
    Figure 112016028654927-pat00265
    를 계산할 때
    Figure 112016028654927-pat00266
    시간이 소요되고,
    상기 전처리단계를 계산하기 위한 시간은,
    Figure 112016028654927-pat00267
    시간에 계산되는 단계
    를 포함하고,
    상기 q는, 상기 q-그램에 속한 문자의 수,
    상기 m은, 상기 패턴집합
    Figure 112016028654927-pat00344
    에서 가장 짧은 패턴의 길이,
    상기 M은, 상기 패턴집합
    Figure 112016028654927-pat00345
    에 속한 패턴들의 길이의 합을 의미하는
    것을 특징으로 하는 해싱기반의 순위다중패턴매칭 수행 방법.
  7. 해싱기반의 순위다중패턴매칭을 수행하는 장치에 있어서,
    텍스트(T)와 k(k는 자연수) 개의 패턴(
    Figure 112016063794729-pat00346
    )들로 구성된 패턴집합(
    Figure 112016063794729-pat00347
    )이 주어짐에 따라 상기 패턴집합 내의 패턴과 각 문자들의 순위가 동일한 순서로 나타나는 텍스트의 모든 부분문자열을 탐색하기 위하여
    이동테이블 및 해시테이블을 생성하고, 모든
    Figure 112016063794729-pat00268
    에 대해
    Figure 112016063794729-pat00269
    Figure 112016063794729-pat00270
    를 계산하는 전처리부; 및
    상기 패턴
    Figure 112016063794729-pat00271
    와 순위동형인 T의 모든 부분문자열의 위치를 탐색하는 검색부
    를 포함하고,
    상기
    Figure 112016063794729-pat00348
    는, 상기
    Figure 112016063794729-pat00349
    가 상기 패턴집합
    Figure 112016063794729-pat00350
    에 속한 문자열이고, 길이가
    Figure 112016063794729-pat00351
    라고 할 때,
    Figure 112016063794729-pat00352
    를 만족하는 정수 j, k에 대해
    Figure 112016063794729-pat00353
    를 만족하는 배열을 의미하고,
    상기
    Figure 112016063794729-pat00354
    는, 문자열
    Figure 112016063794729-pat00355
    에서 문자
    Figure 112016063794729-pat00356
    의 순위가 k라는 것을 의미하고,
    Figure 112016063794729-pat00357
    는 상기 문자열
    Figure 112016063794729-pat00358
    에서 k번째 순위의 문자가
    Figure 112016063794729-pat00359
    라는 것을 의미하고,
    상기
    Figure 112016063794729-pat00360
    는, 상기
    Figure 112016063794729-pat00361
    가 상기 패턴집합
    Figure 112016063794729-pat00362
    에 속하고, 상기 길이가
    Figure 112016063794729-pat00363
    이라 할 때,
    Figure 112016063794729-pat00364
    를 만족하는 정수 j에 대해
    Figure 112016063794729-pat00365
    는 상기
    Figure 112016063794729-pat00366
    에서 상기
    Figure 112016063794729-pat00367
    보다 크기가 작은 문자의 개수와
    Figure 112016063794729-pat00368
    에서 상기
    Figure 112016063794729-pat00369
    와 크기가 같은 문자의 개수를 합한 값이며, 상기
    Figure 112016063794729-pat00370
    를 상기
    Figure 112016063794729-pat00371
    범위에서 계산하여 저장한 배열을 의미하고,
    상기
    Figure 112016063794729-pat00372
    는, 상기
    Figure 112016063794729-pat00373
    가 상기 패턴집합
    Figure 112016063794729-pat00374
    에 속하고, 상기 길이가
    Figure 112016063794729-pat00375
    이라 할 때, 상기
    Figure 112016063794729-pat00376
    를 만족하는 정수 j에 대해
    Figure 112016063794729-pat00377
    Figure 112016063794729-pat00378
    일 때 0이고,
    Figure 112016063794729-pat00385
    일 때 1이고, 상기
    Figure 112016063794729-pat00386
    는 상기
    Figure 112016063794729-pat00381
    Figure 112016063794729-pat00382
    범위에서 계산하여 저장한 배열을 의미하는
    것을 특징으로 하는 해싱기반의 순위다중패턴매칭 수행 장치.
KR1020150108101A 2015-07-30 2015-07-30 해싱기반의 순위다중패턴매칭 방법 KR101662957B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150108101A KR101662957B1 (ko) 2015-07-30 2015-07-30 해싱기반의 순위다중패턴매칭 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150108101A KR101662957B1 (ko) 2015-07-30 2015-07-30 해싱기반의 순위다중패턴매칭 방법

Publications (1)

Publication Number Publication Date
KR101662957B1 true KR101662957B1 (ko) 2016-10-05

Family

ID=57153948

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150108101A KR101662957B1 (ko) 2015-07-30 2015-07-30 해싱기반의 순위다중패턴매칭 방법

Country Status (1)

Country Link
KR (1) KR101662957B1 (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170140072A (ko) * 2016-06-10 2017-12-20 팔로 알토 리서치 센터 인코포레이티드 집약성-보존 해싱을 사용하는 효율적 구간 검색을 위한 방법 및 시스템
KR20190048762A (ko) * 2017-10-31 2019-05-09 인하대학교 산학협력단 Z-함수를 이용한 순위패턴매칭과 순위다중패턴매칭 병렬 계산 방법
KR20190048100A (ko) * 2017-10-30 2019-05-09 인하대학교 산학협력단 사각망 순열패턴매칭을 위한 병렬 알고리즘
KR20200075295A (ko) * 2018-12-18 2020-06-26 인하대학교 산학협력단 2차 q-그램에 대한 핑거프린트를 이용한 순위패턴매칭 알고리즘
KR20220084901A (ko) * 2020-12-14 2022-06-21 서울대학교산학협력단 동의어 규칙을 이용한 문자열 매칭 방법 및 이를 구현하는 장치 및 프로그램

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100007420A (ko) * 2008-07-14 2010-01-22 충남대학교산학협력단 여러 개의 연속된 부분패턴을 이용한 다중 패턴매칭 방법
KR20100013895A (ko) * 2008-08-01 2010-02-10 재단법인서울대학교산학협력재단 계층화된 시프트 테이블을 이용한 고속의 문자열 패턴 탐지방법
KR20120063879A (ko) * 2010-12-08 2012-06-18 서울대학교산학협력단 다중 바이트 문자 집합 텍스트에서의 문자열 일치 검색 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100007420A (ko) * 2008-07-14 2010-01-22 충남대학교산학협력단 여러 개의 연속된 부분패턴을 이용한 다중 패턴매칭 방법
KR20100013895A (ko) * 2008-08-01 2010-02-10 재단법인서울대학교산학협력재단 계층화된 시프트 테이블을 이용한 고속의 문자열 패턴 탐지방법
KR20120063879A (ko) * 2010-12-08 2012-06-18 서울대학교산학협력단 다중 바이트 문자 집합 텍스트에서의 문자열 일치 검색 방법

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
논문 1 *

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170140072A (ko) * 2016-06-10 2017-12-20 팔로 알토 리서치 센터 인코포레이티드 집약성-보존 해싱을 사용하는 효율적 구간 검색을 위한 방법 및 시스템
KR102189398B1 (ko) 2016-06-10 2020-12-11 팔로 알토 리서치 센터 인코포레이티드 국소성-유지 해싱을 사용하는 효율적 구간 검색을 위한 방법 및 시스템
KR20190048100A (ko) * 2017-10-30 2019-05-09 인하대학교 산학협력단 사각망 순열패턴매칭을 위한 병렬 알고리즘
KR102050372B1 (ko) 2017-10-30 2019-11-29 인하대학교 산학협력단 사각망 순열패턴매칭을 위한 병렬 알고리즘
KR20190048762A (ko) * 2017-10-31 2019-05-09 인하대학교 산학협력단 Z-함수를 이용한 순위패턴매칭과 순위다중패턴매칭 병렬 계산 방법
KR101991579B1 (ko) * 2017-10-31 2019-06-20 인하대학교 산학협력단 Z-함수를 이용한 순위패턴매칭과 순위다중패턴매칭 병렬 계산 방법
KR20200075295A (ko) * 2018-12-18 2020-06-26 인하대학교 산학협력단 2차 q-그램에 대한 핑거프린트를 이용한 순위패턴매칭 알고리즘
KR102158317B1 (ko) * 2018-12-18 2020-09-21 인하대학교 산학협력단 2차 q-그램에 대한 핑거프린트를 이용한 순위패턴매칭 알고리즘
KR20220084901A (ko) * 2020-12-14 2022-06-21 서울대학교산학협력단 동의어 규칙을 이용한 문자열 매칭 방법 및 이를 구현하는 장치 및 프로그램
KR102496551B1 (ko) 2020-12-14 2023-02-06 서울대학교산학협력단 동의어 규칙을 이용한 문자열 매칭 방법 및 이를 구현하는 장치 및 프로그램

Similar Documents

Publication Publication Date Title
KR101662957B1 (ko) 해싱기반의 순위다중패턴매칭 방법
CN107102981B (zh) 词向量生成方法和装置
US10242125B2 (en) Regular expression matching
WO2014136810A1 (ja) 類似データ検索装置、類似データ検索方法、及びコンピュータ読み取り可能な記録媒体
US20170011120A1 (en) Multiple sub-string searching
JP2009512099A (ja) トライでの再始動可能なハッシュの方法及び装置
JP5862413B2 (ja) 情報変換規則生成プログラム、情報変換規則生成装置および情報変換規則生成方法
JP4114600B2 (ja) 可変長文字列検索装置及び可変長文字列検索方法並びにプログラム
JP6434162B2 (ja) データ管理システム、データ管理方法およびプログラム
Hakak et al. Partition-based pattern matching approach for efficient retrieval of Arabic text
CN106777920A (zh) 确定最长公共子序列的方法和装置
Janani et al. An efficient text pattern matching algorithm for retrieving information from desktop
JP6365274B2 (ja) 共通操作情報生成プログラム、共通操作情報生成方法、及び共通操作情報生成装置
Faro Evaluation and improvement of fast algorithms for exact matching on genome sequences
JP2017107472A (ja) 文字列検索方法および装置
Yammahi et al. An efficient technique for searching very large files with fuzzy criteria using the pigeonhole principle
Wakayama et al. Distributed forests for MapReduce-based machine learning
KR101769247B1 (ko) 계층적 인터벌 트리를 이용한 문자열 비교 방법 및 장치
US20190294637A1 (en) Similar data search device, similar data search method, and recording medium
US9830355B2 (en) Computer-implemented method of performing a search using signatures
KR101626721B1 (ko) 사각망 순열패턴매칭을 위한 효율적인 알고리즘
Mortari et al. K-vector range searching techniques
Alba et al. Approximate string matching using phase correlation
JP5442083B1 (ja) 同義語推定装置、同義語推定方法および同義語推定プログラム
Kurniawan et al. A new string matching algorithm based on logical indexing

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant