KR20190048100A - 사각망 순열패턴매칭을 위한 병렬 알고리즘 - Google Patents

사각망 순열패턴매칭을 위한 병렬 알고리즘 Download PDF

Info

Publication number
KR20190048100A
KR20190048100A KR1020170142629A KR20170142629A KR20190048100A KR 20190048100 A KR20190048100 A KR 20190048100A KR 1020170142629 A KR1020170142629 A KR 1020170142629A KR 20170142629 A KR20170142629 A KR 20170142629A KR 20190048100 A KR20190048100 A KR 20190048100A
Authority
KR
South Korea
Prior art keywords
rti
array
wow
pattern matching
thread
Prior art date
Application number
KR1020170142629A
Other languages
English (en)
Other versions
KR102050372B1 (ko
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 KR1020170142629A priority Critical patent/KR102050372B1/ko
Publication of KR20190048100A publication Critical patent/KR20190048100A/ko
Application granted granted Critical
Publication of KR102050372B1 publication Critical patent/KR102050372B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/74Image or video pattern matching; Proximity measures in feature spaces
    • G06V10/75Organisation of the matching processes, e.g. simultaneous or sequential comparisons of image or video features; Coarse-fine approaches, e.g. multi-scale approaches; using context analysis; Selection of dictionaries
    • G06V10/757Matching configurations of points or features
    • G06K9/6211
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/22Matching criteria, e.g. proximity measures
    • G06K9/6215

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Medical Informatics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Multimedia (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • General Engineering & Computer Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

사각망 순열패턴매칭을 위한 병렬 알고리즘이 개시된다. 사각망 순열패턴매칭을 위한 방법은, 상수 시간에 비교 가능한 문자 집합을 나타내는
Figure pat00595
상의 텍스트
Figure pat00596
와 패턴
Figure pat00597
가 주어짐에 따라, 길이가
Figure pat00598
인 배열
Figure pat00599
을 정렬하고 정렬된 배열
Figure pat00600
을 이용하여
Figure pat00601
Figure pat00602
을 계산하는 전처리단계; 및 상기 텍스트
Figure pat00603
에 대하여 단계
Figure pat00604
의 각 스텝
Figure pat00605
에서
Figure pat00606
를 증가시키면서 상기 패턴
Figure pat00607
와 순위동형인 사각망 부분서열
Figure pat00608
을 찾는 탐색단계를 포함한다.

Description

사각망 순열패턴매칭을 위한 병렬 알고리즘{PARALLEL ALGORITHM FOR BOXED-MESH PERMUTATION PATTERN MATCHING}
아래의 설명은 사각망 순열패턴매칭을 위한 알고리즘에 관한 것이다.
사각망 순열패턴매칭(boxed-mesh permutation pattern matching)은 순열패턴매칭(permutation pattern matching)의 한 분야로, 텍스트
Figure pat00001
와 패턴
Figure pat00002
가 주어졌을 때 P와 순위동형인 T의 모든 사각망 부분서열(boxed subsequence)을 찾는 문제이다. 순위동형(order-isomorphism)이란 대소 비교가 가능한 문자들로 구성된 두 문자열의 상대적인 순위가 같음을 말한다.
사각망 순열(boxed-mesh permutation)은 순열패턴매칭에서 처음으로 정의되었고 패턴회피(pattern avoidance) 측면에서 연구되었다. 사각망 순열패턴매칭 문제에 대해
Figure pat00003
시간에 해결하는 알고리즘이 먼저 제시되고 이후
Figure pat00004
시간에 해결하는 알고리즘과
Figure pat00005
시간에 해결하는 알고리즘이 제시되었다.
예컨대, 한국등록특허 제10-1626721호(등록일 2016년 05월 26일)에는 순위통계트리(order-statistics tree)를 이용하여 종래의 결과보다 개선된 시간에 사각망 순열패턴매칭 문제를 해결하는 알고리즘이 개시되어 있다.
최근에는
Figure pat00006
시간과
Figure pat00007
의 공간을 이용하여 사각망 순열패턴매칭 문제를 해결하는 최적 알고리즘과,
Figure pat00008
시간과
Figure pat00009
공간을 이용하여 사각망 순열패턴매칭 문제를 해결하는 알고리즘이 제시되었다.
한편, GPU(graphic process unit)의 성능이 향상되면서 GPU를 범용 계산(general propose)에도 활용한 연구가 진행되고 있다. GPU 범용 계산의 일례로는 문서 유사도 계산을 병렬화하는 방법이다. 다른 예로는 편집거리 계산을 위한 공간 효율적인 4-러시안 알고리즘 기반 병렬 알고리즘이 알려져 있다. 상기한 병렬 알고리즘들이 순차 알고리즘보다 빠른 수행 시간을 보이고 있다.
최근 순열패턴매칭에서는 연속된 순열패턴(consecutive permutation pattern)에 대한 문제를 SSE 4.2(streaming SIMD extensions)와 AVX(Advance vector extensions) 명령어를 이용하여 해결하는 병렬 알고리즘이 알려져 있다.
사각망 순열패턴매칭 문제를 해결하기 위한 병렬 알고리즘을 제공한다.
사각망 순열패턴매칭 문제에 대해
Figure pat00010
개의 스레드를 이용하여
Figure pat00011
시간에 해결하는 병렬 알고리즘을 제공한다.
사각망 순열패턴매칭 문제에 대해
Figure pat00012
개의 스레드를 이용하여
Figure pat00013
시간에 해결하는 병렬 알고리즘을 제공한다.
상수 시간에 비교 가능한 문자 집합을 나타내는
Figure pat00014
상의 텍스트
Figure pat00015
와 패턴
Figure pat00016
가 주어짐에 따라, 길이가
Figure pat00017
인 배열
Figure pat00018
을 정렬하고 정렬된 배열
Figure pat00019
을 이용하여
Figure pat00020
Figure pat00021
을 계산하는 전처리단계; 및 상기 텍스트
Figure pat00022
에 대하여 단계
Figure pat00023
의 각 스텝
Figure pat00024
에서
Figure pat00025
를 증가시키면서 상기 패턴
Figure pat00026
와 순위동형인 사각망 부분서열
Figure pat00027
을 찾는 탐색단계를 포함하는 사각망 순열패턴매칭을 위한 방법을 제공한다.
일 측면에 따르면, 상기 전처리단계는,
Figure pat00028
개의 스레드를 이용하여 의사코드 전처리(Preprocessing)을 수행하는 것으로, 상기 배열
Figure pat00029
에 짝
Figure pat00030
형태로 저장하고 상기 배열
Figure pat00031
을 상기 짝의 첫 번째 원소를 기준으로 병렬 바이토닉 정렬(bitonic sort)을 이용하여 정렬한 후 정렬된 배열
Figure pat00032
을 이용하여 상기
Figure pat00033
와 상기
Figure pat00034
을 계산할 수 있다.
다른 측면에 따르면, 상기 탐색단계는, 서로 독립적인 각 단계
Figure pat00035
마다 스레드
Figure pat00036
를 이용하여 스텝
Figure pat00037
를 계산할 수 있다.
또 다른 측면에 따르면, 상기 탐색단계는, 상기 사각망 부분서열
Figure pat00038
을 관리하기 위해 짝
Figure pat00039
을 저장하는 배열
Figure pat00040
와 짝
Figure pat00041
를 저장하는 배열
Figure pat00042
를 사용하는 단계; 스텝
Figure pat00043
에서 상기 배열
Figure pat00044
,
Figure pat00045
에 각각
Figure pat00046
,
Figure pat00047
를 삽입하는 단계; 상기 사각망 부분서열
Figure pat00048
Figure pat00049
의 순위를
Figure pat00050
의 순위와 같도록 상기 사각망 부분서열
Figure pat00051
를 보정하는 단계; 및 상기 배열
Figure pat00052
와 상기
Figure pat00053
에 대해 상기 사각망 부분서열
Figure pat00054
이 상기 패턴
Figure pat00055
와 순위동형인지 확인하는 단계를 포함할 수 있다.
또 다른 측면에 따르면, 상기 보정하는 단계는, 상기 사각망 부분서열
Figure pat00056
에서
Figure pat00057
의 순위가
Figure pat00058
의 순위보다 높으면 상기 배열
Figure pat00059
에서 순위가 가장 낮은 원소
Figure pat00060
를 포함하는 짝
Figure pat00061
Figure pat00062
를 상기 배열
Figure pat00063
Figure pat00064
에서 각각 삭제하고,
Figure pat00065
의 순위가
Figure pat00066
의 순위보다 높지 않으면 상기 배열
Figure pat00067
에서 순위가 가장 높은 원소
Figure pat00068
를 포함하는 짝
Figure pat00069
Figure pat00070
를 상기 배열
Figure pat00071
Figure pat00072
에서 각각 삭제하는 단계를 포함할 수 있다.
또 다른 측면에 따르면, 상기 탐색단계는,
Figure pat00073
개의 스레드 그룹
Figure pat00074
를 이용하여 단계
Figure pat00075
를 계산할 수 있다.
또 다른 측면에 따르면, 상기 탐색단계는, 상기 사각망 부분서열
Figure pat00076
을 관리하기 위해 짝
Figure pat00077
을 저장하는 배열
Figure pat00078
와 짝
Figure pat00079
를 저장하는 배열
Figure pat00080
를 사용하는 단계; 상기 스레드 그룹
Figure pat00081
를 이용하여 상기 배열
Figure pat00082
Figure pat00083
Figure pat00084
에 대한 각각의 짝
Figure pat00085
,
Figure pat00086
Figure pat00087
을 삽입하는 단계; 상기 배열
Figure pat00088
와 상기
Figure pat00089
에 대해 상기 사각망 부분서열
Figure pat00090
이 상기 패턴
Figure pat00091
와 순위동형인지 확인하는 단계; 및 스텝
Figure pat00092
에서
Figure pat00093
를 증가시키면서 크기를
Figure pat00094
으로 유지하고
Figure pat00095
를 포함하는 상기 사각망 부분서열
Figure pat00096
을 탐색하는 단계를 포함할 수 있다.
또 다른 측면에 따르면, 상기 각각의 짝
Figure pat00097
,
Figure pat00098
Figure pat00099
을 삽입하는 단계는, 상기 배열
Figure pat00100
의 첫 번째 원소에 대해
Figure pat00101
인 스레드
Figure pat00102
는 임시 배열
Figure pat00103
Figure pat00104
을 저장하고,
Figure pat00105
인 스레드 중에서
Figure pat00106
인 스레드
Figure pat00107
가 존재하면
Figure pat00108
Figure pat00109
를 저장하고,
Figure pat00110
인 스레드 중에서
Figure pat00111
인 스레드
Figure pat00112
가 존재하지 않으면
Figure pat00113
Figure pat00114
를 저장하는 단계를 포함할 수 있다.
또 다른 측면에 따르면, 상기 탐색단계는, 상기 사각망 부분서열
Figure pat00115
Figure pat00116
의 순위를
Figure pat00117
의 순위와 같도록 상기 사각망 부분서열
Figure pat00118
를 보정하는 단계를 더 포함할 수 있다.
또 다른 측면에 따르면, 상기 보정하는 단계는, 상기 사각망 부분서열
Figure pat00119
에서
Figure pat00120
의 순위가
Figure pat00121
의 순위보다 높으면 상기 배열
Figure pat00122
에서 순위가 가장 낮은 원소
Figure pat00123
를 포함하는 짝
Figure pat00124
Figure pat00125
를 상기 배열
Figure pat00126
Figure pat00127
에서 각각 삭제하고,
Figure pat00128
의 순위가
Figure pat00129
의 순위보다 높지 않으면 상기 배열
Figure pat00130
에서 순위가 가장 높은 원소
Figure pat00131
를 포함하는 짝
Figure pat00132
Figure pat00133
를 상기 배열
Figure pat00134
Figure pat00135
에서 각각 삭제하는 단계를 포함할 수 있다.
본 발명의 실시예들에 따르면,
Figure pat00136
개의 스레드를 이용하여
Figure pat00137
시간에 해결하는 병렬 알고리즘을 통해 사각망 순열패턴매칭 문제를 해결할 수 있다.
본 발명의 실시예들에 따르면,
Figure pat00138
개의 스레드를 이용하여
Figure pat00139
시간에 해결하는 병렬 알고리즘을 통해 사각망 순열패턴매칭 문제를 해결할 수 있다.
도 1은 본 발명의 일실시예에 있어서 사각망 순열패턴을 설명하기 위한 예시 도면이다.
도 2는 본 발명의 일실시예에 있어서 사각망 순열패턴매칭 문제를 해결하기 위한 병렬 알고리즘의 전처리단계를 도시한 것이다.
도 3은 본 발명의 일실시예에 있어서 사각망 순열패턴매칭 문제를 해결하기 위한 병렬 알고리즘의 탐색단계의 일례를 도시한 것이다.
도 4는 본 발명의 일실시예에 있어서 사각망 순열패턴매칭 문제를 해결하기 위한 병렬 알고리즘의 탐색단계의 다른 예를 도시한 것이다.
도 5는 본 발명의 일실시예에 있어서 탐색단계에서의 삽입 연산을 설명하기 위한 예시 도면이다.
도 6은 본 발명의 일실시예에 있어서 탐색단계에서의(또는 탐색단계의 보정하는 단계에서의) 삭제 연산을 설명하기 위한 예시 도면이다.
이하, 본 발명의 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
사각망 순열패턴매칭은 텍스트
Figure pat00140
와 패턴
Figure pat00141
가 주어졌을 때, P와 순위동형인 T의 모든 사각망 부분서열을 찾는 문제이다. 본 실시예들은 사각망 순열패턴매칭 문제를 해결하는 두 가지 병렬 알고리즘을 제공한다. 즉, 이 문제에 대해
Figure pat00142
개의 스레드를 사용하여
Figure pat00143
시간에 해결하는 병렬 알고리즘과
Figure pat00144
개의 스레드를 사용하여
Figure pat00145
시간에 해결하는 병렬 알고리즘을 제시한다.
먼저, 관련 용어와 문제를 정의한다.
Figure pat00146
는 상수시간에 대소 비교가 가능한 문자집합을 나타낸다.
Figure pat00147
로 구성된 문자열들의 집합을
Figure pat00148
로 표기한다. 문자열
Figure pat00149
의 길이를
Figure pat00150
로,
Figure pat00151
Figure pat00152
번째 문자를
Figure pat00153
로 표기한다. 문자열
Figure pat00154
안에 포함된 모든 문자들은 서로 다르다고 가정한다. 문자열
Figure pat00155
Figure pat00156
번째부터
Figure pat00157
번째까지의 부분문자열을
Figure pat00158
로 표기한다.
Figure pat00159
Figure pat00160
Figure pat00161
번째 접두사(prefix)라 하고,
Figure pat00162
Figure pat00163
Figure pat00164
번째 접미사(suffix)라 한다.
문자열
Figure pat00165
가 주어졌을 때,
Figure pat00166
의 각 문자의 순위(rank)를 저장한 서열을 순열(permutation)
Figure pat00167
,
Figure pat00168
의 순위별 위치를 저장한 서열을
Figure pat00169
라 하자. 즉,
Figure pat00170
로,
Figure pat00171
일 때
Figure pat00172
로 정의된다. 예를 들어,
Figure pat00173
일 때,
Figure pat00174
이다.
Figure pat00175
Figure pat00176
의 문자들을 정렬하거나 순위통계트리(order-statistics tree)를 이용하여
Figure pat00177
시간에 계산될 수 있으며,
Figure pat00178
Figure pat00179
를 이용하여
Figure pat00180
시간에 계산될 수 있다.
길이가 같은 두 문자열
Figure pat00181
,
Figure pat00182
가 주어졌을 때,
Figure pat00183
를 만족하면
Figure pat00184
Figure pat00185
는 순위동형이라 하고,
Figure pat00186
로 표기한다. 이는
Figure pat00187
가 주어졌을 때, 다음의 수학식 1을 만족하는지 확인함으로써
Figure pat00188
시간에 판단할 수 있다.
[수학식 1]
Figure pat00189
순열패턴에서는 주어진 문자열을 좌표평면에 점으로 표시할 수 있다. 문자열
Figure pat00190
Figure pat00191
번째 문자인
Figure pat00192
의 순위
Figure pat00193
Figure pat00194
라 할 때, 2차원 평면에서 점
Figure pat00195
로 표현될 수 있다. 문자열
Figure pat00196
를 나타낸 좌표평면 상에서 축에 평행한 직사각형 영역을
Figure pat00197
이라 하자. 이때, left, right, bottom, top은 각각 영역
Figure pat00198
의 왼쪽, 오른쪽, 아래, 위의 경계선을 나타낸다. 문자열
Figure pat00199
의 사각망 순열은
Figure pat00200
로 정의된다. 이때 영역
Figure pat00201
은 문자열
Figure pat00202
에 대한 2차원 평면상에 나타낸 점들을 모두 포함하는 가장 작은 직사각형 영역이다. 그리고 사각망 순열의 크기는
Figure pat00203
로, 영역
Figure pat00204
에 포함된 점의 수이다. 문자열
Figure pat00205
의 임의의 부분서열
Figure pat00206
중에서 사각망 순열
Figure pat00207
이 정의될 때,
Figure pat00208
Figure pat00209
의 사각망 부분서열(boxed subsequence)이라 한다. 두 사각망 순열
Figure pat00210
Figure pat00211
이 주어졌을 때,
Figure pat00212
이면, 두 사각망 순열은 일치한다고 한다. 즉, 문자열
Figure pat00213
Figure pat00214
가 서로 순위동형이면 두 사각망 순열은 일치한다.
사각망 순열패턴매칭 문제는 텍스트
Figure pat00215
와 패턴
Figure pat00216
가 주어졌을 때, 패턴 P와 순위동형인 텍스트 T의 사각망 부분서열을 모두 찾는 것이다. 예를 들어, 도 1에서
Figure pat00217
에 대한 사각망 순열은
Figure pat00218
이다. T를 표현한 좌표평면에서 영역
Figure pat00219
Figure pat00220
에 포함된 점들의 순열은
Figure pat00221
Figure pat00222
와 일치한다. 도 1에서 회색으로 표시된 영역은 P의 사각망 순열과 일치하는 T의 영역인
Figure pat00223
,
Figure pat00224
를 나타낸다.
기존 알고리즘은 전처리단계와 탐색단계로 구성된다. 전처리단계에서는 수학식 1로 P와 T의 사각망 부분서열이 순위동형인지 판단할 수 있도록, 순위통계트리를 이용하여
Figure pat00225
Figure pat00226
를 계산한다. 사각망 순열의 영역 R의 left의 인덱스를
Figure pat00227
, right의 인덱스를
Figure pat00228
라 하자. 영역 R의 좌우 양 끝이
Figure pat00229
로 결정되었을 때, R에 의해서 결정되는 T의 사각망 부분서열
Figure pat00230
은 P와 많아야 1개가 순위동형이기 때문에, 탐색단계에서는 T의 모든
Figure pat00231
쌍의 사각망 부분서열에 대해 P와 순위동형인지 계산한다. 즉, 단계
Figure pat00232
에서
Figure pat00233
를 증가시키면서
Figure pat00234
에서
Figure pat00235
를 가장 오른쪽 원소로 포함하고 크기가 m이 넘지 않는 모든 사각망 부분서열
Figure pat00236
에 대해 처리한다. 이를 위해 단계
Figure pat00237
의 각 스텝
Figure pat00238
에서
Figure pat00239
를 감소시키면서 가장 왼쪽 원소로
Figure pat00240
와 가장 오른쪽 원소로
Figure pat00241
를 포함하고 P와 순위동형인 사각망 부분서열
Figure pat00242
을 탐색한다. 이때 사각망 부분서열
Figure pat00243
을 위한 2개의 순위통계트리 OST1과 OST2를 이용한다. OST1과 OST2는 각각
Figure pat00244
Figure pat00245
를 원소로 하는 짝(pair)
Figure pat00246
형태로 저장하고 각각 짝의 첫 번째 원소를 기준으로 정렬된다. 세부적으로, 단계
Figure pat00247
의 각 스텝
Figure pat00248
에서 먼저 OST1과 OST2에
Figure pat00249
Figure pat00250
를 각각 삽입한다. 그 다음 사각망 부분서열
Figure pat00251
Figure pat00252
의 순위를
Figure pat00253
의 순위와 같도록 사각망 부분서열
Figure pat00254
을 보정한다. 즉, OST1에서
Figure pat00255
를 탐색하여
Figure pat00256
의 순위가
Figure pat00257
의 순위보다 높으면, OST1과 OST2에서 각각 순위가 가장 낮은 원소
Figure pat00258
를 포함하는 짝
Figure pat00259
Figure pat00260
를 각각 제거하고,
Figure pat00261
의 순위가
Figure pat00262
의 순위보다 높지 않고 원소의 개수가 m보다 크면 OST1과 OST2에서 각각 순위가 가장 높은 원소
Figure pat00263
를 포함하는 짝
Figure pat00264
Figure pat00265
를 각각 제거한다. OST1의 크기가 m이고
Figure pat00266
를 원소로 가지고 있을 때, OST2를 중위순회(inorder traversal)하여 위치 순으로 정렬된
Figure pat00267
을 얻고,
Figure pat00268
Figure pat00269
에 대해 수학식 1을 이용하여
Figure pat00270
과 패턴 P가 순위동형인지 확인한다. 만약
Figure pat00271
이면
Figure pat00272
의 영역 R을 출력한다.
상기한 알고리즘의 시간복잡도는 다음과 같다. 전처리단계에서는 순위통계트리를 이용하여
Figure pat00273
Figure pat00274
Figure pat00275
시간에 계산할 수 있다. 탐색단계에서는 사각망 부분서열
Figure pat00276
을 위한 순위통계트리를 유지하기 때문에, 각 스텝마다 한 원소에 대한 삽입, 삭제, 순위를 찾는 연산은
Figure pat00277
시간에 수행된다.
Figure pat00278
과 P가 순위동형인지는
Figure pat00279
시간에 판단할 수 있다. 한편, 최악의 경우
Figure pat00280
개의 사각망 부분서열
Figure pat00281
과 패턴 P가 순위동형인지를 판단해야 하기 때문에 총 시간복잡도는
Figure pat00282
이다.
이하에서는 사각망 순열패턴매칭 문제를 해결하기 위한 병렬 알고리즘을 구체적으로 설명한다.
본 발명에서는 상기한 알고리즘에서 제시된 아이디어를 바탕으로 사각망 순열패턴매칭 문제를 해결하는 두 가지 병렬 알고리즘을 제시한다. 기존 알고리즘의 탐색단계에서는 각
Figure pat00283
에 대해 마지막 문자인
Figure pat00284
를 고정시키고 역방향으로 탐색을 진행하였다. 한편,
Figure pat00285
에 대해 시작 문자인
Figure pat00286
를 고정시키고 순방향으로 탐색해도 사각망 순열패턴매칭 문제를 해결할 수 있다.
본 발명에 따른 병렬 알고리즘에서는 순방향으로 탐색한다. 단계
Figure pat00287
의 각 스텝
Figure pat00288
에서
Figure pat00289
를 증가시키면서 패턴 P와 순위동형이고 가장 왼쪽 원소로
Figure pat00290
, 가장 오른쪽 원소로
Figure pat00291
를 포함하는 사각망 부분서열
Figure pat00292
을 찾는다. 그리고 사각망 부분서열
Figure pat00293
을 관리하기 위해 순위통계트리 대신 배열과 정렬알고리즘을 사용한다.
병렬 알고리즘 1
스레드 수가
Figure pat00294
일 때, 사각망 순열패턴매칭 문제를
Figure pat00295
시간에 해결하는 병렬 알고리즘을 제시한다. 전처리단계에서는 m개의 스레드를 이용하여 의사코드 전처리(Preprocessing)을 수행한다(도 2 참조). 먼저 길이가 m인 배열
Figure pat00296
에 짝
Figure pat00297
형태로 저장한다. 이때 짝의 첫 번째 원소를
Figure pat00298
, 두 번째 원소를
Figure pat00299
로 표기한다.
Figure pat00300
Figure pat00301
를 기준으로 병렬 바이토닉 정렬(bitonic sort)를 이용하여 정렬하고, 정렬된
Figure pat00302
를 이용하여
Figure pat00303
Figure pat00304
를 계산한다.
도 3을 참조하면, 탐색단계에서는 각 단계
Figure pat00305
가 서로 독립적이므로, 단계
Figure pat00306
마다 스레드
Figure pat00307
를 이용하여 스텝
Figure pat00308
를 계산한다(2번째 줄부터 13번째 줄). 각 스레드
Figure pat00309
Figure pat00310
에서 나타나는 사각망 부분서열
Figure pat00311
을 관리하기 위해
Figure pat00312
와 인덱스
Figure pat00313
를 원소로 하는 짝
Figure pat00314
을 저장하는 배열
Figure pat00315
와 짝
Figure pat00316
를 저장하는 배열
Figure pat00317
를 사용한다(3번째 줄). 배열
Figure pat00318
Figure pat00319
는 각각 짝의 첫 번째 원소를 기준으로, 오름차순으로 정렬된 상태를 유지한다. 세부적으로, 스텝
Figure pat00320
에서 먼저 배열
Figure pat00321
,
Figure pat00322
에 각각
Figure pat00323
,
Figure pat00324
를 삽입한다(5번째 줄).
Figure pat00325
Figure pat00326
를 정렬된 상태로 유지하기 위해 삽입 연산을 삽입정렬(insertion sort)과 같은 방법으로 수행한다. 그 후 사각망 부분서열
Figure pat00327
Figure pat00328
의 순위를
Figure pat00329
의 순위와 같도록 사각망 부분서열
Figure pat00330
를 보정한다. 즉, 사각망 부분서열
Figure pat00331
에서
Figure pat00332
의 순위가
Figure pat00333
의 순위보다 높으면
Figure pat00334
에서 순위가 가장 낮은 원소
Figure pat00335
를 포함하는 짝
Figure pat00336
Figure pat00337
Figure pat00338
,
Figure pat00339
에서 각각 제거하고,
Figure pat00340
의 순위가
Figure pat00341
의 순위보다 높지 않고 원소의 개수가 m보다 크면
Figure pat00342
에서 순위가 가장 높은 원소
Figure pat00343
를 포함하는 짝
Figure pat00344
Figure pat00345
Figure pat00346
,
Figure pat00347
에서 각각 제거한다(6번째 줄부터 11번째 줄). 삭제 연산은 삭제될 짝
Figure pat00348
에 대해 오른쪽에 있는 짝들을 차례대로 왼쪽으로 한 칸씩 이동시키면 된다.
Figure pat00349
이고
Figure pat00350
의 원소로
Figure pat00351
를 가지고 있을 때,
Figure pat00352
과 P가 순위동형인지는
Figure pat00353
Figure pat00354
에 대해 수학식 1을 이용하여 확인한다. 만약
Figure pat00355
이면
Figure pat00356
의 영역
Figure pat00357
을 출력한다(12번째 줄부터 13번째 줄).
상기한 병렬 알고리즘 1의 시간 복잡도는 다음과 같다. 전처리단계에서는 m개의 스레드와 병렬 바이토닉 정렬을 사용하여
Figure pat00358
시간에 길이가 m인 배열을 정렬할 수 있고, 이 배열을 이용하여
Figure pat00359
Figure pat00360
Figure pat00361
시간에 계산할 수 있다. 탐색단계에서 각 스텝은 배열
Figure pat00362
Figure pat00363
에 하나의 원소에 대한 삽입, 삭제, 순위를 찾는 연산, 한 원소가 존재하는지 확인하는 연산과
Figure pat00364
과 P가 순위동형인지 확인하는 연산을 수행한다. 삭제 연산은
Figure pat00365
에서 가장 작은 원소 또는 가장 큰 원소를 포함하는 짝만 삭제한다. 이때 배열
Figure pat00366
가 항상 정렬되어 있기 때문에, 이를 각각
Figure pat00367
시간에 탐색할 수 있다(7번째 줄과 10번째 줄). 삽입 연산과 삭제 연산은
Figure pat00368
시간에 수행될 수 있다. 그리고
Figure pat00369
의 순위를 찾는 연산(6번째 줄)과
Figure pat00370
의 존재여부를 판단하는 연산(12번째 줄)은
Figure pat00371
에서 이진탐색(binary search)를 이용하여
Figure pat00372
시간에 계산할 수 있다. 마지막으로
Figure pat00373
과 P가 순위동형인지는
Figure pat00374
Figure pat00375
에 대해 수학식 1을 이용하므로
Figure pat00376
시간이 소요된다. 각 스레드가 최대
Figure pat00377
개의 스텝을 탐색하고 각 스텝은 최악의 경우
Figure pat00378
시간이 소요되므로 병렬 알고리즘 1의 시간복잡도는
Figure pat00379
이다.
병렬 알고리즘 2
스레드의 수가
Figure pat00380
일 때, 사각망 순열패턴매칭 문제를
Figure pat00381
시간에 해결하는 병렬 알고리즘을 제시한다. m개의 스레드를 스레드 그룹(thread group)이라 하자. 병렬 알고리즘 2는
Figure pat00382
개의 스레드 그룹을 사용하여 스레드 그룹
Figure pat00383
가 단계
Figure pat00384
를 계산한다.
전처리단계는 병렬 알고리즘 1과 동일하게 수행된다(1번째 줄). 도 4를 참조하면, 탐색단계에서는 사각망 부분서열
Figure pat00385
을 위한 길이가 m+1인 배열
Figure pat00386
Figure pat00387
를 사용한다. 각 단계
Figure pat00388
에서 먼저 스레드 그룹
Figure pat00389
를 이용하여
Figure pat00390
Figure pat00391
Figure pat00392
에 대한 각각의 짝
Figure pat00393
,
Figure pat00394
Figure pat00395
을 m개의 스레드를 이용하여 삽입한다. 그리고 패턴 P와 사각망 부분서열
Figure pat00396
이 순위동형인지
Figure pat00397
Figure pat00398
에 대해 수학식 1을 이용하여 확인한다(3번째 줄부터 5번째 줄). 이후 스텝
Figure pat00399
에서
Figure pat00400
를 증가시키면서 크기를 m으로 유지하고
Figure pat00401
를 포함하는 사각망 부분서열
Figure pat00402
을 탐색한다. 세부적으로,
Figure pat00403
Figure pat00404
를 각각 배열
Figure pat00405
Figure pat00406
에 삽입한다(7번째 줄). 삽입 연산은 하나의 스레드 그룹을 이용하여 다음과 같이 수행된다. 정렬된 배열
Figure pat00407
Figure pat00408
보다 작은 원소들과 큰 원소들로 나눌 수 있다(도 5 참조). 도 5에서
Figure pat00409
Figure pat00410
보다 작은 원소들은 수직선 해칭으로, 큰 원소들을 수평선 해칭으로 표시한다.
Figure pat00411
인 각 스레드 t는 임시 배열
Figure pat00412
Figure pat00413
을 저장하고
Figure pat00414
인 스레드 중에서
Figure pat00415
인 스레드 t가 존재하면
Figure pat00416
Figure pat00417
를 저장한다. 만약 그러한 스레드 t가 존재하지 않으면,
Figure pat00418
Figure pat00419
를 저장한다. 그 후
Figure pat00420
인 각 스레드 t는
Figure pat00421
Figure pat00422
을 저장한다.
Figure pat00423
에 대해서도 유사한 방법으로 수행한다. 사각망 부분서열
Figure pat00424
이 패턴 P와 순위동형이 되려면
Figure pat00425
Figure pat00426
의 순위가 같고 길이가 같아야 한다. 따라서
Figure pat00427
의 순위가
Figure pat00428
의 순위보다 높으면 배열
Figure pat00429
에서 순위가 가장 낮은 원소
Figure pat00430
를 포함하는 짝
Figure pat00431
Figure pat00432
를 각각
Figure pat00433
,
Figure pat00434
에서 삭제하고, 그렇지 않으면 배열
Figure pat00435
에서 순위가 가장 높은 원소
Figure pat00436
를 포함하는 짝
Figure pat00437
Figure pat00438
를 각각
Figure pat00439
,
Figure pat00440
에서 삭제한다(9번째 줄부터 11번째 줄). 도 6은
Figure pat00441
에서의 사선 해칭으로 표시한 하나의 원소를 삭제하는 연산을 보여준다. 이때 삭제연산은 하나의 스레드 그룹을 이용하여 각 스레드
Figure pat00442
가 삭제할 원소보다 큰 원소를 가진 t에 대해서
Figure pat00443
Figure pat00444
로 옮기면 된다.
Figure pat00445
에 대해서도 유사한 방법으로 수행한다. 그리고
Figure pat00446
의 순위를 찾는 연산은 각 스레드 t가 배열
Figure pat00447
의 원소와
Figure pat00448
가 일치하는 인덱스 t를 반환하면 된다. 이후에
Figure pat00449
가 사각망 부분서열
Figure pat00450
에 존재하는지만 확인한다. 만약 앞의 조건이 참이면 m개의 스레드를 이용하여
Figure pat00451
Figure pat00452
에 대해 수학식 1을 병렬적으로 확인하고,
Figure pat00453
이면
Figure pat00454
의 영역
Figure pat00455
를 출력한다(13번째 줄부터 14번째 줄).
상기한 병렬 알고리즘 2의 시간 복잡도를 분석하면 다음과 같다. 전처리단계는 병렬 알고리즘 1과 같다. 탐색단계에서는 처음
Figure pat00456
에 대한 m개의 짝을 배열
Figure pat00457
Figure pat00458
에 삽입하는 것은 m개의 스레드와 바이토닉 정렬을 사용하여
Figure pat00459
시간에 계산할 수 있다. 이후 스텝
Figure pat00460
에서 하나의 원소에 대한 삽입, 삭제, 순위를 찾는 연산은 m개의 스레드를 이용하여
Figure pat00461
시간에 처리할 수 있다. 또한
Figure pat00462
과 P의 순위동형 판단은
Figure pat00463
,
Figure pat00464
에 대한 수학식 1과 m개의 스레드를 이용하여
Figure pat00465
시간에 계산할 수 있다. 따라서 하나의 스텝을
Figure pat00466
시간에 처리할 수 있다. 각 단계는 최대
Figure pat00467
개의 스텝이 존재하므로, 병렬 알고리즘 2의 시간복잡도는
Figure pat00468
이다.
이처럼 본 발명의 실시예들에 따르면,
Figure pat00469
개의 스레드를 이용하여
Figure pat00470
시간에 사각망 순열패턴매칭 문제를 해결할 수 있다. 또한, 본 발명의 실시예들에 따르면,
Figure pat00471
개의 스레드를 이용하여
Figure pat00472
시간에 사각망 순열패턴매칭 문제를 해결할 수 있다.
본 발명에 따른 사각망 순열패턴매칭 문제를 해결하기 위한 병렬 알고리즘은 도 1 내지 도 6을 통해 설명한 상세 내용을 바탕으로 둘 이상의 동작들을 포함할 수 있다. 상기한 알고리즘은 컴퓨터 시스템을 통해 실행될 수 있으며, 컴퓨터 시스템은 사각망 순열패턴매칭 문제를 해결하기 위한 병렬 알고리즘을 실행하기 위한 구성요소로서, 일례로 프로세서, 메모리, 영구 저장 장치, 버스, 입출력 인터페이스 및 네트워크 인터페이스를 포함할 수 있다.
프로세서는 명령어들의 시퀀스를 처리할 수 있는 임의의 장치를 포함하거나 그의 일부일 수 있다. 프로세서는 예를 들어 컴퓨터 프로세서, 이동 장치 또는 다른 전자 장치 내의 프로세서 및/또는 디지털 프로세서를 포함할 수 있다. 프로세서는 예를 들어, 서버 컴퓨팅 디바이스, 서버 컴퓨터, 일련의 서버 컴퓨터들, 서버 팜, 클라우드 컴퓨터, 컨텐츠 플랫폼, 이동 컴퓨팅 장치, 스마트폰, 태블릿, 셋톱 박스 등에 포함될 수 있다. 프로세서는 버스를 통해 메모리에 접속될 수 있다.
메모리는 컴퓨터 시스템에 의해 사용되거나 그에 의해 출력되는 정보를 저장하기 위한 휘발성 메모리, 영구, 가상 또는 기타 메모리를 포함할 수 있다. 예를 들어, 메모리는 랜덤 액세스 메모리(RAM: random access memory) 및/또는 동적 RAM(DRAM: dynamic RAM)을 포함할 수 있다. 메모리는 컴퓨터 시스템의 상태 정보와 같은 임의의 정보를 저장하는 데 사용될 수 있다. 메모리는 예를 들어 사각망 순열패턴매칭 문제를 해결하기 위한 명령어들을 포함하는 컴퓨터 시스템의 명령어들을 저장하는 데에도 사용될 수 있다. 컴퓨터 시스템은 필요에 따라 또는 적절한 경우에 하나 이상의 프로세서를 포함할 수 있다.
버스는 컴퓨터 시스템의 다양한 컴포넌트들 사이의 상호작용을 가능하게 하는 통신 기반 구조를 포함할 수 있다. 버스는 컴퓨터 시스템의 컴포넌트들 사이에, 예를 들어 프로세서와 메모리 사이에 데이터를 운반할 수 있다. 버스는 컴퓨터 시스템의 컴포넌트들 간의 무선 및/또는 유선 통신 매체를 포함할 수 있으며, 병렬, 직렬 또는 다른 토폴로지 배열들을 포함할 수 있다.
영구 저장 장치는 소정의 연장된 기간 동안 데이터를 저장하기 위해 컴퓨터 시스템에 의해 사용되는 바와 같은 메모리 또는 다른 영구 저장 장치와 같은 컴포넌트들을 포함할 수 있다. 영구 저장 장치는 컴퓨터 시스템 내의 프로세서에 의해 사용되는 바와 같은 비휘발성 메인 메모리를 포함할 수 있다. 예를 들어, 영구 저장 장치는 플래시 메모리, 하드 디스크, 광 디스크 또는 다른 컴퓨터 판독 가능 매체를 포함할 수 있다.
입출력 인터페이스는 키보드, 마우스, 마이크, 카메라, 디스플레이 또는 다른 입력 또는 출력 장치에 대한 인터페이스들을 포함할 수 있다. 구성 명령들 및/또는 사각망 순열패턴매칭 문제를 해결하기 위한 알고리즘의 입력이 입출력 인터페이스를 통해 수신될 수 있다.
네트워크 인터페이스는 근거리 네트워크 또는 인터넷과 같은 네트워크들에 대한 하나 이상의 인터페이스를 포함할 수 있다. 네트워크 인터페이스는 유선 또는 무선 접속들에 대한 인터페이스들을 포함할 수 있다. 구성 명령들은 네트워크 인터페이스를 통해 수신될 수 있다. 그리고, 사각망 순열패턴매칭 문제를 해결하기 위한 알고리즘의 정보들은 네트워크 인터페이스를 통해 수신 또는 송신될 수 있다.
또한, 다른 실시예들에서 컴퓨터 시스템은 상기한 구성요소들보다 더 많은 구성요소들을 포함할 수도 있다. 그러나, 대부분의 종래기술적 구성요소들을 명확하게 도시할 필요성은 없다. 예를 들어, 컴퓨터 시스템은 상술한 입출력 인터페이스와 연결되는 입출력 장치들 중 적어도 일부를 포함하도록 구현되거나 또는 트랜시버(transceiver), GPS(Global Positioning System) 모듈, 카메라, 각종 센서, 데이터베이스 등과 같은 다른 구성요소들을 더 포함할 수도 있다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 프로세서, 콘트롤러, 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), 물리적 장치, 컴퓨터 저장 매체 또는 장치에 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 이때, 매체는 컴퓨터로 실행 가능한 프로그램을 계속 저장하거나, 실행 또는 다운로드를 위해 임시 저장하는 것일 수도 있다. 또한, 매체는 단일 또는 수 개의 하드웨어가 결합된 형태의 다양한 기록수단 또는 저장수단일 수 있는데, 어떤 컴퓨터 시스템에 직접 접속되는 매체에 한정되지 않고, 네트워크 상에 분산 존재하는 것일 수도 있다. 매체의 예시로는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM 및 DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical medium), 및 ROM, RAM, 플래시 메모리 등을 포함하여 프로그램 명령어가 저장되도록 구성된 것이 있을 수 있다. 또한, 다른 매체의 예시로, 어플리케이션을 유통하는 앱 스토어나 기타 다양한 소프트웨어를 공급 내지 유통하는 사이트, 서버 등에서 관리하는 기록매체 내지 저장매체도 들 수 있다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (10)

  1. 사각망 순열패턴매칭(boxed-mesh permutation pattern matching)을 위한 방법에 있어서,
    상수 시간에 비교 가능한 문자 집합을 나타내는
    Figure pat00473
    상의 텍스트
    Figure pat00474
    와 패턴
    Figure pat00475
    가 주어짐에 따라,
    길이가
    Figure pat00476
    인 배열
    Figure pat00477
    을 정렬하고 정렬된 배열
    Figure pat00478
    을 이용하여
    Figure pat00479
    Figure pat00480
    을 계산하는 전처리단계; 및
    상기 텍스트
    Figure pat00481
    에 대하여 단계
    Figure pat00482
    의 각 스텝
    Figure pat00483
    에서
    Figure pat00484
    를 증가시키면서 상기 패턴
    Figure pat00485
    와 순위동형인 사각망 부분서열
    Figure pat00486
    을 찾는 탐색단계
    를 포함하는 사각망 순열패턴매칭을 위한 방법.
  2. 제1항에 있어서,
    상기 전처리단계는,
    Figure pat00487
    개의 스레드를 이용하여 의사코드 전처리(Preprocessing)을 수행하는 것으로,
    상기 배열
    Figure pat00488
    에 짝
    Figure pat00489
    형태로 저장하고 상기 배열
    Figure pat00490
    을 상기 짝의 첫 번째 원소를 기준으로 병렬 바이토닉 정렬(bitonic sort)을 이용하여 정렬한 후 정렬된 배열
    Figure pat00491
    을 이용하여 상기
    Figure pat00492
    와 상기
    Figure pat00493
    을 계산하는 것
    을 특징으로 하는 사각망 순열패턴매칭을 위한 방법.
  3. 제1항에 있어서,
    상기 탐색단계는,
    서로 독립적인 각 단계
    Figure pat00494
    마다 스레드
    Figure pat00495
    를 이용하여 스텝
    Figure pat00496
    를 계산하는 것
    을 특징으로 하는 사각망 순열패턴매칭을 위한 방법.
  4. 제3항에 있어서,
    상기 탐색단계는,
    상기 사각망 부분서열
    Figure pat00497
    을 관리하기 위해 짝
    Figure pat00498
    을 저장하는 배열
    Figure pat00499
    와 짝
    Figure pat00500
    를 저장하는 배열
    Figure pat00501
    를 사용하는 단계;
    스텝
    Figure pat00502
    에서 상기 배열
    Figure pat00503
    ,
    Figure pat00504
    에 각각
    Figure pat00505
    ,
    Figure pat00506
    를 삽입하는 단계;
    상기 사각망 부분서열
    Figure pat00507
    Figure pat00508
    의 순위를
    Figure pat00509
    의 순위와 같도록 상기 사각망 부분서열
    Figure pat00510
    를 보정하는 단계; 및
    상기 배열
    Figure pat00511
    와 상기
    Figure pat00512
    에 대해 상기 사각망 부분서열
    Figure pat00513
    이 상기 패턴
    Figure pat00514
    와 순위동형인지 확인하는 단계
    를 포함하는 사각망 순열패턴매칭을 위한 방법.
  5. 제4항에 있어서,
    상기 보정하는 단계는,
    상기 사각망 부분서열
    Figure pat00515
    에서
    Figure pat00516
    의 순위가
    Figure pat00517
    의 순위보다 높으면 상기 배열
    Figure pat00518
    에서 순위가 가장 낮은 원소
    Figure pat00519
    를 포함하는 짝
    Figure pat00520
    Figure pat00521
    를 상기 배열
    Figure pat00522
    Figure pat00523
    에서 각각 삭제하고,
    Figure pat00524
    의 순위가
    Figure pat00525
    의 순위보다 높지 않으면 상기 배열
    Figure pat00526
    에서 순위가 가장 높은 원소
    Figure pat00527
    를 포함하는 짝
    Figure pat00528
    Figure pat00529
    를 상기 배열
    Figure pat00530
    Figure pat00531
    에서 각각 삭제하는 단계
    를 포함하는 사각망 순열패턴매칭을 위한 방법.
  6. 제1항에 있어서,
    상기 탐색단계는,
    Figure pat00532
    개의 스레드 그룹
    Figure pat00533
    를 이용하여 단계
    Figure pat00534
    를 계산하는 것
    을 특징으로 하는 사각망 순열패턴매칭을 위한 방법.
  7. 제6항에 있어서,
    상기 탐색단계는,
    상기 사각망 부분서열
    Figure pat00535
    을 관리하기 위해 짝
    Figure pat00536
    을 저장하는 배열
    Figure pat00537
    와 짝
    Figure pat00538
    를 저장하는 배열
    Figure pat00539
    를 사용하는 단계;
    상기 스레드 그룹
    Figure pat00540
    를 이용하여 상기 배열
    Figure pat00541
    Figure pat00542
    Figure pat00543
    에 대한 각각의 짝
    Figure pat00544
    ,
    Figure pat00545
    Figure pat00546
    을 삽입하는 단계;
    상기 배열
    Figure pat00547
    와 상기
    Figure pat00548
    에 대해 상기 사각망 부분서열
    Figure pat00549
    이 상기 패턴
    Figure pat00550
    와 순위동형인지 확인하는 단계; 및
    스텝
    Figure pat00551
    에서
    Figure pat00552
    를 증가시키면서 크기를
    Figure pat00553
    으로 유지하고
    Figure pat00554
    를 포함하는 상기 사각망 부분서열
    Figure pat00555
    을 탐색하는 단계
    를 포함하는 사각망 순열패턴매칭을 위한 방법.
  8. 제7항에 있어서,
    상기 각각의 짝
    Figure pat00556
    ,
    Figure pat00557
    Figure pat00558
    을 삽입하는 단계는,
    상기 배열
    Figure pat00559
    의 첫 번째 원소에 대해
    Figure pat00560
    인 스레드
    Figure pat00561
    는 임시 배열
    Figure pat00562
    Figure pat00563
    을 저장하고,
    Figure pat00564
    인 스레드 중에서
    Figure pat00565
    인 스레드
    Figure pat00566
    가 존재하면
    Figure pat00567
    Figure pat00568
    를 저장하고,
    Figure pat00569
    인 스레드 중에서
    Figure pat00570
    인 스레드
    Figure pat00571
    가 존재하지 않으면
    Figure pat00572
    Figure pat00573
    를 저장하는 단계
    를 포함하는 사각망 순열패턴매칭을 위한 방법.
  9. 제7항에 있어서,
    상기 탐색단계는,
    상기 사각망 부분서열
    Figure pat00574
    Figure pat00575
    의 순위를
    Figure pat00576
    의 순위와 같도록 상기 사각망 부분서열
    Figure pat00577
    를 보정하는 단계
    를 더 포함하는 사각망 순열패턴매칭을 위한 방법.
  10. 제9항에 있어서,
    상기 보정하는 단계는,
    상기 사각망 부분서열
    Figure pat00578
    에서
    Figure pat00579
    의 순위가
    Figure pat00580
    의 순위보다 높으면 상기 배열
    Figure pat00581
    에서 순위가 가장 낮은 원소
    Figure pat00582
    를 포함하는 짝
    Figure pat00583
    Figure pat00584
    를 상기 배열
    Figure pat00585
    Figure pat00586
    에서 각각 삭제하고,
    Figure pat00587
    의 순위가
    Figure pat00588
    의 순위보다 높지 않으면 상기 배열
    Figure pat00589
    에서 순위가 가장 높은 원소
    Figure pat00590
    를 포함하는 짝
    Figure pat00591
    Figure pat00592
    를 상기 배열
    Figure pat00593
    Figure pat00594
    에서 각각 삭제하는 단계
    를 포함하는 사각망 순열패턴매칭을 위한 방법.
