KR101626721B1 - 사각망 순열패턴매칭을 위한 효율적인 알고리즘 - Google Patents

사각망 순열패턴매칭을 위한 효율적인 알고리즘 Download PDF

Info

Publication number
KR101626721B1
KR101626721B1 KR1020150090010A KR20150090010A KR101626721B1 KR 101626721 B1 KR101626721 B1 KR 101626721B1 KR 1020150090010 A KR1020150090010 A KR 1020150090010A KR 20150090010 A KR20150090010 A KR 20150090010A KR 101626721 B1 KR101626721 B1 KR 101626721B1
Authority
KR
South Korea
Prior art keywords
sequence
rti
pattern
pattern matching
tree
Prior art date
Application number
KR1020150090010A
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 KR1020150090010A priority Critical patent/KR101626721B1/ko
Application granted granted Critical
Publication of KR101626721B1 publication Critical patent/KR101626721B1/ko

Links

Images

Classifications

    • G06K9/6201
    • G06K9/6211
    • G06K9/6215

Landscapes

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

Abstract

최근 순열패턴매칭(permutation pattern matching)에서 패턴형태에 따라 다양한 연구들이 진행되고 있다. 이 중 연속패턴(consecutive pattern)의 경우 주가지수와 같은 시계열자료 분석, 두 악보간의 유사성 분석에 응용될 수 있다고 알려져 있다. 사각망패턴(boxed mesh pattern)은 연속패턴의 일반화된 형태로 연속패턴의 경우 연속된 값들의 상대적인 순서를 고려하는 반면에 사각망패턴은 비연속적인 값들의 상대적인 순서를 고려한다. 사각망 순열패턴매칭문제(boxed mesh permutation pattern matching problem)는 패턴
Figure 112015061387353-pat00387
와 텍스트
Figure 112015061387353-pat00388
가 주어졌을 때, P의 사각망패턴과 매치되는 모든 T의 부분서열(subsequence)을 찾는 문제이다. 이에 따라 본 발명에서는 기존의
Figure 112015061387353-pat00389
알고리즘을 개선하여,
Figure 112015061387353-pat00390
시간에 사각망 순열패턴매칭문제를 해결하는 새로운 알고리즘을 제안한다.

Description

