KR102233217B1 - 분할순위패턴매칭 알고리즘 - Google Patents
분할순위패턴매칭 알고리즘 Download PDFInfo
- Publication number
- KR102233217B1 KR102233217B1 KR1020190178103A KR20190178103A KR102233217B1 KR 102233217 B1 KR102233217 B1 KR 102233217B1 KR 1020190178103 A KR1020190178103 A KR 1020190178103A KR 20190178103 A KR20190178103 A KR 20190178103A KR 102233217 B1 KR102233217 B1 KR 102233217B1
- Authority
- KR
- South Korea
- Prior art keywords
- algorithm
- pattern matching
- pattern
- wow
- division
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
본 발명은 분할순위패턴매칭 알고리즘에 관한 것이다.
정수로 구성된 두 문자열 x, y의 길이가 같고, x, y의 상대적 순위가 모든 위치에서 동일하면 x 와 y는 순위동형(order-isomorphic)이다. 예를 들어, x=(6, 4, 9) 와 y (17, 16, 18)은 길이가 같고 각 문자의 순위가 (2, 1, 3)으로 동일하므로 순위동형이다. 순위패턴 매칭 문제는 길이가 각각 n, m인 텍스트 T와 패턴 P가 주어질 때, P와 순위동형인 T의 모든 부분문자열을 찾는 문제이다. 이는 주가지수, 기후정보, 멜로디와 같은 시계열 데이터 분석에 활용될 수 있다.
[1], [2]에서 KMP 알고리즘[3]을 기반으로 시간에 순위패턴 매칭 문제를 해결하였고, [4]에서는 Horspool 알고리즘[5]과 q개의 연속된 문자인 q-그램의 핑거프린트(fingerprint)를 이용하여 시간에 이 문제를 해결하였다. [6]에서는 T와 P가 주어질 때, P와 순위동형인 T의 모든 부분서열(subsequnce)을 찾는 문제가 NP-완전(NP-complete)임을 증명하였다. [7]에서는 T의 부분문자열과 P사이에 개의 불일치(mismatch)를 허용하여 시간에 P와 순위동형인 T의 모든 부분문자열을 찾는 문제를 해결하였다.
일 측면에 있어서, 본 발명에서 제안하는 분할순위패턴매칭 알고리즘은 길이가 각각 n, m인 텍스트 T와 패턴 P에 대하여, 패턴 P를 길이가 t인 문자열 과 길이가 m - t인 문자열 로 나누는 단계, 과 에 대한 위치테이블 , , , 를 각각 생성하는 단계 및 개의 하위단계(substep)에서 탐색을 수행하는 단계를 포함한다.
개의 하위단계에서 탐색을 수행하는 단계는 번째 하위단계에서 생성된 위치테이블들을 이용하여 텍스트 와 가 서로에 관하여 순위동형인지 확인하고, 와 가 서로에 관하여 순위동형인지 확인한다.
또 다른 일 측면에 있어서, 본 발명에서 제안하는 분할순위패턴매칭 알고리즘은 길이가 각각 n, m인 텍스트 T와 패턴 P에 대하여, 패턴 P에 대한 위치테이블 , , , 를 계산하는 단계 및 개의 하위단계(substep)에서 탐색을 수행하는 단계를 포함한다.
개의 하위단계에서 탐색을 수행하는 단계는 번째 하위단계에서 , 를 이용하여 텍스트 와 가 서로에 관하여 순위동형을 만족하는 의 최댓값 를 찾고, , 를 이용하여 텍스트 와 가 서로에 관하여 순위동형을 만족하는 의 최솟값 을 찾는다.
도 1은 본 발명의 일 실시예에 따른 분할순위패턴매칭을 설명하기 위한 도면이다.
도 2는 본 발명의 일 실시예에 따른 알고리즘1을 설명하기 위한 흐름도이다.
도 3은 본 발명의 일 실시예에 따른 알고리즘2를 설명하기 위한 흐름도이다.
도 4는 본 발명의 일 실시예에 따른 알고리즘2의 3단계를 설명하기 위한 도면이다.
도 5는 본 발명의 일 실시예에 따른 알고리즘1 및 알고리즘2을 나타내는 도면이다.
도 2는 본 발명의 일 실시예에 따른 알고리즘1을 설명하기 위한 흐름도이다.
도 3은 본 발명의 일 실시예에 따른 알고리즘2를 설명하기 위한 흐름도이다.
도 4는 본 발명의 일 실시예에 따른 알고리즘2의 3단계를 설명하기 위한 도면이다.
도 5는 본 발명의 일 실시예에 따른 알고리즘1 및 알고리즘2을 나타내는 도면이다.
본 발명에서는 분할순위패턴매칭 문제를 정의하고 이를 해결하는 단순한 알고리즘인 알고리즘1과 개선된 알고리즘인 알고리즘2를 제안한다. 알고리즘1은 시간에 분할순위패턴매칭 문제를 해결하고, 알고리즘2는 분할순위동형의 특성을 이용하여 시간에 문제를 해결하였다. 또한 4종류의 시계열 데이터를 이용한 실험결과를 제시한다. 이하, 본 발명의 실시 예를 첨부된 도면을 참조하여 상세하게 설명한다.
는 정수문자로 이루어진 집합이다. 로 구성된 길이가 m인 문자열들의 집합을 으로 표기한다. 문자열 x의 길이는 로 나타내고, x의 번째 문자는 로 표기한다. x의 i번째부터 번째까지의 부분문자열은 로 표기한다. 에 대해 이면 는 공백문자열을 뜻한다.
두 문자열 x, y ()에 대해 이면 x와 y는 순위동형이라 하고 로 표기한다. 두 문자열의 순위동형은 최근접이웃표현(nearest neighbor representation)을 이용한 위치테이블(location table)을 사용하여 판단할 수 있다[2]. 문자열 x 에 대한 위치테이블 , 는 다음과 같이 정의된다.
즉 는 에서 보다 작거나 같은 값 중 최댓값의 위치 이고, 는 에서 보다 크거나 같은 값 중 최솟값의 위치 j이다. 만약 그러한 j가 2개 이상이면, 이 중 가장 큰 j를 저장하고, 그러한 j가 없다면 -1을 저장한다. 문자열 x, y ()와 위치테이블 , 가 주어졌을 때, P를 조건 , q를 조건 라 하자. 모든 에 대해 를 만족하면, 이다[3]. 위치테이블 , 는 정렬알고리즘을 이용하여 시간에 계산할 수 있고, 이를 이용하여 x 와 y 의 순위동형 여부를 시간에 확인할 수 있다[3]. 표 1은 문자열 x = (21, 69, 63, 57, 59, 67)에 대한 위치테이블 , 를 보여준다.
<표 1>
도 1은 본 발명의 일 실시예에 따른 분할순위패턴매칭을 설명하기 위한 도면이다.
정의 1. 분할순위패턴매칭 문제
예를 들어, T = (68, 66, 13, 16, 27, 53, 20, 37, 61, 30, 55, 52, 32, 10, 41)와 P = (12, 38, 54, 34, 22, 56, 20, 50)가 주어질 때, 이고 이므로 이다. 따라서 (3, 4)를 출력한다(도 1 참조).
본 발명에서는 분할순위패턴매칭 문제를 해결하는 두 가지 알고리즘을 제시한다. 먼저 위치테이블을 활용한 단순한 알고리즘인 알고리즘1을 제시하고 이를 개선한 알고리즘인 알고리즘2를 제시한다.
도 2는 본 발명의 일 실시예에 따른 알고리즘1을 설명하기 위한 흐름도이다.
알고리즘1은 총 m단계로 구성된다. 단계에서 패턴 P는 길이가 t인 문자열 과 길이가 m - t인 문자열 로 나누어지고(210), 과 에 대한 위치테이블 , , , 를 각각 생성한다(220). 이후 개의 하위단계(substep)에서 탐색을 수행한다(230). 번째 하위단계에서는 생성된 위치테이블들을 이용하여 이고 인지 확인한다. 만약 이고 라면 (i, t )를 출력한다(Algorithm ALG1 참조). 알고리즘1의 복잡도는 다음과 같다. t단계에서 위치테이블 , , , 는 시간에 공간을 이용하여 계산할 수 있다. 탐색은 모든 하위단계 i에서 와 를 확인하므로 시간에 수행된다. t단계가 시간에 수행되므로 알고리즘1은 시간에 공간을 이용하여 수행된다.
도 3은 본 발명의 일 실시예에 따른 알고리즘2를 설명하기 위한 흐름도이다.
알고리즘2는 분할순위동형이 발생하는 조건의 특성을 이용하여 문제를 해결한다. 이를 위해 먼저 기존의 위치테이블을 확장하여 , 를 정의하고, 이를 이용하여 알고리즘1의 시간복잡도를 으로 개선한다. , 는 다음과 같이 정의된다(표 1 참조).
즉 는 에서 보다 작거나 같은 값 중 최댓값의 위치이고, 는 에서 보다 크거나 같은 값 중 최솟값의 위치 j이다. 만약 그러한 j가 2개 이상이면, 이 중 가장 작은 j를 저장하고, 그러한 j가 없다면 -1을 저장한다. 위치테이블 , 가 주어졌을 때, 을 조건 , 을 조건 라고 하자. 모든 에 대해 을 만족하면, 임을 알 수 있다. , 는 정렬알고리즘을 이용하여 시간에 계산할 수 있고, 이를 이용하여 x와 y의 순위동형 여부를 시간에 확인할 수 있다.
보조정리 1
보조정리 2
임의의 자연수 에 대하여 보조정리 1을 이용하면 , , ... 이므로 이 성립한다. 마찬가지로 보조정리 1을 이용하면 , ... 이므로 이 성립한다. 따라서 면서 을 만족하는 가 존재하므로 분할순위동형의 정의에 의해, 이 성립한다.
알고리즘2는 다음과 같이 수행된다. 먼저 패턴 P에 대한 위치테이블 , , , 를 계산한다(310). 이후 n - m + 1개의 단계에서 탐색을 수행한다(320). 번째 단계에서는 , 를 이용하여 을 만족하는 의 최댓값 를 찾고, , 를 이용하여 을 만족하는 의 최솟값 을 찾는다.
도 4는 본 발명의 일 실시예에 따른 알고리즘2의 3단계를 설명하기 위한 도면이다.
보조정리 2에 따라 만약 이라면, 분할순위동형이 발생한 위치 i와 P에서 분할이 일어난 위치 를 출력한다(Algorithm ALG2 참조). 예를 들어, 도 4와 같이 알고리즘2의 3단계는 위치테이블들을 이용하여 임을 찾고 (3,3), (3,4), (3,5)를 출력한다.
알고리즘2의 복잡도는 다음과 같다. 위치테이블 , ,, 는 시간에 공간을 이용하여 계산할 수 있다. i단계에서 위치테이블을 이용하여 와 을 시간에 계산할 수 있으므로 모든 단계 i에 대해 와 계산은 시간에 수행된다. 따라서 분할순위패턴매칭 문제는 알고리즘2에 의해 시간에 공간을 이용하여 해결할 수 있다.
도 5는 본 발명의 일 실시예에 따른 알고리즘1 및 알고리즘2을 나타내는 도면이다.
실험환경은 다음과 같다. OS는 Windows 10(64bit), CPU는 Intel Core i7-4790(3.6GHz), RAM은 8GB의 크기를, 개발 툴은 Visual Studio 2015, 개발 언어는 C++을 사용하였다.
무작위로 생성한 정수형 문자열과 실제 시계열 데이터를 이용하여 두 알고리즘의 수행시간을 비교하였다. 무작위로 생성한 문자열의 경우 에 대해 C++의 rand() 함수를 이용하여 를 생성하였다. 실제 데이터의 경우, 다우존스지수, 미세먼지수치, 전력소비지수를 이용하였다. 다우존스지수 데이터는 1885년 5월 2일부터 2019년 4월 12일까지의 다우존스산업평균지수의 일별 종가를 이용하여 T(n 36,000)를 생성하였다. 미세먼지 수치는 2010년 1월 2일 00시부터 2014년 10월 9일 22시까지의 베이징의 미세먼지수치를 1시간 간격으로 기록한 데이터를 이용하여 T(n 40,000)를 생성하였다. 전력소비지수는 2006년 12월 16일 17:24부터 2008년 12월 2일 22:00까지 프랑스 쏘(Sceaux)에 위치한 집에서 소비전력 데이터 중 분당평균전압을 측정한 데이터를 이용하여 T(n 106)를 생성하였다. 편의상, 무작위로 생성한 데이터를 RAND, 다우존스지수 데이터를 DJIA, 미세먼지수치 데이터를 PM2.5, 전력소비지수 데이터를 VOLT로 표기하였다. 패턴 P는 T에서 추출하였으며, 각 알고리즘의 수행시간은 1,000회 실험의 평균수행시간이다.
표 2는 4가지 데이터에 대해 ALG1, ALG2의 m에 따른 수행시간을 보여준다.
<표 2>
실험은 [4]와 같이 m = {5, 10, 15, 20} 에 대하여 진행하였다. 실험 결과 ALG2는 ALG1보다 m = 5일 때 약 1.36배, m = 10일 때 약 3.98배, m = 15일 때 약 5.81배, m = 20일 때 약 7.68배 빠르게 수행되었다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPA(field programmable array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치에 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.
<참고문헌>
[1] J. Kim, P. Eades, R. Fleischer, S. Hong, C. S. Iliopoulos, K. Park, S. J. Puglisi, T. Tokuyama, "Order-preserving matching," Theoretical Computer Science, Vol. 525, pp. 68-79, 2014.
[2] M. Kubica, T. Kulczynski, J. Radoszewski, W. Rytter, T. Walen, "A linear time algorithm for consecutive permutation pattern matching," Information Processing Letters, Vol. 113, pp. 430-433, 2013.
[3] D. E. Knuth, J. H. Morris, V. R. Pratt, "Fast pattern matching in strings," SIAM journal on computing, Vol. 6, no. 2, pp. 323-350, 1977.
[4] S. Cho, J. Na, K. Park, J. Sim, "A fast algorithm for order-preserving pattern matching," Information Processing Letters, Vol. 115, pp. 397-402, 2015.
[5] R. N. Horspool, "Practical fast searching in strings," Software: Practice and Experience, Vol. 10, No. 6, pp. 501-506, 1980.
[6] P. Bose, F. Buss, A. Lubiw, "Pattern matching for permutations," Information Processing Letters, Vol. 65, pp. 277-283, 1996.
[7] P. Gawrychowski, P. Uznanski, "Order-preserving pattern matching with k mismatches,"Theoretical Computer Science, Vol. 638, pp. 136-144, 2016.
Claims (6)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190178103A KR102233217B1 (ko) | 2019-12-30 | 2019-12-30 | 분할순위패턴매칭 알고리즘 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190178103A KR102233217B1 (ko) | 2019-12-30 | 2019-12-30 | 분할순위패턴매칭 알고리즘 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR102233217B1 true KR102233217B1 (ko) | 2021-03-29 |
Family
ID=75249810
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020190178103A KR102233217B1 (ko) | 2019-12-30 | 2019-12-30 | 분할순위패턴매칭 알고리즘 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102233217B1 (ko) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190048762A (ko) * | 2017-10-31 | 2019-05-09 | 인하대학교 산학협력단 | Z-함수를 이용한 순위패턴매칭과 순위다중패턴매칭 병렬 계산 방법 |
-
2019
- 2019-12-30 KR KR1020190178103A patent/KR102233217B1/ko active IP Right Grant
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190048762A (ko) * | 2017-10-31 | 2019-05-09 | 인하대학교 산학협력단 | Z-함수를 이용한 순위패턴매칭과 순위다중패턴매칭 병렬 계산 방법 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11693839B2 (en) | Parser for schema-free data exchange format | |
US11048839B2 (en) | Adaptive error correction in quantum computing | |
JP5950285B2 (ja) | 予め決められた複数のビット幅のデータに対して操作を行う命令を使用してツリーの検索を行うための方法、並びに、当該命令を使用してツリーの検索を行うためのコンピュータ及びそのコンピュータ・プログラム | |
US11372929B2 (en) | Sorting an array consisting of a large number of elements | |
EP3221822B1 (en) | Method for efficient implementation of diagonal operators over clifford+t basis | |
Moosa et al. | Indexing permutations for binary strings | |
US20190149419A1 (en) | Information processing device and information processing method | |
Franke et al. | Parallel Privacy-preserving Record Linkage using LSH-based Blocking. | |
KR101662957B1 (ko) | 해싱기반의 순위다중패턴매칭 방법 | |
Chen et al. | Graph unfolding networks | |
KR102233217B1 (ko) | 분할순위패턴매칭 알고리즘 | |
US20160350384A1 (en) | Mining Relevant Approximate Subgraphs from Multigraphs | |
JP6773115B2 (ja) | 類似データ検索装置、類似データ検索方法および記録媒体 | |
US9244783B2 (en) | Automated circuit triplication method and system | |
Ziegeler et al. | In situ analysis as a parallel i/o problem | |
US11281688B2 (en) | Ranking and de-ranking data strings | |
JP6005583B2 (ja) | 検索装置、検索方法および検索プログラム | |
KR101769247B1 (ko) | 계층적 인터벌 트리를 이용한 문자열 비교 방법 및 장치 | |
JP6714142B2 (ja) | 攻撃パターン抽出装置、攻撃パターン抽出方法および攻撃パターン抽出プログラム | |
KR102288282B1 (ko) | 이진인코딩을 이용한 호스풀 알고리즘 기반 순위패턴매칭 방법 및 장치 | |
Liu | A Metastudy of Algorithm Lower Bounds | |
KR101626721B1 (ko) | 사각망 순열패턴매칭을 위한 효율적인 알고리즘 | |
KR102158317B1 (ko) | 2차 q-그램에 대한 핑거프린트를 이용한 순위패턴매칭 알고리즘 | |
Ito et al. | Fast clustering of hypergraphs based on bipartite-edge restoration and node reachability | |
Bai et al. | A transitive aligned Weisfeiler-Lehman subtree kernel |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |