KR20190048100A - 사각망 순열패턴매칭을 위한 병렬 알고리즘 - Google Patents
사각망 순열패턴매칭을 위한 병렬 알고리즘 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/74—Image or video pattern matching; Proximity measures in feature spaces
- G06V10/75—Organisation 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/757—Matching configurations of points or features
-
- G06K9/6211—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/22—Matching 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
Description
아래의 설명은 사각망 순열패턴매칭을 위한 알고리즘에 관한 것이다.
사각망 순열패턴매칭(boxed-mesh permutation pattern matching)은 순열패턴매칭(permutation pattern matching)의 한 분야로, 텍스트 와 패턴 가 주어졌을 때 P와 순위동형인 T의 모든 사각망 부분서열(boxed subsequence)을 찾는 문제이다. 순위동형(order-isomorphism)이란 대소 비교가 가능한 문자들로 구성된 두 문자열의 상대적인 순위가 같음을 말한다.
사각망 순열(boxed-mesh permutation)은 순열패턴매칭에서 처음으로 정의되었고 패턴회피(pattern avoidance) 측면에서 연구되었다. 사각망 순열패턴매칭 문제에 대해 시간에 해결하는 알고리즘이 먼저 제시되고 이후 시간에 해결하는 알고리즘과 시간에 해결하는 알고리즘이 제시되었다.
예컨대, 한국등록특허 제10-1626721호(등록일 2016년 05월 26일)에는 순위통계트리(order-statistics tree)를 이용하여 종래의 결과보다 개선된 시간에 사각망 순열패턴매칭 문제를 해결하는 알고리즘이 개시되어 있다.
한편, GPU(graphic process unit)의 성능이 향상되면서 GPU를 범용 계산(general propose)에도 활용한 연구가 진행되고 있다. GPU 범용 계산의 일례로는 문서 유사도 계산을 병렬화하는 방법이다. 다른 예로는 편집거리 계산을 위한 공간 효율적인 4-러시안 알고리즘 기반 병렬 알고리즘이 알려져 있다. 상기한 병렬 알고리즘들이 순차 알고리즘보다 빠른 수행 시간을 보이고 있다.
최근 순열패턴매칭에서는 연속된 순열패턴(consecutive permutation pattern)에 대한 문제를 SSE 4.2(streaming SIMD extensions)와 AVX(Advance vector extensions) 명령어를 이용하여 해결하는 병렬 알고리즘이 알려져 있다.
사각망 순열패턴매칭 문제를 해결하기 위한 병렬 알고리즘을 제공한다.
상수 시간에 비교 가능한 문자 집합을 나타내는 상의 텍스트 와 패턴가 주어짐에 따라, 길이가 인 배열 을 정렬하고 정렬된 배열 을 이용하여 와 을 계산하는 전처리단계; 및 상기 텍스트 에 대하여 단계 의 각 스텝 에서 를 증가시키면서 상기 패턴 와 순위동형인 사각망 부분서열 을 찾는 탐색단계를 포함하는 사각망 순열패턴매칭을 위한 방법을 제공한다.
일 측면에 따르면, 상기 전처리단계는, 개의 스레드를 이용하여 의사코드 전처리(Preprocessing)을 수행하는 것으로, 상기 배열 에 짝 형태로 저장하고 상기 배열 을 상기 짝의 첫 번째 원소를 기준으로 병렬 바이토닉 정렬(bitonic sort)을 이용하여 정렬한 후 정렬된 배열을 이용하여 상기 와 상기 을 계산할 수 있다.
또 다른 측면에 따르면, 상기 탐색단계는, 상기 사각망 부분서열 을 관리하기 위해 짝 을 저장하는 배열 와 짝 를 저장하는 배열 를 사용하는 단계; 스텝 에서 상기 배열 , 에 각각 , 를 삽입하는 단계; 상기 사각망 부분서열 의 의 순위를 의 순위와 같도록 상기 사각망 부분서열 를 보정하는 단계; 및 상기 배열 와 상기 에 대해 상기 사각망 부분서열 이 상기 패턴 와 순위동형인지 확인하는 단계를 포함할 수 있다.
또 다른 측면에 따르면, 상기 보정하는 단계는, 상기 사각망 부분서열 에서 의 순위가 의 순위보다 높으면 상기 배열 에서 순위가 가장 낮은 원소 를 포함하는 짝 와 를 상기 배열 와 에서 각각 삭제하고, 의 순위가 의 순위보다 높지 않으면 상기 배열 에서 순위가 가장 높은 원소 를 포함하는 짝 와 를 상기 배열 와 에서 각각 삭제하는 단계를 포함할 수 있다.
또 다른 측면에 따르면, 상기 탐색단계는, 상기 사각망 부분서열 을 관리하기 위해 짝 을 저장하는 배열 와 짝 를 저장하는 배열 를 사용하는 단계; 상기 스레드 그룹 를 이용하여 상기 배열 와 에 에 대한 각각의 짝 , 을 삽입하는 단계; 상기 배열 와 상기 에 대해 상기 사각망 부분서열 이 상기 패턴 와 순위동형인지 확인하는 단계; 및 스텝 에서 를 증가시키면서 크기를 으로 유지하고 를 포함하는 상기 사각망 부분서열 을 탐색하는 단계를 포함할 수 있다.
또 다른 측면에 따르면, 상기 각각의 짝 , 을 삽입하는 단계는, 상기 배열 의 첫 번째 원소에 대해 인 스레드 는 임시 배열 에 을 저장하고, 인 스레드 중에서 인 스레드 가 존재하면 에 를 저장하고, 인 스레드 중에서 인 스레드 가 존재하지 않으면 에 를 저장하는 단계를 포함할 수 있다.
도 1은 본 발명의 일실시예에 있어서 사각망 순열패턴을 설명하기 위한 예시 도면이다.
도 2는 본 발명의 일실시예에 있어서 사각망 순열패턴매칭 문제를 해결하기 위한 병렬 알고리즘의 전처리단계를 도시한 것이다.
도 3은 본 발명의 일실시예에 있어서 사각망 순열패턴매칭 문제를 해결하기 위한 병렬 알고리즘의 탐색단계의 일례를 도시한 것이다.
도 4는 본 발명의 일실시예에 있어서 사각망 순열패턴매칭 문제를 해결하기 위한 병렬 알고리즘의 탐색단계의 다른 예를 도시한 것이다.
도 5는 본 발명의 일실시예에 있어서 탐색단계에서의 삽입 연산을 설명하기 위한 예시 도면이다.
도 6은 본 발명의 일실시예에 있어서 탐색단계에서의(또는 탐색단계의 보정하는 단계에서의) 삭제 연산을 설명하기 위한 예시 도면이다.
도 2는 본 발명의 일실시예에 있어서 사각망 순열패턴매칭 문제를 해결하기 위한 병렬 알고리즘의 전처리단계를 도시한 것이다.
도 3은 본 발명의 일실시예에 있어서 사각망 순열패턴매칭 문제를 해결하기 위한 병렬 알고리즘의 탐색단계의 일례를 도시한 것이다.
도 4는 본 발명의 일실시예에 있어서 사각망 순열패턴매칭 문제를 해결하기 위한 병렬 알고리즘의 탐색단계의 다른 예를 도시한 것이다.
도 5는 본 발명의 일실시예에 있어서 탐색단계에서의 삽입 연산을 설명하기 위한 예시 도면이다.
도 6은 본 발명의 일실시예에 있어서 탐색단계에서의(또는 탐색단계의 보정하는 단계에서의) 삭제 연산을 설명하기 위한 예시 도면이다.
이하, 본 발명의 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
사각망 순열패턴매칭은 텍스트 와 패턴 가 주어졌을 때, P와 순위동형인 T의 모든 사각망 부분서열을 찾는 문제이다. 본 실시예들은 사각망 순열패턴매칭 문제를 해결하는 두 가지 병렬 알고리즘을 제공한다. 즉, 이 문제에 대해 개의 스레드를 사용하여 시간에 해결하는 병렬 알고리즘과 개의 스레드를 사용하여 시간에 해결하는 병렬 알고리즘을 제시한다.
먼저, 관련 용어와 문제를 정의한다.
는 상수시간에 대소 비교가 가능한 문자집합을 나타낸다. 로 구성된 문자열들의 집합을 로 표기한다. 문자열 의 길이를 로, 의 번째 문자를 로 표기한다. 문자열 안에 포함된 모든 문자들은 서로 다르다고 가정한다. 문자열 의 번째부터 번째까지의 부분문자열을 로 표기한다. 를 의 번째 접두사(prefix)라 하고, 를 의 번째 접미사(suffix)라 한다.
문자열 가 주어졌을 때, 의 각 문자의 순위(rank)를 저장한 서열을 순열(permutation) , 의 순위별 위치를 저장한 서열을 라 하자. 즉, 로, 일 때 로 정의된다. 예를 들어, 일 때, 이다. 는 의 문자들을 정렬하거나 순위통계트리(order-statistics tree)를 이용하여 시간에 계산될 수 있으며, 는 를 이용하여 시간에 계산될 수 있다.
길이가 같은 두 문자열 , 가 주어졌을 때, 를 만족하면 와 는 순위동형이라 하고, 로 표기한다. 이는 가 주어졌을 때, 다음의 수학식 1을 만족하는지 확인함으로써 시간에 판단할 수 있다.
[수학식 1]
순열패턴에서는 주어진 문자열을 좌표평면에 점으로 표시할 수 있다. 문자열 의 번째 문자인 의 순위 를 라 할 때, 2차원 평면에서 점 로 표현될 수 있다. 문자열 를 나타낸 좌표평면 상에서 축에 평행한 직사각형 영역을 이라 하자. 이때, left, right, bottom, top은 각각 영역 의 왼쪽, 오른쪽, 아래, 위의 경계선을 나타낸다. 문자열 의 사각망 순열은 로 정의된다. 이때 영역 은 문자열 에 대한 2차원 평면상에 나타낸 점들을 모두 포함하는 가장 작은 직사각형 영역이다. 그리고 사각망 순열의 크기는 로, 영역 에 포함된 점의 수이다. 문자열 의 임의의 부분서열 중에서 사각망 순열 이 정의될 때, 을 의 사각망 부분서열(boxed subsequence)이라 한다. 두 사각망 순열 와 이 주어졌을 때, 이면, 두 사각망 순열은 일치한다고 한다. 즉, 문자열 와 가 서로 순위동형이면 두 사각망 순열은 일치한다.
사각망 순열패턴매칭 문제는 텍스트 와 패턴 가 주어졌을 때, 패턴 P와 순위동형인 텍스트 T의 사각망 부분서열을 모두 찾는 것이다. 예를 들어, 도 1에서 에 대한 사각망 순열은 이다. T를 표현한 좌표평면에서 영역 와 에 포함된 점들의 순열은 로 와 일치한다. 도 1에서 회색으로 표시된 영역은 P의 사각망 순열과 일치하는 T의 영역인 , 를 나타낸다.
기존 알고리즘은 전처리단계와 탐색단계로 구성된다. 전처리단계에서는 수학식 1로 P와 T의 사각망 부분서열이 순위동형인지 판단할 수 있도록, 순위통계트리를 이용하여 와 를 계산한다. 사각망 순열의 영역 R의 left의 인덱스를 , right의 인덱스를 라 하자. 영역 R의 좌우 양 끝이 로 결정되었을 때, R에 의해서 결정되는 T의 사각망 부분서열 은 P와 많아야 1개가 순위동형이기 때문에, 탐색단계에서는 T의 모든 쌍의 사각망 부분서열에 대해 P와 순위동형인지 계산한다. 즉, 단계 에서 를 증가시키면서 에서 를 가장 오른쪽 원소로 포함하고 크기가 m이 넘지 않는 모든 사각망 부분서열 에 대해 처리한다. 이를 위해 단계 의 각 스텝 에서 를 감소시키면서 가장 왼쪽 원소로 와 가장 오른쪽 원소로 를 포함하고 P와 순위동형인 사각망 부분서열 을 탐색한다. 이때 사각망 부분서열 을 위한 2개의 순위통계트리 OST1과 OST2를 이용한다. OST1과 OST2는 각각 와 를 원소로 하는 짝(pair) 형태로 저장하고 각각 짝의 첫 번째 원소를 기준으로 정렬된다. 세부적으로, 단계 의 각 스텝 에서 먼저 OST1과 OST2에 와 를 각각 삽입한다. 그 다음 사각망 부분서열 의 의 순위를 의 순위와 같도록 사각망 부분서열 을 보정한다. 즉, OST1에서 를 탐색하여 의 순위가 의 순위보다 높으면, OST1과 OST2에서 각각 순위가 가장 낮은 원소 를 포함하는 짝 와 를 각각 제거하고, 의 순위가 의 순위보다 높지 않고 원소의 개수가 m보다 크면 OST1과 OST2에서 각각 순위가 가장 높은 원소 를 포함하는 짝 와 를 각각 제거한다. OST1의 크기가 m이고 를 원소로 가지고 있을 때, OST2를 중위순회(inorder traversal)하여 위치 순으로 정렬된 을 얻고, 과 에 대해 수학식 1을 이용하여 과 패턴 P가 순위동형인지 확인한다. 만약 이면 의 영역 R을 출력한다.
상기한 알고리즘의 시간복잡도는 다음과 같다. 전처리단계에서는 순위통계트리를 이용하여 와 를 시간에 계산할 수 있다. 탐색단계에서는 사각망 부분서열 을 위한 순위통계트리를 유지하기 때문에, 각 스텝마다 한 원소에 대한 삽입, 삭제, 순위를 찾는 연산은 시간에 수행된다. 과 P가 순위동형인지는 시간에 판단할 수 있다. 한편, 최악의 경우 개의 사각망 부분서열 과 패턴 P가 순위동형인지를 판단해야 하기 때문에 총 시간복잡도는 이다.
이하에서는 사각망 순열패턴매칭 문제를 해결하기 위한 병렬 알고리즘을 구체적으로 설명한다.
본 발명에서는 상기한 알고리즘에서 제시된 아이디어를 바탕으로 사각망 순열패턴매칭 문제를 해결하는 두 가지 병렬 알고리즘을 제시한다. 기존 알고리즘의 탐색단계에서는 각 에 대해 마지막 문자인 를 고정시키고 역방향으로 탐색을 진행하였다. 한편, 에 대해 시작 문자인 를 고정시키고 순방향으로 탐색해도 사각망 순열패턴매칭 문제를 해결할 수 있다.
본 발명에 따른 병렬 알고리즘에서는 순방향으로 탐색한다. 단계 의 각 스텝 에서 를 증가시키면서 패턴 P와 순위동형이고 가장 왼쪽 원소로 , 가장 오른쪽 원소로 를 포함하는 사각망 부분서열 을 찾는다. 그리고 사각망 부분서열 을 관리하기 위해 순위통계트리 대신 배열과 정렬알고리즘을 사용한다.
병렬 알고리즘 1
스레드 수가 일 때, 사각망 순열패턴매칭 문제를 시간에 해결하는 병렬 알고리즘을 제시한다. 전처리단계에서는 m개의 스레드를 이용하여 의사코드 전처리(Preprocessing)을 수행한다(도 2 참조). 먼저 길이가 m인 배열 에 짝 형태로 저장한다. 이때 짝의 첫 번째 원소를, 두 번째 원소를 로 표기한다. 를 를 기준으로 병렬 바이토닉 정렬(bitonic sort)를 이용하여 정렬하고, 정렬된 를 이용하여 와 를 계산한다.
도 3을 참조하면, 탐색단계에서는 각 단계 가 서로 독립적이므로, 단계 마다 스레드 를 이용하여 스텝 를 계산한다(2번째 줄부터 13번째 줄). 각 스레드 는 에서 나타나는 사각망 부분서열 을 관리하기 위해 와 인덱스 를 원소로 하는 짝 을 저장하는 배열 와 짝 를 저장하는 배열 를 사용한다(3번째 줄). 배열 와 는 각각 짝의 첫 번째 원소를 기준으로, 오름차순으로 정렬된 상태를 유지한다. 세부적으로, 스텝 에서 먼저 배열 , 에 각각 , 를 삽입한다(5번째 줄). 와 를 정렬된 상태로 유지하기 위해 삽입 연산을 삽입정렬(insertion sort)과 같은 방법으로 수행한다. 그 후 사각망 부분서열 의 의 순위를 의 순위와 같도록 사각망 부분서열 를 보정한다. 즉, 사각망 부분서열 에서 의 순위가 의 순위보다 높으면 에서 순위가 가장 낮은 원소 를 포함하는 짝 와 를 , 에서 각각 제거하고, 의 순위가 의 순위보다 높지 않고 원소의 개수가 m보다 크면 에서 순위가 가장 높은 원소 를 포함하는 짝 와 를 , 에서 각각 제거한다(6번째 줄부터 11번째 줄). 삭제 연산은 삭제될 짝 에 대해 오른쪽에 있는 짝들을 차례대로 왼쪽으로 한 칸씩 이동시키면 된다. 이고 의 원소로 를 가지고 있을 때, 과 P가 순위동형인지는 와 에 대해 수학식 1을 이용하여 확인한다. 만약 이면 의 영역 을 출력한다(12번째 줄부터 13번째 줄).
상기한 병렬 알고리즘 1의 시간 복잡도는 다음과 같다. 전처리단계에서는 m개의 스레드와 병렬 바이토닉 정렬을 사용하여 시간에 길이가 m인 배열을 정렬할 수 있고, 이 배열을 이용하여 와 를 시간에 계산할 수 있다. 탐색단계에서 각 스텝은 배열 와 에 하나의 원소에 대한 삽입, 삭제, 순위를 찾는 연산, 한 원소가 존재하는지 확인하는 연산과 과 P가 순위동형인지 확인하는 연산을 수행한다. 삭제 연산은 에서 가장 작은 원소 또는 가장 큰 원소를 포함하는 짝만 삭제한다. 이때 배열 가 항상 정렬되어 있기 때문에, 이를 각각 시간에 탐색할 수 있다(7번째 줄과 10번째 줄). 삽입 연산과 삭제 연산은 시간에 수행될 수 있다. 그리고 의 순위를 찾는 연산(6번째 줄)과 의 존재여부를 판단하는 연산(12번째 줄)은 에서 이진탐색(binary search)를 이용하여 시간에 계산할 수 있다. 마지막으로 과 P가 순위동형인지는 와 에 대해 수학식 1을 이용하므로 시간이 소요된다. 각 스레드가 최대 개의 스텝을 탐색하고 각 스텝은 최악의 경우 시간이 소요되므로 병렬 알고리즘 1의 시간복잡도는 이다.
병렬 알고리즘 2
스레드의 수가 일 때, 사각망 순열패턴매칭 문제를 시간에 해결하는 병렬 알고리즘을 제시한다. m개의 스레드를 스레드 그룹(thread group)이라 하자. 병렬 알고리즘 2는 개의 스레드 그룹을 사용하여 스레드 그룹 가 단계 를 계산한다.
전처리단계는 병렬 알고리즘 1과 동일하게 수행된다(1번째 줄). 도 4를 참조하면, 탐색단계에서는 사각망 부분서열 을 위한 길이가 m+1인 배열 와 를 사용한다. 각 단계 에서 먼저 스레드 그룹 를 이용하여 와 에 에 대한 각각의 짝 , 을 m개의 스레드를 이용하여 삽입한다. 그리고 패턴 P와 사각망 부분서열 이 순위동형인지 와 에 대해 수학식 1을 이용하여 확인한다(3번째 줄부터 5번째 줄). 이후 스텝 에서 를 증가시키면서 크기를 m으로 유지하고 를 포함하는 사각망 부분서열 을 탐색한다. 세부적으로, 와 를 각각 배열 와 에 삽입한다(7번째 줄). 삽입 연산은 하나의 스레드 그룹을 이용하여 다음과 같이 수행된다. 정렬된 배열 는 보다 작은 원소들과 큰 원소들로 나눌 수 있다(도 5 참조). 도 5에서 가 보다 작은 원소들은 수직선 해칭으로, 큰 원소들을 수평선 해칭으로 표시한다. 인 각 스레드 t는 임시 배열 에 을 저장하고 인 스레드 중에서 인 스레드 t가 존재하면 에 를 저장한다. 만약 그러한 스레드 t가 존재하지 않으면, 에 를 저장한다. 그 후 인 각 스레드 t는 에 을 저장한다. 에 대해서도 유사한 방법으로 수행한다. 사각망 부분서열 이 패턴 P와 순위동형이 되려면 와 의 순위가 같고 길이가 같아야 한다. 따라서 의 순위가 의 순위보다 높으면 배열 에서 순위가 가장 낮은 원소 를 포함하는 짝 와 를 각각 , 에서 삭제하고, 그렇지 않으면 배열 에서 순위가 가장 높은 원소 를 포함하는 짝 와 를 각각 , 에서 삭제한다(9번째 줄부터 11번째 줄). 도 6은 에서의 사선 해칭으로 표시한 하나의 원소를 삭제하는 연산을 보여준다. 이때 삭제연산은 하나의 스레드 그룹을 이용하여 각 스레드 가 삭제할 원소보다 큰 원소를 가진 t에 대해서 를 로 옮기면 된다. 에 대해서도 유사한 방법으로 수행한다. 그리고 의 순위를 찾는 연산은 각 스레드 t가 배열 의 원소와 가 일치하는 인덱스 t를 반환하면 된다. 이후에 가 사각망 부분서열 에 존재하는지만 확인한다. 만약 앞의 조건이 참이면 m개의 스레드를 이용하여 와 에 대해 수학식 1을 병렬적으로 확인하고, 이면 의 영역 를 출력한다(13번째 줄부터 14번째 줄).
상기한 병렬 알고리즘 2의 시간 복잡도를 분석하면 다음과 같다. 전처리단계는 병렬 알고리즘 1과 같다. 탐색단계에서는 처음 에 대한 m개의 짝을 배열 와 에 삽입하는 것은 m개의 스레드와 바이토닉 정렬을 사용하여 시간에 계산할 수 있다. 이후 스텝 에서 하나의 원소에 대한 삽입, 삭제, 순위를 찾는 연산은 m개의 스레드를 이용하여 시간에 처리할 수 있다. 또한 과 P의 순위동형 판단은 , 에 대한 수학식 1과 m개의 스레드를 이용하여 시간에 계산할 수 있다. 따라서 하나의 스텝을 시간에 처리할 수 있다. 각 단계는 최대 개의 스텝이 존재하므로, 병렬 알고리즘 2의 시간복잡도는 이다.
이처럼 본 발명의 실시예들에 따르면, 개의 스레드를 이용하여 시간에 사각망 순열패턴매칭 문제를 해결할 수 있다. 또한, 본 발명의 실시예들에 따르면, 개의 스레드를 이용하여 시간에 사각망 순열패턴매칭 문제를 해결할 수 있다.
본 발명에 따른 사각망 순열패턴매칭 문제를 해결하기 위한 병렬 알고리즘은 도 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)
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101626721B1 (ko) * | 2015-06-24 | 2016-06-02 | 인하대학교 산학협력단 | 사각망 순열패턴매칭을 위한 효율적인 알고리즘 |
KR101662957B1 (ko) * | 2015-07-30 | 2016-10-05 | 인하대학교 산학협력단 | 해싱기반의 순위다중패턴매칭 방법 |
-
2017
- 2017-10-30 KR KR1020170142629A patent/KR102050372B1/ko active IP Right Grant
Patent Citations (2)
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 |