사각망 순열패턴매칭을 위한 효율적인 알고리즘{AN EFFICIENT ALGORITHM FOR BOXED MESH PERMUTATION PATTERN MATCHING}
아래의 설명은 사각망 순열패턴매칭을 위한 알고리즘에 관한 것이다.
순열패턴매칭문제(permutation pattern matching problem)는 패턴 P와 텍스트 T가 주어졌을 때, P와 순서동형(order-isomorphic)인 부분서열(subsequence)이 존재하는지 판단하는 문제이다. 최근 순열패턴매칭에서 패턴형태에 따라 다양한 연구들이 진행되고 있다.
순열패턴의 변형 중 하나인 연속패턴(consecutive pattern)의 경우 주가지수와 같은 시계열자료 분석, 두 악보간의 유사성분석에 응용가능성이 밝혀져 활발히 연구되고 있다. 사각망패턴(boxed mesh pattern)은 연속패턴의 일반화된 형태로 연속 패턴의 경우 연속된 값들의 상대적인 순서를 고려하는 반면에 사각망패턴은 비연속적인 값들의 상대적인 순서를 고려한다. 사각망패턴은 패턴회피(pattern avoidance) 측면에서 연구되었다. 패턴회피는 주어진 패턴과 순서동형인 부분서열을 포함하지 않는 텍스트 순열의 개수를 세는 문제이다. 그 후,
Figure 112015061387353-pat00001
알고리즘에서는 사각망패턴에 대한 패턴매칭문제를 정의하고 처음으로 다항시간(polynomial time) 알고리즘을 제시하였다. 사각망 순열패턴매칭문제(boxed mesh permutation pattern matching problem)는 패턴
Figure 112015061387353-pat00002
와 텍스트
Figure 112015061387353-pat00003
가 주어졌을 때, P의 사각망패턴과 매치되는 모든 T의 부분서열을 찾는 문제이다. 사각망 순열패턴매칭문제를 해결하는 알고리즘으로는
Figure 112015061387353-pat00004
알고리즘이 알려져 있다.
본 발명은 순위통계트리(order-statistics tree)를 이용하여 종래의 결과보다 개선된
Figure 112015061387353-pat00005
시간에 사각망 순열패턴매칭문제를 해결하는 알고리즘을 제안한다.
일 실시예에 따르면, 사각망 순열패턴매칭을 수행하는 방법은, 상수시간에 비교가능한 문자집합을 나타내는
Figure 112015061387353-pat00006
상의 패턴
Figure 112015061387353-pat00007
와 텍스트
Figure 112015061387353-pat00008
가 주어짐에 따라,
Figure 112015061387353-pat00009
Figure 112015061387353-pat00010
를 획득하고, 빈 순위통계트리
Figure 112015061387353-pat00011
Figure 112015061387353-pat00012
를 생성하는 전처리 단계; 및 상기 T의 접두사
Figure 112015061387353-pat00013
Figure 112015061387353-pat00014
에 대하여 각각의 P와 순서동형인 부분서열이 있는지 여부를 검사하는 탐색 단계를 포함할 수 있다.
일측에 따르면, 상기
Figure 112015061387353-pat00015
Figure 112015061387353-pat00016
를 획득하고, 빈 순위통계트리
Figure 112015061387353-pat00017
Figure 112015061387353-pat00018
를 생성하는 전처리 단계는, 상기
Figure 112015061387353-pat00019
Figure 112015061387353-pat00020
를 획득함에 따라 순위통계트리를 이용하여
Figure 112015061387353-pat00021
시간에 도출하는 단계를 포함하고, 상기
Figure 112015061387353-pat00022
는, 상기
Figure 112015061387353-pat00023
상에서 P가 주어졌을 때, 각 문자의 순위(rank)를 저장한 서열을 의미하고, 상기
Figure 112015061387353-pat00024
는, 순위별 위치를 저장한 서열을 의미하는 것을 포함할 수 있다.
또 다른 일측에 따르면, 상기 T의 접두사
Figure 112015061387353-pat00025
Figure 112015061387353-pat00026
에 대하여 각각의 P와 순서동형인 부분서열이 있는지 여부를 검사하는 탐색 단계는,
Figure 112015061387353-pat00027
부터
Figure 112015061387353-pat00028
까지 역순으로 각각의 문자
Figure 112015061387353-pat00029
Figure 112015061387353-pat00030
Figure 112015061387353-pat00031
에 순서대로 삽입하는 단계;
Figure 112015061387353-pat00032
를 삽입한 후, 상기
Figure 112015061387353-pat00033
로부터
Figure 112015061387353-pat00034
를 첫번째 문자,
Figure 112015061387353-pat00035
를 마지막 문자로 하는
Figure 112015061387353-pat00036
를 획득하고, 상기
Figure 112015061387353-pat00037
와 상기 P가 순서동형일 경우
Figure 112015061387353-pat00038
를 출력하는 단계; 및
Figure 112015061387353-pat00039
에 포함된 부분서열을 찾는 과정이 끝난 후 상기
Figure 112015061387353-pat00040
과 상기
Figure 112015061387353-pat00041
에 저장된 원소들을 삭제하는 단계를 포함할 수 있다.
또 다른 일측에 따르면, 상기 T의 접두사
Figure 112015061387353-pat00042
Figure 112015061387353-pat00043
에 대하여 각각의 P와 순서동형인 부분서열이 있는지 여부를 검사하는 탐색 단계는, 상기
Figure 112015061387353-pat00044
를 삽입할 경우, 짝(pair)
Figure 112015061387353-pat00045
Figure 112015061387353-pat00046
에 삽입하고, 짝
Figure 112015061387353-pat00047
Figure 112015061387353-pat00048
에 삽입하는 단계; 및
Figure 112015061387353-pat00049
의 값을
Figure 112015061387353-pat00050
이라고 정의하고, 상기
Figure 112015061387353-pat00051
를 삽입한 후 상기
Figure 112015061387353-pat00052
에서
Figure 112015061387353-pat00053
의 순위
Figure 112015061387353-pat00054
과 순위가 1인 원소
Figure 112015061387353-pat00055
를 도출하되,
Figure 112015061387353-pat00056
일 경우, 상기
Figure 112015061387353-pat00057
에서
Figure 112015061387353-pat00058
를 삭제하고 상기
Figure 112015061387353-pat00059
에서
Figure 112015061387353-pat00060
를 삭제하는 단계를 포함할 수 있다.
또 다른 일측에 따르면, 상기 T의 접두사
Figure 112015061387353-pat00061
Figure 112015061387353-pat00062
에 대하여 각각의 P와 순서동형인 부분서열이 있는지 여부를 검사하는 탐색 단계는, 상기
Figure 112015061387353-pat00063
의 원소의 개수가 m보다 클 경우,
Figure 112015061387353-pat00064
에서 순위가 m+1인 가장 큰 원소
Figure 112015061387353-pat00065
를 구하고, 상기
Figure 112015061387353-pat00066
과 상기
Figure 112015061387353-pat00067
에서 각각
Figure 112015061387353-pat00068
Figure 112015061387353-pat00069
를 삭제하는 단계를 포함할 수 있다.
또 다른 일측에 따르면, 상기 T의 접두사
Figure 112015061387353-pat00070
Figure 112015061387353-pat00071
에 대하여 각각의 P와 순서동형인 부분서열이 있는지 여부를 검사하는 탐색 단계는, 상기
Figure 112015061387353-pat00072
의 원소의 개수가 m이고,
Figure 112015061387353-pat00073
를 포함하고 있는 경우,
Figure 112015061387353-pat00074
트리를 중위순회(inorder traversal)하여 위치순으로 정렬된
Figure 112015061387353-pat00075
를 출력하는 단계를 포함할 수 있다.
또 다른 일측에 따르면, 상기 사각망 순열패턴매칭을 수행하는 방법에서 시간복잡도는, 상기 전처리 단계에서
Figure 112015061387353-pat00076
시간이 소요되고, 상기 탐색단계에서
Figure 112015061387353-pat00077
시간이 소요될 수 있다.
일 실시예에 따르면, 사각망 순열패턴매칭을 위한 수행하는 장치는, 상수시간에 비교가능한 문자집합을 나타내는
Figure 112015061387353-pat00078
상의 패턴
Figure 112015061387353-pat00079
와 텍스트
Figure 112015061387353-pat00080
가 주어짐에 따라,
Figure 112015061387353-pat00081
Figure 112015061387353-pat00082
를 획득하고, 빈 순위통계트리
Figure 112015061387353-pat00083
Figure 112015061387353-pat00084
를 생성하는 전처리부; 및 T의 접두사
Figure 112015061387353-pat00085
Figure 112015061387353-pat00086
에 대하여 각각의 P와 순서동형인 부분서열이 있는지 여부를 검사하는 탐색부를 포함할 수 있다.
일 실시예에 따른 사각망 순열패턴매칭을 수행하는 장치는 순위통계트리(order-statistics tree)를 이용하여
Figure 112015061387353-pat00087
시간에 사각망 순열패턴매칭문제를 해결할 수 있다.
도 1은 좌표평면 상의 패턴 P와 텍스트 T를 나타낸 도면이다.
도 2는 일 실시예에 따른 사각망 순열패턴매칭을 수행하는 장치의 블록도를 나타낸 도면이다.
도 3은 일 실시예에 따른 사각망 순열패턴매칭을 수행하는 장치의 사각망 순열패턴매칭을 수행하는 방법을 나타낸 흐름도이다.
이하, 실시예를 첨부한 도면을 참조하여 상세히 설명한다.
도 2는 일 실시예에 따른 사각망 순열패턴매칭을 수행하는 장치의 블록도를 나타낸 도면이다.
사각망 순열패턴매칭을 수행하는 장치(200)는
Figure 112015061387353-pat00088
시간에 사각망 순열패턴매칭문제를 해결하기 위한 것으로, 전처리부(210) 및 탐색부(220)를 포함할 수 있다. 전처리부(210) 및 탐색부(220)는 도 3의 단계들(210~220)을 수행하기 위하여 구성될 수 있다.
Figure 112015061387353-pat00089
는 상수시간에 비교가능한 문자집합을 나타내며,
Figure 112015061387353-pat00090
Figure 112015061387353-pat00091
의 크기를 나타낸다.
Figure 112015061387353-pat00092
상의 문자열
Figure 112015061387353-pat00093
의 길이를
Figure 112015061387353-pat00094
로,
Figure 112015061387353-pat00095
Figure 112015061387353-pat00096
번째 문자는
Figure 112015061387353-pat00097
로 표기한다.
Figure 112015061387353-pat00098
는 문자들의 연속된 형태
Figure 112015061387353-pat00099
로 표현한다. 이때, 문자열
Figure 112015061387353-pat00100
안에 포함된 모든 문자들은 서로 다르다고 가정한다. 문자열
Figure 112015061387353-pat00101
Figure 112015061387353-pat00102
번째부터
Figure 112015061387353-pat00103
번째까지의 부분문자열은
Figure 112015061387353-pat00104
로 표기하고,
Figure 112015061387353-pat00105
Figure 112015061387353-pat00106
의 접두사(prefix)라 하자. 집합
Figure 112015061387353-pat00107
Figure 112015061387353-pat00108
로 표기한다.
Figure 112015061387353-pat00109
상의 문자열
Figure 112015061387353-pat00110
가 주어졌을 때, 각 문자의 순위(rank)를 저장한 서열을
Figure 112015061387353-pat00111
라 하고, 순위별 위치를 저장한 서열을
Figure 112015061387353-pat00112
라 하자. 즉,
Figure 112015061387353-pat00113
Figure 112015061387353-pat00114
로 정의되며,
Figure 112015061387353-pat00115
Figure 112015061387353-pat00116
일 때,
Figure 112015061387353-pat00117
로 정의된다. 예를 들어,
Figure 112015061387353-pat00118
이 주어졌을 때,
Figure 112015061387353-pat00119
이며,
Figure 112015061387353-pat00120
이다.
Figure 112015061387353-pat00121
Figure 112015061387353-pat00122
를 이용하여
Figure 112015061387353-pat00123
시간에 구할 수 있으며,
Figure 112015061387353-pat00124
Figure 112015061387353-pat00125
의 문자들을 정렬함으로써
Figure 112015061387353-pat00126
시간에 구할 수 있음을 쉽게 알 수 있다.
Figure 112015061387353-pat00127
상의 동일한 길이의 두 문자열
Figure 112015061387353-pat00128
Figure 112015061387353-pat00129
가 주어졌을 때, 모든
Figure 112015061387353-pat00130
에 대해 "
Figure 112015061387353-pat00131
"를 만족하면
Figure 112015061387353-pat00132
로 표기하고,
Figure 112015061387353-pat00133
Figure 112015061387353-pat00134
는 서로 순서동형이라 하자. 두 문자열
Figure 112015061387353-pat00135
Figure 112015061387353-pat00136
가 서로 순서동형인지는 두 문자열의 가장 작은 값부터 가장 큰 값까지 서로 동일한 위치에 존재하는지 확인함으로써 알 수 있으며 방법은 다음과 같다. 모든
Figure 112015061387353-pat00137
에 대해 "
Figure 112015061387353-pat00138
"가 만족하는지 확인한다. 위 과정은
Figure 112015061387353-pat00139
가 주어졌을 때
Figure 112015061387353-pat00140
시간이 걸린다. 따라서
Figure 112015061387353-pat00141
가 주어졌을 때
Figure 112015061387353-pat00142
시간에 두 문자열
Figure 112015061387353-pat00143
Figure 112015061387353-pat00144
가 서로 순서동형인지 확인할 수 있다.
좌표평면 상의 네 개의 점
Figure 112015061387353-pat00145
,
Figure 112015061387353-pat00146
,
Figure 112015061387353-pat00147
,
Figure 112015061387353-pat00148
를 꼭짓점으로 하는 직사각형 영역을
Figure 112015061387353-pat00149
Figure 112015061387353-pat00150
로 표기하자.
Figure 112015061387353-pat00151
는 좌표평면 상에,
Figure 112015061387353-pat00152
일 때, 점
Figure 112015061387353-pat00153
로 표현할 수 있다. 도 1은 좌표평면 상의 패턴 P와 텍스트 T를 나타낸 도면으로, 텍스트
Figure 112015061387353-pat00154
와 패턴
Figure 112015061387353-pat00155
를 좌표평면 상에 표현한 그림이다. 회색으로 칠해진 부분은 앞서 설명한 직사각형 영역들을 나타낸다. 원형 테투리로 감싼 점은 영역의 경계에 위치한 점을 나타낸 것으로,
Figure 112015061387353-pat00156
의 경우 3개의 점이
Figure 112015061387353-pat00157
의 경계에 위치해있다. 다음으로 사각망패턴과 사각망 순열패턴매칭문제를 정의하자.
1. 사각망 패턴
Figure 112015061387353-pat00158
상의 문자열
Figure 112015061387353-pat00159
의 사각망패턴
Figure 112015061387353-pat00160
Figure 112015061387353-pat00161
의 문자별 순위를 저장한 서열
Figure 112015061387353-pat00162
와 좌표평면 상의 영역
Figure 112015061387353-pat00163
로 정의된다.
2. 사각망 순열패턴매칭문제
Figure 112015061387353-pat00164
상의 패턴 P와 텍스트 T가 주어졌을 때, T를 표현한 좌표평면에서 임의의 직사각형 영역 R에 속한 점들의 서열을
Figure 112015061387353-pat00165
라 하자. 이때, P가
Figure 112015061387353-pat00166
와 서로 순서동형이면 P의 사각망패턴은 R에서 T의 부분서열
Figure 112015061387353-pat00167
와 매치되었다고 하자. 사각망 순열패턴매칭문제는 P의 사각망패턴과 매치되는 모든 T의 부분서열을 찾는 문제이다.
예를 들면, 도 1에서 P=(1, 4, 2, 3)의 사각망패턴은
Figure 112015061387353-pat00168
이고, T를 표현한 좌표평면에서 영역
Figure 112015061387353-pat00169
에 포함된 점들의 서열은
Figure 112015061387353-pat00170
이다. 이때,
Figure 112015061387353-pat00171
와 P는 서로 순서동형이므로 P의 사각망패턴은 영역
Figure 112015061387353-pat00172
에서
Figure 112015061387353-pat00173
와 매치된다. 도 1에서 P의 사각망패턴은
Figure 112015061387353-pat00174
,
Figure 112015061387353-pat00175
,
Figure 112015061387353-pat00176
에서 각각
Figure 112015061387353-pat00177
,
Figure 112015061387353-pat00178
,
Figure 112015061387353-pat00179
과 매치된다.
순위통계트리(order-statistics tree)는 균형이진탐색트리(balanced binary search tree)에 순위(rank)를 이용한 검색기능을 추가한 자료구조이다. 트리가 저장한 원소의 개수가 n개일 때,
Figure 112015061387353-pat00180
시간에 트리에 저장된 원소의 개수를 구하고,
Figure 112015061387353-pat00181
시간에 하나의 원소에 대한 삽입, 삭제, 검색연산을 수행한다. 또한, 원소의 값을 입력으로 주었을 때
Figure 112015061387353-pat00182
시간에 원소의 순위를 반환하며, 반대로 원소의 순위를 입력으로 주었을 때
Figure 112015061387353-pat00183
시간에 해당 순위를 가진 원소를 반환한다. 순위통계트리는 각 노드에, 해당 노드를 루트(root)로 하는 서브트리(subtree)에 속한 원소의 개수를 저장한다. 검색된 원소의 순위는 다음과 같은 방식으로 구할 수 있다. 검색과정에서 오른쪽서브트리로 내려갈 때, 순위 값에 왼쪽서브트리의 원소의 개수와 1을 더한다. 원소를 찾을 때까지 위 과정을 반복하며, 마지막으로 찾은 원소의 완쪽서브트리의 원소의 개수를 더한다. 순위가 주어졌을 때 원소를 찾는 연산도 이와 유사한데, 각 단계에서 지금까지 계산된 순위 값과 구하고자 하는 순위 값을 비교하면서 왼쪽서브트리로 갈 것인 것 오른쪽서브트리로 갈 것인지를 선택하면 된다.
3. 사각망 순열패턴매칭 알고리즘
Figure 112015061387353-pat00184
상의 패턴
Figure 112015061387353-pat00185
와 텍스트
Figure 112015061387353-pat00186
가 주어졌을 때, 알고리즘은 전처리단계(310)와 탐색단계(320)로 나뉜다. 전처리부(210)는
Figure 112015061387353-pat00187
Figure 112015061387353-pat00188
를 구하고, 탐색단계를 위한 빈 순위통계트리
Figure 112015061387353-pat00189
Figure 112015061387353-pat00190
를 생성한다(310).
Figure 112015061387353-pat00191
Figure 112015061387353-pat00192
는 앞에서 설명한 바와 같이, 순위통계트리를 이용하여
Figure 112015061387353-pat00193
시간에 구할 수 있다.
탐색부(220)는 T의 접두사
Figure 112015061387353-pat00194
Figure 112015061387353-pat00195
에 대해서 각각 P와 순서동형인 부분서열이 있는지 검사한다(320). 접두사
Figure 112015061387353-pat00196
에서 P와 순서동형인 부분서열을 찾는 과정은 다음과 같다.
Figure 112015061387353-pat00197
부터
Figure 112015061387353-pat00198
까지 역순으로 각 문자
Figure 112015061387353-pat00199
Figure 112015061387353-pat00200
Figure 112015061387353-pat00201
에 순서대로 삽입한다.
Figure 112015061387353-pat00202
를 삽입한 후,
Figure 112015061387353-pat00203
로부터
Figure 112015061387353-pat00204
를 첫 번째 문자,
Figure 112015061387353-pat00205
를 마지막 문자로 하는
Figure 112015061387353-pat00206
를 구하고,
Figure 112015061387353-pat00207
와 P가 순서동형일 경우
Figure 112015061387353-pat00208
를 출력한다.
Figure 112015061387353-pat00209
에 포함된 부분서열을 찾는 과정이 끝난 후
Figure 112015061387353-pat00210
Figure 112015061387353-pat00211
에 저장된 원소들은 모두 삭제한다.
이제
Figure 112015061387353-pat00212
Figure 112015061387353-pat00213
Figure 112015061387353-pat00214
에 삽입하고, P와 순서동형인
Figure 112015061387353-pat00215
를 구하는 과정을 자세히 살펴보자.
Figure 112015061387353-pat00216
를 삽입할 때, 짝(pair)
Figure 112015061387353-pat00217
Figure 112015061387353-pat00218
에 삽입하고, 짝
Figure 112015061387353-pat00219
Figure 112015061387353-pat00220
에 삽입한다. 순위통계트리는 각 짝의 첫 번째 원소를 기준으로 정렬하고 연산을 수행한다.
Figure 112015061387353-pat00221
의 값을
Figure 112015061387353-pat00222
이라고 하자.
Figure 112015061387353-pat00223
를 삽입한 후
Figure 112015061387353-pat00224
에서
Figure 112015061387353-pat00225
의 순위
Figure 112015061387353-pat00226
과 순위가 1인 원소
Figure 112015061387353-pat00227
를 구한다. 만약
Figure 112015061387353-pat00228
일 경우,
Figure 112015061387353-pat00229
에서
Figure 112015061387353-pat00230
를 삭제하고,
Figure 112015061387353-pat00231
에서
Figure 112015061387353-pat00232
를 삭제한다. 다음으로
Figure 112015061387353-pat00233
의 원소의 개수가 m보다 클 경우,
Figure 112015061387353-pat00234
에서 순위가 m+1, 즉 가장 큰 원소
Figure 112015061387353-pat00235
를 구하고,
Figure 112015061387353-pat00236
Figure 112015061387353-pat00237
에서 각각
Figure 112015061387353-pat00238
Figure 112015061387353-pat00239
를 삭제한다. 마지막으로
Figure 112015061387353-pat00240
의 원소의 개수가 m이고,
Figure 112015061387353-pat00241
를 포함하고 있는 경우,
Figure 112015061387353-pat00242
트리를 중위순회(inorder traversal)하여 위치순으로 정렬된
Figure 112015061387353-pat00243
를 얻는다.
Figure 112015061387353-pat00244
가 존재할 경우 앞에서 설명한 바와 같이,
Figure 112015061387353-pat00245
를 이용하여
Figure 112015061387353-pat00246
와 P가 순서동형인지 판단하고, 순서동형일 경우
Figure 112015061387353-pat00247
를 출력한다.
위 과정이
Figure 112015061387353-pat00248
를 첫 번째 문자,
Figure 112015061387353-pat00249
를 마지막 문자로 하는
Figure 112015061387353-pat00250
가 포함된 직사각형 영역을 올바르게 구하는지 생각해보자. P와 순서동형이기 위해서는
Figure 112015061387353-pat00251
를 기준으로 직사각형 영역을 그렸을 때, 영역 안에
Figure 112015061387353-pat00252
보다 작은 원소의 개수가
Figure 112015061387353-pat00253
개,
Figure 112015061387353-pat00254
보다 큰 원소의 개수는
Figure 112015061387353-pat00255
개가 되어야 한다. 이는 곧
Figure 112015061387353-pat00256
이고
Figure 112015061387353-pat00257
의 원소의 개수가 m보다 작거나 같아야 한다는 것을 의미한다. 따라서 알고리즘은
Figure 112015061387353-pat00258
가 포함된 직사각형 영역을 올바르게 구한다.
다음으로 도 1에서 P가
Figure 112015061387353-pat00259
에서
Figure 112015061387353-pat00260
와 매치되는 과정을 살펴보자. 접미사
Figure 112015061387353-pat00261
에 포함된 부분서열을 찾는 단계에서 알고리즘은
Figure 112015061387353-pat00262
부터
Figure 112015061387353-pat00263
까지 차례대로 무자를
Figure 112015061387353-pat00264
Figure 112015061387353-pat00265
에 삽입한다.
Figure 112015061387353-pat00266
은 삭제연산 없이 삽입되며,
Figure 112015061387353-pat00267
을 삽입한 후,
Figure 112015061387353-pat00268
의 순위는
Figure 112015061387353-pat00269
가 된다.
Figure 112015061387353-pat00270
의 값은
Figure 112015061387353-pat00271
이고,
Figure 112015061387353-pat00272
이므로, 순위가 1인 원소
Figure 112015061387353-pat00273
Figure 112015061387353-pat00274
Figure 112015061387353-pat00275
에서 삭제된다. 마찬가지로,
Figure 112015061387353-pat00276
가 삽입된 후
Figure 112015061387353-pat00277
이 삭제된다. 이 후 삭제연산 없이
Figure 112015061387353-pat00278
가 삽입된다.
Figure 112015061387353-pat00279
가 삽입된 후
Figure 112015061387353-pat00280
트리의 원소의 개수가
Figure 112015061387353-pat00281
가 되고
Figure 112015061387353-pat00282
에서 가장 큰 원소인
Figure 112015061387353-pat00283
가 삭제된다. 마찬가지로
Figure 112015061387353-pat00284
이 삽입되고
Figure 112015061387353-pat00285
이 삭제된다.
Figure 112015061387353-pat00286
를 삽입한 후,
Figure 112015061387353-pat00287
이므로
Figure 112015061387353-pat00288
에서 순위가 1인 원소인
Figure 112015061387353-pat00289
이 삭제된다. 삭제 후
Figure 112015061387353-pat00290
의 원소의 개수가 m이고
Figure 112015061387353-pat00291
Figure 112015061387353-pat00292
에 포함되어 있으므로
Figure 112015061387353-pat00293
를 중위순회하여
Figure 112015061387353-pat00294
을 구하고, P와 순서동형인지 판단한다. 둘은 순서동형이므로
Figure 112015061387353-pat00295
를 출력한다.
마지막으로 알고리즘의 시간복잡도를 살펴보자. 전처리 단계는 앞서 설명하대로
Figure 112015061387353-pat00296
시간이 걸린다. 탐색단계는 n-m+1개의 접두사에 대해서 각 접두사의 문자들을
Figure 112015061387353-pat00297
Figure 112015061387353-pat00298
에 삽입하는 총
Figure 112015061387353-pat00299
단계가 존재한다.
Figure 112015061387353-pat00300
개의 각 단계에서 가장 많은 시간이 걸리는 연산은 중위순회와 순서동형을 판단하는 부분이고,
Figure 112015061387353-pat00301
Figure 112015061387353-pat00302
에 포함된 원소의 개수는 최대 m+1이므로 이를 수행하기 위해서는
Figure 112015061387353-pat00303
시간이 걸린다. 따라서 탐색단계는 총
Figure 112015061387353-pat00304
시간이 걸린다. 그러므로 사각망 순열패턴매칭 알고리즘은 총
Figure 112015061387353-pat00305
시간이 걸린다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, 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 (8)

  1. 사각망 순열패턴매칭을 수행하는 방법에 있어서,
    상수시간에 비교가능한 문자집합을 나타내는
    Figure 112016025290357-pat00306
    상의 패턴
    Figure 112016025290357-pat00307
    와 텍스트
    Figure 112016025290357-pat00308
    가 주어짐에 따라,
    Figure 112016025290357-pat00309
    Figure 112016025290357-pat00310
    를 획득하고, 빈 순위통계트리
    Figure 112016025290357-pat00311
    Figure 112016025290357-pat00312
    를 생성하는 전처리 단계; 및
    상기 T의 접두사
    Figure 112016025290357-pat00313
    Figure 112016025290357-pat00314
    에 대하여 각각의 P와 순서동형인 부분서열이 있는지 여부를 검사하는 탐색 단계
    를 포함하고,
    상기 m은 상기 패턴 P의 길이, 상기 n은 상기 텍스트 T의 길이이며 m<n인 자연수인
    것을 특징으로 하는 사각망 순열패턴매칭을 수행하는 방법.
  2. 제1항에 있어서,
    상기
    Figure 112016025290357-pat00315
    Figure 112016025290357-pat00316
    를 획득하고, 빈 순위통계트리
    Figure 112016025290357-pat00317
    Figure 112016025290357-pat00318
    를 생성하는 전처리 단계는,
    상기
    Figure 112016025290357-pat00319
    Figure 112016025290357-pat00320
    를 획득함에 따라 상기
    Figure 112016025290357-pat00394
    와 상기
    Figure 112016025290357-pat00395
    를 순위통계트리를 이용하여
    Figure 112016025290357-pat00321
    시간에 도출하는 단계
    를 포함하고,
    상기
    Figure 112016025290357-pat00322
    는,
    상기
    Figure 112016025290357-pat00323
    상에서 P가 주어졌을 때, 각 문자의 순위(rank)를 저장한 서열을 의미하고,
    상기
    Figure 112016025290357-pat00324
    는,
    상기 각 문자의 순위를 저장한 서열로부터 순위별 위치를 저장한 서열을 의미하는 것
    을 포함하는 사각망 순열패턴매칭을 수행하는 방법.
  3. 제1항에 있어서,
    상기 T의 접두사
    Figure 112015061387353-pat00325
    Figure 112015061387353-pat00326
    에 대하여 각각의 P와 순서동형인 부분서열이 있는지 여부를 검사하는 탐색 단계는,
    Figure 112015061387353-pat00327
    부터
    Figure 112015061387353-pat00328
    까지 역순으로 각각의 문자
    Figure 112015061387353-pat00329
    Figure 112015061387353-pat00330
    Figure 112015061387353-pat00331
    에 순서대로 삽입하는 단계;
    Figure 112015061387353-pat00332
    를 삽입한 후, 상기
    Figure 112015061387353-pat00333
    로부터
    Figure 112015061387353-pat00334
    를 첫번째 문자,
    Figure 112015061387353-pat00335
    를 마지막 문자로 하는
    Figure 112015061387353-pat00336
    를 획득하고, 상기
    Figure 112015061387353-pat00337
    와 상기 P가 순서동형일 경우
    Figure 112015061387353-pat00338
    를 출력하는 단계; 및
    Figure 112015061387353-pat00339
    에 포함된 부분서열을 찾는 과정이 끝난 후 상기
    Figure 112015061387353-pat00340
    과 상기
    Figure 112015061387353-pat00341
    에 저장된 원소들을 삭제하는 단계
    를 포함하는 사각망 순열패턴매칭을 수행하는 방법.
  4. 제3항에 있어서,
    상기 T의 접두사
    Figure 112016025290357-pat00342
    Figure 112016025290357-pat00343
    에 대하여 각각의 P와 순서동형인 부분서열이 있는지 여부를 검사하는 탐색 단계는,
    상기
    Figure 112016025290357-pat00344
    를 삽입할 경우, 짝(pair)
    Figure 112016025290357-pat00345
    Figure 112016025290357-pat00346
    에 삽입하고, 짝
    Figure 112016025290357-pat00347
    Figure 112016025290357-pat00348
    에 삽입하는 단계; 및
    Figure 112016025290357-pat00349
    의 값을
    Figure 112016025290357-pat00350
    이라고 정의하고, 상기
    Figure 112016025290357-pat00351
    를 삽입한 후 상기
    Figure 112016025290357-pat00352
    에서
    Figure 112016025290357-pat00353
    의 순위
    Figure 112016025290357-pat00354
    과 순위가 1인 원소
    Figure 112016025290357-pat00355
    를 도출하되,
    Figure 112016025290357-pat00356
    일 경우, 상기
    Figure 112016025290357-pat00357
    에서
    Figure 112016025290357-pat00358
    를 삭제하고 상기
    Figure 112016025290357-pat00359
    에서
    Figure 112016025290357-pat00360
    를 삭제하는 단계
    를 포함하고,
    상기 k는, n보다 작은 임의의 자연수를 의미하는
    것을 특징으로 하는 사각망 순열패턴매칭을 수행하는 방법.
  5. 제4항에 있어서,
    상기 T의 접두사
    Figure 112016025290357-pat00361
    Figure 112016025290357-pat00362
    에 대하여 각각의 P와 순서동형인 부분서열이 있는지 여부를 검사하는 탐색 단계는,
    상기
    Figure 112016025290357-pat00363
    의 원소의 개수가 m보다 클 경우,
    Figure 112016025290357-pat00364
    에서 순위가 m+1인 가장 큰 원소
    Figure 112016025290357-pat00365
    를 구하고, 상기
    Figure 112016025290357-pat00366
    과 상기
    Figure 112016025290357-pat00367
    에서 각각
    Figure 112016025290357-pat00368
    Figure 112016025290357-pat00369
    를 삭제하는 단계
    를 포함하고,
    상기 k는, 상기 n보다 작은 임의의 자연수를 의미하는
    것을 특징으로 하는 사각망 순열패턴매칭을 수행하는 방법.
  6. 제4항에 있어서,
    상기 T의 접두사
    Figure 112015061387353-pat00370
    Figure 112015061387353-pat00371
    에 대하여 각각의 P와 순서동형인 부분서열이 있는지 여부를 검사하는 탐색 단계는,
    상기
    Figure 112015061387353-pat00372
    의 원소의 개수가 m이고,
    Figure 112015061387353-pat00373
    를 포함하고 있는 경우,
    Figure 112015061387353-pat00374
    트리를 중위순회(inorder traversal)하여 위치순으로 정렬된
    Figure 112015061387353-pat00375
    를 출력하는 단계
    를 포함하는 사각망 순열패턴매칭을 수행하는 방법.
  7. 제1항에 있어서,
    상기 사각망 순열패턴매칭을 수행하는 방법에서 시간복잡도는,
    상기 전처리 단계에서
    Figure 112015061387353-pat00376
    시간이 소요되고, 상기 탐색단계에서
    Figure 112015061387353-pat00377
    시간이 소요되는
    것을 특징으로 하는 사각망 순열패턴매칭을 수행하는 방법.
  8. 사각망 순열패턴매칭을 위한 수행하는 장치에 있어서,
    상수시간에 비교가능한 문자집합을 나타내는
    Figure 112016025290357-pat00378
    상의 패턴
    Figure 112016025290357-pat00379
    와 텍스트
    Figure 112016025290357-pat00380
    가 주어짐에 따라,
    Figure 112016025290357-pat00381
    Figure 112016025290357-pat00382
    를 획득하고, 빈 순위통계트리
    Figure 112016025290357-pat00383
    Figure 112016025290357-pat00384
    를 생성하는 전처리부; 및
    T의 접두사
    Figure 112016025290357-pat00385
    Figure 112016025290357-pat00386
    에 대하여 각각의 P와 순서동형인 부분서열이 있는지 여부를 검사하는 탐색부
    를 포함하고,
    상기 m은 상기 패턴 P의 길이, 상기 n은 상기 텍스트 T의 길이이며 m<n인 자연수인
    것을 특징으로 하는 사각망 순열패턴매칭을 수행하는 장치.