KR1020170142629A 2017-10-30 2017-10-30 사각망 순열패턴매칭을 위한 병렬 알고리즘 KR102050372B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170142629A KR102050372B1 (ko) 2017-10-30 2017-10-30 사각망 순열패턴매칭을 위한 병렬 알고리즘

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170142629A KR102050372B1 (ko) 2017-10-30 2017-10-30 사각망 순열패턴매칭을 위한 병렬 알고리즘

Publications (2)

Publication Number Publication Date
KR20190048100A true KR20190048100A (ko) 2019-05-09
KR102050372B1 KR102050372B1 (ko) 2019-11-29

Family

ID=66546202

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170142629A KR102050372B1 (ko) 2017-10-30 2017-10-30 사각망 순열패턴매칭을 위한 병렬 알고리즘

Country Status (1)

Country Link
KR (1) KR102050372B1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101626721B1 (ko) * 2015-06-24 2016-06-02 인하대학교 산학협력단 사각망 순열패턴매칭을 위한 효율적인 알고리즘
KR101662957B1 (ko) * 2015-07-30 2016-10-05 인하대학교 산학협력단 해싱기반의 순위다중패턴매칭 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101626721B1 (ko) * 2015-06-24 2016-06-02 인하대학교 산학협력단 사각망 순열패턴매칭을 위한 효율적인 알고리즘
KR101662957B1 (ko) * 2015-07-30 2016-10-05 인하대학교 산학협력단 해싱기반의 순위다중패턴매칭 방법