KR1020150090010A 2015-06-24 2015-06-24 사각망 순열패턴매칭을 위한 효율적인 알고리즘 KR101626721B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150090010A KR101626721B1 (ko) 2015-06-24 2015-06-24 사각망 순열패턴매칭을 위한 효율적인 알고리즘

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150090010A KR101626721B1 (ko) 2015-06-24 2015-06-24 사각망 순열패턴매칭을 위한 효율적인 알고리즘

Publications (1)

Publication Number Publication Date
KR101626721B1 true KR101626721B1 (ko) 2016-06-02

Family

ID=56135833

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150090010A KR101626721B1 (ko) 2015-06-24 2015-06-24 사각망 순열패턴매칭을 위한 효율적인 알고리즘

Country Status (1)

Country Link
KR (1) KR101626721B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190048100A (ko) * 2017-10-30 2019-05-09 인하대학교 산학협력단 사각망 순열패턴매칭을 위한 병렬 알고리즘

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Antti Airola et al., "An Improved Training Algorithm for the Linear Ranking Support Vector Machine", Artificial Neural Networks and Machine Learning - ICANN 2011, 2011.06., pp. 134-141. *
Antti Airola, "Training linear ranking SVMs in linearithmic time using red-black trees", Pattern Recognition Letters, Volume 32, Issue 9, 1 July 2011, Pages 1328~1336. *
Prosenjit Bose et al., "PATTERN MATCHING FOR PERMUTATIONS", Algorithms and Data Structures, 1993, pp. 1-10. *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190048100A (ko) * 2017-10-30 2019-05-09 인하대학교 산학협력단 사각망 순열패턴매칭을 위한 병렬 알고리즘
KR102050372B1 (ko) 2017-10-30 2019-11-29 인하대학교 산학협력단 사각망 순열패턴매칭을 위한 병렬 알고리즘

Similar Documents

Publication Publication Date Title
US10540350B2 (en) Source code search engine
CN107545071B (zh) 一种字符串匹配的方法和装置
KR101662957B1 (ko) 해싱기반의 순위다중패턴매칭 방법
US20180159830A1 (en) Obfuscating Source Code Sent, from a Server Computer, to a Browser on a Client Computer
CN110168548A (zh) 编译设备和方法
JP2019091257A (ja) 情報処理装置、情報処理方法及びプログラム
CN108875914B (zh) 对神经网络数据进行预处理和后处理的方法和装置
CN108628907A (zh) 一种用于基于Aho-Corasick的Trie树多关键词匹配的方法
CN116822422A (zh) 数字逻辑电路的分析优化方法及相关设备
US10719982B2 (en) Surface extrction method, apparatus, and non-transitory computer readable storage medium thereof
KR101626721B1 (ko) 사각망 순열패턴매칭을 위한 효율적인 알고리즘
JP6239273B2 (ja) 圧縮水平順序付けエッジシーケンス符号化のためのシステム及び方法
KR101991579B1 (ko) Z-함수를 이용한 순위패턴매칭과 순위다중패턴매칭 병렬 계산 방법
JP6418658B2 (ja) 情報処理装置、情報処理方法、及びプログラム
US9529835B2 (en) Online compression for limited sequence length radix tree
CN105095276B (zh) 一种挖掘最大重复序列的方法及装置
KR101769247B1 (ko) 계층적 인터벌 트리를 이용한 문자열 비교 방법 및 장치
JP6005583B2 (ja) 検索装置、検索方法および検索プログラム
Freire et al. Enhancing the sparse matrix storage using reordering techniques
KR102050372B1 (ko) 사각망 순열패턴매칭을 위한 병렬 알고리즘
KR102190285B1 (ko) 공간효율적인 순위다중패턴매칭 알고리즘
KR102158317B1 (ko) 2차 q-그램에 대한 핑거프린트를 이용한 순위패턴매칭 알고리즘
CN113010882B (zh) 一种适用于缓存丢失攻击的自定义位置顺序模式匹配方法
KR102233217B1 (ko) 분할순위패턴매칭 알고리즘
JP6453685B2 (ja) 演算制御装置、演算制御方法及び演算制御プログラム

Legal Events

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

Payment date: 20190408

Year of fee payment: 4