Also Published As

Publication number Publication date
KR102050372B1 (ko) 2019-11-29

Similar Documents

Publication Publication Date Title
US10318512B2 (en) Storing and querying multidimensional data using first and second indicies
US8219591B2 (en) Graph query adaptation
EP3840393A1 (en) Contextual local image recognition dataset
US20210109920A1 (en) Method for Validating Transaction in Blockchain Network and Node for Configuring Same Network
CN108536745B (zh) 基于Shell的数据表提取方法、终端、设备及存储介质
US10885085B2 (en) System to organize search and display unstructured data
KR20170007521A (ko) 최적화된 브라우저 렌더링 프로세스
US20190171773A1 (en) Multi-index method and apparatus, cloud system and computer-readable storage medium
CN108804458A (zh) 一种爬虫网页采集方法和装置
CN108875914B (zh) 对神经网络数据进行预处理和后处理的方法和装置
CN103714164A (zh) 一种控制电子地图平移的装置及对应方法
JP7085600B2 (ja) 画像間の類似度を利用した類似領域強調方法およびシステム
US10795606B2 (en) Buffer-based update of state data
CA3182430A1 (en) Systems and methods for automatic alignment of drawings
CN110020272B (zh) 缓存方法、装置以及计算机存储介质
US11687712B2 (en) Lexical analysis training of convolutional neural network by windows of different lengths with matrix of semantic vectors
KR102349522B1 (ko) 장기간 연관성 높은 문서 클러스터링을 위한 방법 및 시스템
US10599726B2 (en) Methods and systems for real-time updating of encoded search indexes
KR101991579B1 (ko) Z-함수를 이용한 순위패턴매칭과 순위다중패턴매칭 병렬 계산 방법
EP3743821A1 (en) Wide key hash table for a graphics processing unit
KR20190048100A (ko) 사각망 순열패턴매칭을 위한 병렬 알고리즘
US11194885B1 (en) Incremental document object model updating
CN110955822A (zh) 商品搜索方法和装置
KR101626721B1 (ko) 사각망 순열패턴매칭을 위한 효율적인 알고리즘
CN111507265B (zh) 表格关键点检测模型训练方法、装置、设备以及存储介质

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant