KR101088290B1 - 접미사 배열을 이용한 최장공통비상위문자열 검색 방법 - Google Patents

접미사 배열을 이용한 최장공통비상위문자열 검색 방법 Download PDF

Info

Publication number
KR101088290B1
KR101088290B1 KR1020110042413A KR20110042413A KR101088290B1 KR 101088290 B1 KR101088290 B1 KR 101088290B1 KR 1020110042413 A KR1020110042413 A KR 1020110042413A KR 20110042413 A KR20110042413 A KR 20110042413A KR 101088290 B1 KR101088290 B1 KR 101088290B1
Authority
KR
South Korea
Prior art keywords
suffix
array
graph
string
generating
Prior art date
Application number
KR1020110042413A
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 KR1020110042413A priority Critical patent/KR101088290B1/ko
Application granted granted Critical
Publication of KR101088290B1 publication Critical patent/KR101088290B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/93Document management systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/70Information retrieval; Database structures therefor; File system structures therefor of video data
    • G06F16/78Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
    • G06F16/7867Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually using information manually generated, e.g. tags, keywords, comments, title and artist information, manually generated time, location and usage information, user ratings
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Library & Information Science (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Software Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

접미사 배열을 이용한 최장공통비상위문자열 검색 방법이 개시된다. 최장공통비상위문자열 검색 방법은 문자열 집합에 대하여 접미사배열(suffix array)을 이용하여 접미사 그래프를 생성하는 단계; 및 접미사 그래프를 이용하여 문자열 집합에서 가장 긴 문자열에 해당되는 최장공통비상위문자열을 검색하는 단계를 포함하며, 접미사 그래프를 생성하는 단계는 문자열 집합 내 각 문자열의 접미사를 사전 순으로 배열한 일반화접미사배열(generalized suffix array)을 생성하는 단계; 일반화접미사배열에 대하여 접미사 그래프의 정점 집합을 생성하는 단계; 및 일반화접미사배열에 대한 최근접접두사(nearest prefix)와 link 함수를 이용하여 접미사 그래프의 간선 집합을 생성하는 단계를 포함할 수 있다.

Description

접미사 배열을 이용한 최장공통비상위문자열 검색 방법{METHOD FOR FINDING LONGEST COMMON NON-SUPERSTRINGS USING SUFFIX ARRAYS}
본 발명의 실시예들은 접미사 배열을 이용하여 접미사 그래프 모델을 생성하고 이를 통해 최장공통비상위문자열을 찾는 알고리즘에 관한 것이다.
주어진 문자열 집합에 대한 포함/불포함 문제가 압축 알고리즘, 분자 생물학, 컴퓨터 보안 등 다양한 분야에서 필요성이 대두되어 진행되고 있다.
문자열 포함 문제는 최장공통부분서열(Longest Common Subsequence), 최단공통상위서열(Shortest Common Supersequence), 최장공통부분문자열 (Longest Common Substring)과 최단공통상위문자열(Shortest Common Superstring) 등이 연구되어 왔고, 문자열 불포함 문제는 최장공통비상위서열(Longest Common Non-Supersequence), 최단공통비부분서열(Shortest Common Non-Subsequence), 최장공통비상위문자열(Longest Common Non-Superstring)과 최단공통비부분문자열(Shortest Common Non-Substring) 등이 연구되어 왔다.
이 중 최장공통비상위문자열 문자에 관하여 설명하면 다음과 같다.
상수 크기 문자 집합에 대한 문자열 집합 F={f1, f2, …, fm}와 문자열 x를 고려해 보자. 만약 x가 모든 fi(1≤i≤m)에 대해서 상위문자열(superstring)이 아니라면, x를 F에 대한 공통비상위문자열(common non-superstring, 이하 CNSS로 표기)이라 한다. 만약 x가 F에 대한 공통비상위문자열 중 가장 긴 문자열이라면 x를 F에 대한 최장공통비상위문자열(longest common non-superstring, 이하 LCNSS로 표기)이라 한다. S를 F에 속한 문자열들의 진접미사 집합이라 하자. Rubinov와 Timkovsky는 그래프 상의 경로가 F의 CNSS와 대응되는 S에 대한 유향 그래프 ГS=(V,E)를 정의했다. ГS가 사이클이 존재할 경우, F에 대한 LCNSS는 존재하지 않는다. 그렇지 않다면, 즉 ГS가 사이클이 없는 유향 그래프일 경우, ГS의 최장 경로는 F에 대한 LCNSS를 나타내며, O(|V|+|E|) 시간에 찾을 수 있다. 따라서, LCNSS 문제를 효율적으로 해결하기 위해서는 ГS를 효율적으로 생성해야 한다.
LCNSS을 찾기 위하여 접미사 배열(suffix array)을 이용하여 접미사 그래프 모델 ГS를 효율적으로 생성하는 알고리즘을 제공한다.
문자열 집합에 대하여 접미사배열(suffix array)을 이용하여 접미사 그래프를 생성하는 단계; 및 접미사 그래프를 이용하여 문자열 집합에서 가장 긴 문자열에 해당되는 최장공통비상위문자열을 검색하는 단계를 포함하는 최장공통비상위문자열 검색 방법이 제공된다.
일측에 따르면, 접미사 그래프를 생성하는 단계는 문자열 집합 내 각 문자열의 접미사를 사전 순으로 배열한 일반화접미사배열(generalized suffix array)을 생성하는 단계; 일반화접미사배열에 대하여 접미사 그래프의 정점 집합을 생성하는 단계; 및 일반화접미사배열에 대한 최근접접두사(nearest prefix)와 link 함수를 이용하여 접미사 그래프의 간선 집합을 생성하는 단계를 포함할 수 있다.
다른 측면에 따르면, 일반화접미사배열을 생성하는 단계는 문자열 집합에 속한 각 문자열 끝에 종결문자를 각각 붙인 문자열 집합을 이용하여 일반화접미사배열을 생성할 수 있다.
또 다른 측면에 따르면, 접미사 그래프의 정점 집합을 생성하는 단계는 일반화접미사배열 상의 대표 접미사이면서 문자열 집합에 속하지 않는 접미사에 대하여 정점을 생성할 수 있다.
또 다른 측면에 따르면, 접미사 그래프의 간선 집합을 생성하는 단계는 일반화접미사배열에 속한 접미사의 길이를 나타내는 배열인 Len 배열과 일반화접미사배열에 대한 최장공통접두사(longest common prefix) 배열인 LCP 배열을 이용하여 일반화접미사배열 상의 대표 접미사에 대한 최근접접두사 배열을 구한 후, 최근접접두사 배열을 이용하여 정점 집합에 속한 정점 간의 간선을 나타내는 링크 함수를 계산할 수 있다.
접미사 배열(suffix array)을 이용하여 접미사 그래프 모델 ГS를 생성함으로써 최장공통비상위문자열을 보다 빠르고 효율적으로 찾을 수 있다. 본 발명의 실시예에서 제시된 알고리즘은 문자열 집합 F에 속한 모든 문자열의 길이의 합을 ∥F∥라 했을 때, 상수 크기 문자 집합 Σ에 대해, O(∥F∥) 시간이 소요된다. 접미사배열을 이용한 알고리즘이 접미사트리를 이용한 알고리즘 등 보다 빠른 이유는 중간 자료구조인 접미사배열이 접미사트리보다 생성시간이 빠르기 때문이다. 따라서, 접미사배열을 이용할 경우, 보다 빠르게 접미사 그래프 ΓS를 생성할 수 있어 최장공통비상위문자열 문제 또한 더욱 신속하게 해결할 수 있다.
도 1은 본 발명의 일실시예에 있어서, 접미사 그래프를 설명하기 위한 것으로 일례의 문자열 F={aaa, bab, aab, bbb}에 대한 접미사 그래프를 도시한 것이다.
도 2는 본 발명의 일실시예에 있어서, 접미사배열을 이용하여 LCNSS를 찾기 위한 접미사 그래프를 생성하는 알고리즘의 순서도를 도시한 것이다.
도 3과 4는 본 발명의 일실시예에 있어서, 접미사 그래프의 간선 집합을 생성하기 위해 link 함수를 계산하는 알고리즘을 도시한 것이다.
이하, 본 발명의 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
본 발명의 실시예서는 접미사 배열을 이용하여 접미사 그래프 모델을 효율적으로 생성함으로써 LCNSS(최장공통비상위문자열)을 찾는 새로운 알고리즘을 제공한다. 특히, 본 발명의 일실시예에 따른 최장공통비상위문자열 검색 방법은 컴퓨터보안 분야에서 패킷 내의 악성패턴(즉, 금지문자열)을 검출하는 침입탐지시스템에 적용될 수 있다.
본 명세서에서 쓰이는 기호는 다음과 같다.
Σ는 문자 집합을 나타내며 |Σ|는 Σ의 크기를 나타낸다. 본 발명의 실시예에서는 |Σ|를 상수로 가정한다. F={f1, f2, …, fm}는 입력으로 주어지는 문자열 집합이며, m은 문자열 집합 F의 원소 개수를 나타낸다. ∥F∥는 집합 F에 속한 모든 문자열의 길이의 합을 나타낸다. 문자열 A의 길이를 |A|로 표기하고, A의 i번째 문자는 A[i]로 표기한다. 또한, 문자열 A의 i번째부터 j번째까지의 부분문자열을 A[i..j]로 표기한다. A[i..|A|]를 A의 접미사(suffix)라 하고, 특히 i>1일 때, A[i..|A|]를 A의 진접미사(proper suffix)라 한다. A[i..j]를 A의 접두사(prefix)라 하고, 특히 j<|A|일 때, A[1..j]를 A의 진접두사(proper prefix)라 한다.
LCNSS 문제를 정의하면 다음과 같다.
정의 1: 최장공통비상위문자열 문제(LCNSS 문제)
입력: Σ에 대한 문자열 집합 F={f1, f2, …, fm}
출력: 무한히 긴 길이의 CNSS를 생성할 수 있다면, LCNSS는 존재하지 않는다. 만약 LCNSS가 하나 이상 존재한다면 그 중 하나를 출력한다.
본 발명의 실시예에서는 F에 대해 다음 두 가지 조건을 가정한다.
(1) F 내의 어떤 문자열도 F에 속한 다른 문자열의 부분문자열이 아니다: 만약 fi가 fj의 부분문자열이라면 fi의 비상위문자열은 fj의 비상위문자열이기도 하다.
(2) F에는 Σ에 속한 각 문자 σ에 대해 σk(k≥2)인 형태의 문자열이 존재한다: 만약 σk가 없다면 σ를 무한히 연결(concatenation)시킨 문자열이 CNSS가 되므로 LCNSS는 존재하지 않는다.
접미사 그래프 모델 ГS를 이용하여 LCNSS 문제를 모델링 할 수 있다. ГS=(V,E)는 다음과 같이 정의된다. 우선 S={s1,…,sn}를 F에 속한 각 문자열 fi의 진접미사들의 집합이라 하자.
1) 정점 집합 V
각 s1∈S(1≤i≤n)에 대해, vi가 정의되고 그 외의 정점은 V 내에 존재하지 않는다. 그러면 V와 S사이에 일대일 대응관계가 성립한다.
2) 간선 집합 E
σsi(si∈S, σ∈Σ)인 문자열에 대한 집합
P(σsi)={x|x∈S∪F, x는 σsi의 접두사}를 정의한다. 그리고, P(σsi)에 속한 문자열 중 최장 문자열이 sj∈S일 경우 vj(sj에 대응)로부터 vi(si에 대응)로의 간선을 연결 해준다. 이때, 간선의 레이블은 σ이다.
이로부터 각 정점이 최대 |Σ|개수의 진입간선을 갖는다는 사실을 알 수 있다.
<예제 1>
F={aaa, bab, aab, bbb}일 때, F에 대한 진접미사 집합 S={a, aa, ab, b, bb}이다. 따라서, ГS는 5개의 정점으로 구성된다. S5(=bb)를 고려해 보자. σ가 a일 때 σs5(=abb)의 접미사는 {a, ab, abb}이며 이 중 S∪F에 포함된 접미사는 {a, ab}이다. 따라서, P(σs5)={a, ab}이고, P(σs5)에 속한 문자열 중 최장 문자열은 ab이다. 그러므로 v3로부터 v5로의 간선을 연결해준다. σ가 b일 때, σs5(=bbb)의 접미사는 {b, bb, bbb}이며 이 중 S∪F에 포함된 접미사 역시 {b, bb, bbb}이다. 따라서, P(σs5)={b, bb, bbb}이고, P(σs5)에 속한 문자열 중 최장 문자열은 bbb이다. 하지만 bbb는 S내에 존재하기 않기 때문에 간선이 존재하지 않는다. F={aaa, bab, aab, bbb}에 대한 접미사 그래프 ГS는 도 1과 같다.
위와 같은 방식으로 접미사 그래프 ГS를 정의 했을 때, 접미사 그래프 ГS와 LCNSS 문제 사이의 관계는 다음 보조정리 1과 같다.
보조정리 1
만약 ГS 그래프가 사이클이 없는 유향 그래프일 경우, F에 대한 LCNSS는 ГS의 최장 경로를 이용해 구할 수 있다. (1) 마지막 정점 전까지 최장 경로 상의 모든 정점들에 대해, 정점과 대응하는 각 문자열의 첫 번째 문자를 연속적으로 연결(concatenation)시킨다. (2) 최장 경로의 마지막 정점에 대응하는 문자열을 모두 연결(concatenation)시킨다.
<예제 2>
도 1의 접미사 그래프 ГS에 대한 최장 경로는 <v3, v5, v4, v2, v1>과 같다. F={aaa, bab, aab, bbb}에 대한 LCNSS는 상기한 보조정리 1에 의해 abbaa이다.
상기에서 정의한 LCNSS 문제는 접미사 그래프 ГS를 이용하여 O(∥F∥) 시간에 해결할 수 있다. 접미사 그래프를 이용하는 알고리즘에서는 접미사 그래프 ГS를 생성하기 위하여 일반화접미사트리(generalized suffix tree)를 이용한다. 한편, 접두사 그래프 모델을 이용하여 LCNSS를 찾을 수도 있다. 여기서, 접두사 그래프는 Aho-Corasick 알고리즘을 이용하여 생성될 수 있으며, 접두사 그래프를 이용한 알고리즘은 접두사 그래프의 최장 경로를 구한 후 그 경로 상에 있는 간선이 나타내는 문자를 연결시킴으로써 O(∥F∥) 시간에 LCNSS를 찾는다.
본 발명의 실시예에서는 접미사 그래프 ГS를 이용하여 LCNSS를 찾되, 접미사 그래프 ГS를 생성하기 위하여 일반화접미사배열(generalized suffix arrays)을 이용한다. 따라서, 이하에서는 일반화접미사배열을 이용하여 접미사 그래프 ГS를 생성하는 새로운 알고리즘에 대해 설명하기로 한다.
본 발명의 실시예에서, 접미사 그래프 ГS 생성 알고리즘은 총 세 단계로 구성된다. 도 2를 참조하면, 접미사 그래프 ГS 생성 알고리즘의 첫 번째 단계에서는 skew 알고리즘을 이용하여 일반화접미사배열(이하, GSA로 표기)을 생성하고(210), 두 번째 단계에서는 접미사 그래프 ГS의 정점 집합 V를 생성한다(220). 마지막으로, 세 번째 단계에서는 접미사 그래프 ГS의 간선 집합 E를 생성하기 위해 필요한 최근접접두사(nearest prefix)와 link(vi,σ) 함수를 계산하고, 접미사 그래프 ГS의 간선을 연결시켜 접미사 그래프 ГS를 완성한다(230). skew 알고리즘은 <J. Karkkainen, and P. Sanders, Simple linear work suffix array construction, In Proc. 30th International Colloquium on Automata, Languages and Programming, 943-955, 2003.>에서 소개하고 있다.
이하에서, 접미사 그래프 ГS 생성 알고리즘의 세 단계를 구체적으로 설명하기로 한다.
GSA 를 생성하는 단계(210)
GSA는 문자열 집합이 주어졌을 때, 각 문자열의 접미사들을 사전순(lexicographic order)으로 정렬한 배열이며 접미사들의 위치를 저장한다. GSA는 접미사 그래프 ГS를 생성하는데 기반이 되는 정보를 제공하며, GSA를 생성하기 위해 F에 속한 문자열 끝에 종결문자를 붙인 F'을 이용한다.
종결 문자 $i(1≤i≤m)는 사전 순으로 Σ내의 어떤 문자보다 빠르다고 가정한다. 또한 서로 다른 임의의 두 종결문자 $i, $j에 대해서 i<j일 경우 $i가 $j보다 빠르다고 가정한다. F={f1, f2, …, fm}일 때, F'={f1$1, f2$2, …, fm$m}이라 하자. 이 때, F' 에 대한 GSA는 두 정수의 쌍 <i, j>를 저장하며, 이는 F'의 문자열 f'i의 접미사 f'i[j..|f'i|]를 나타낸다.
접미사 배열은 문자열의 길이에 대해 선형시간에 구할 수 있다. 본 발명의 실시예에서는 skew 알고리즘을 이용하여 F'에 대한 GSA를 O(∥F∥) 시간에 구하고, GSA에 대한 최장공통접두사(longest common prefix, 이하 LCP로 표기) 배열을 O(∥F∥) 시간에 구할 수 있다.
본 발명에서 F'에 대한 GSA를 생성하는 이유는 skew 알고리즘을 적용하는 과정에서 마지막 문자가 유일해야 한다는 속성이 GSA를 재귀적으로 구하는 과정에서 중요하기 때문이다. 표 1은 F'={aaa$1, bab$2, aab$3, bbb$4}에 대한 GSA와 LCP 배열이다.
Figure 112011033320401-pat00001
접미사 그래프 Г S 의 정점 집합 V를 생성하는 단계(220)
앞으로 특별한 언급이 없다면, GSA의 원소가 나타내는 접미사는 종결문자를 제외한 접미사를 의미한다. 또한, GSA 상의 접미사라 함은 GSA의 각 원소가 나타내는 접미사를 의미하며, 접미사 α의 GSA 상의 인덱스라 함은 GSA[k]가 나타내는 접미사가 α일 때 이 때의 인덱스 k를 의미한다. 대표접미사 R(α)는 α의 GSA 상의 인덱스 중 가장 작은 인덱스 값을 가지며, GSA 상에서 접미사 α 를 대표하는 GSA의 원소를 의미한다.
접미사 그래프 ГS의 정점 vi는 R(α)이면서 접미사 α가 F에 포함되지 않는 GSA의 원소에 대해서 생성한다. 한편, GSA 상에서 인접한 두 문자열이 동일한 문자열일 경우 두 문자열간의 길이가 같고, 두 문자열간의 LCP 값이 두 문자열의 길이와 같다는 사실을 알 수 있다. 그리고, 이를 통해 GSA의 원소가 R(α)인지를 확인할 수 있다. 또한, 접미사 α가 F에 속할 경우 GSA[R(α)] 값은 항상 <i, 1>이므로 상수시간에 F에 대한 포함 여부를 확인할 수 있다. 또한, vλ(표 1)는 빈 문자열을 나타내는 정점으로 실제 접미사 그래프 ГS의 정점에는 포함되지 않고, link 함수의 계산을 위해서만 사용되는 특수한 정점이다.
접미사 그래프 Г S 의 간선 집합 E를 생성하는 단계(230)
접미사 그래프 ГS의 간선 집합 E를 생성하기 위해서는 최근접접두사(nearest prefix)와 link(vi,σ) 함수를 계산한다.
우선, 접미사 그래프 ГS의 간선 집합 E를 생성하는 단계(230)에서 사용될 기호에 대해서 알아보자. Len 배열은 접미사의 길이를 나타내는 배열로서, Len[k]는 GSA[k]가 나타내는 접미사(종결문자 제외)의 길이를 저장한다. str(vi)는 vi(∈V)에 대응되는 문자열 si(∈S)를 나타낸다. 또한, ver(si) 는 si에 대응되는 정점 vi를 나타낸다. link(vi,σ)는 다음과 같이 정의된다. str(vi)에 대한 P(σsi)의 최장 문자열이 sj일 경우에는 ver(sj)를 반환하고, fj(∈F)일 경우에는 null을 반환한다. 최근접접두사 배열 npx는 link함수를 구하기 위해 사용되며, npx[k]는 GSA[k]가 나타내는 접미사 β의 진접두사 중 GSA 상에 존재하는 가장 긴 접두사 α의 R(α)값으로 정의된다. 또한, α는 S∪F에 속한 문자열 중 β의 최장진접두사(longest proper prefix)이기도 하다.
<예제 3>
표 1에서 link(v1,a)[=v2]의 경우를 살펴보자. str(v1)=a며 P(aa)={a, aa}의 최장 문자열은 aa이다. 그리고, aa∈S이므로 ver(aa)인 v2를 반환한다. 또한 link(v2,a)의 경우, str(v2)=aa이고 P(aaa)={a, aa, aaa}의 최장 문자열은 aaa이다. 하지만 aaa∈F이므로 null을 반환한다.
표 1에서 GSA [8]이 나타내는 접미사는 aab이다. aab의 진접두사는 {a, aa}이다. 이 중 GSA 상에 존재하는 접두사는 {a, aa}이고, 가장 긴 접두사인 aa의 R(aa)는 6이다. 따라서, npx[8] = 6이 된다. npx[14]의 경우, GSA[14]이 나타내는 접미사 bab의 진접두사는 {b, ba}이다. 이 중 GSA 상에 존재하는 접두사는 {b}이다. 따라서, 가장 긴 접두사는 b가 되고 R(b)는 11이므로 npx[14] = 11이다.
link함수를 계산하기 위해 우선 npx 배열을 구한다. npx 배열은 대표접미사 R(α)에 대해서만 구하며, Len과 LCP 배열의 정보를 이용하여 구한다. 도 3은 스택에 기반하여 npx를 구하는 알고리즘(이하, 'GetNPX 알고리즘'이라 칭함)이다.
도 3에 도시한 바와 같이, GetNPX 알고리즘에서 4번 문장은 대표접미사 R(α)인지 확인하는 문장으로 GSA 상에서 인접한 두 문자열간의 문자열의 길이가 같고, 두 문자열간의 LCP 값이 두 문자열의 길이와 같다면, 동일한 문자열임을 알 수 있다. 도 3에 도시한 GetNPX 알고리즘에서 7번 내지 10번 문장은 스택을 이용하여 npx값을 구하는 문장으로 GSA가 접미사에 대해 정렬되어 있으므로 스택에 있는 접미사 중 가장 긴 접미사 α의 길이가 i번째 접미사 β의 LCP 값보다 작거나 같다면 β의 npx값임을 알 수 있다.
GetNPX 알고리즘의 수행 시간은 도 3의 7, 8번 문장의 수행 횟수에 비례한다. top의 값은 초기값이 1이고, 11번 문장에서 top의 값이 1씩 증가한다. 전체 루프가 최대 ∥F'∥-1번 수행되므로 top값의 상한은 ∥F'∥임을 알 수 있다. 따라서, 8번 문장은 최대 ∥F'∥번 수행되며, 7번 문장은 최대 2×∥F'∥번 수행된다. 즉, GetNPX 알고리즘의 총 수행시간은 O(∥F'∥) 이다. 또한, ∥F'∥=∥F∥+|F|이므로 GetNPX 알고리즘의 총 수행시간은 O(∥F∥)와 같다.
GetNPX 알고리즘 수행 시 R(α)이면서 α가 F에 포함되지 않는 GSA의 원소를 확인함으로써 부가적으로 접미사 그래프 ГS의 정점도 생성할 수 있다.
도 4는 link함수를 계산하는 알고리즘(이하, 'calLink 알고리즘'이라 칭함)이다. calLink 알고리즘에서는 δ(x,y), char(x,y)함수를 새로이 정의한다. δ(x,y)는 GSA[k] = <x,y>일 때 GSA[k]가 나타내는 접미사 α에 대한 ver(α)이다. char(x,y)는 fx(∈F)의 y번째 문자 fx[y]를 가리킨다.
link(vi, σ) 함수를 계산하는 과정은 두 가지 경우로 나누어 생각할 수 있다. 우선 임의의 σ에 대해 σ str(vi)가 GSA 상에 존재할 경우(도 4에서 문장 10-14) link함수의 정의에 따라 link(vi, σ)는 σ str(vi)∈F일 경우 null값을 σ str(vi)∈S일 경우 ver(σ str(vi))값을 가진다. 두 번째 경우(도 4에서. 문장 6-9)는 σ str(vi)가 GSA 상에 존재하지 않을 경우이다. str(vi)의 대표접미사 R(str(vi))의 npx값을 k (= npx[R(str(vi))])라 하고, GSA[k]가 나타내는 접미사를 α라 하자. 이때 link(vi, σ)는 ver(α)의 link(ver(α), σ) 함수 값을 가져온다. 도 4에서 3-5번 문장은 GSA[k]가 나타내는 접미사 α가 F에 속할 경우이다. GSA 상의 접미사 α가 여러 개 존재할 경우 7-8번 문장은 대표접미사 R(α)에 대해서 처음 한번만 수행된다.
보조정리 2.
calLink 알고리즘은 O(∥F∥) 시간에 올바른 link함수를 계산한다.
<증명>
link(vλ, σ)는 calLink 알고리즘(도 4에서 문장 10-14)을 통해 모든 σ∈Σ에 대해 link함수 값을 가진다. 왜냐하면, "F에는 Σ에 속한 각 문자 σ에 대해 σk(k≥2)인 형태의 문자열이 존재한다."는 가정에 의해 GSA 상에 접미사가 σ인 문자열은 Σ내의 모든 문자에 대해 존재하기 때문이다. 다음으로, i≥1인 vi에 대해 link(vi, σ)는 다음 두 가지 경우가 존재한다.
Figure 112011033320401-pat00002
1의 경우 calLink 알고리즘인 도 4에서 10-14번 문장에 의해 link(vi, σ)이 올바르게 구해짐이 link함수의 정의에 의해 명백하다.
2의 경우를 고려해 보자. 앞으로, 최장진접두사, 최장접두사(longest prefix), 접두사라 함은 S∪F에 속한 문자열을 대상으로 한다. str(vi)를 β라 했을 때, npx의 정의에 의해, GSA[npx[R(β)]]가 나타내는 접미사 α는 β의 최장진접두사이다. link(ver(α), σ)=ver(σα')라 하자. link함수의 정의에 의해 σα의 최장접두사는 σα'이다. 귀류법을 이용하여 σα'가 σβ의 최장접두사임을 증명한다. |β'|>|α'|인 σβ'가 σβ의 접두사라 가정하자. 만약, |β'|≤|α|라면 σβ'은 σα의 접두사이기도 하다. 이는 σα의 최장접두사가 σα'라는 사실에 모순된다. 또한, 만약 |β'|>|α|라면 β의 최장진접두사가 α라는 사실에 모순된다. 따라서 |β'|>|α'|인 β'은 존재하지 않는다.
calLink 알고리즘의 수행시간은 8번 문장의 총 수행시간에 비례한다. 전체루프는 ∥F'∥번 수행되며 8번 문장은 매 루프마다 |Σ|번 수행된다. 따라서, calLink 알고리즘의 총 수행시간은 O(|Σ|×∥F'∥)이며, ∥F'∥=∥F∥+|F|이므로 O(|Σ|×∥F∥)와 같다. 그러므로, calLink 알고리즘은 상수 크기 문자 집합에 대해 O(∥F∥)시간이 걸린다.
calLink 알고리즘을 이용하여 link함수를 계산 한 후, 접미사 그래프 ΓS 내의 모든 정점 vi에 대해 link(vi, σ)=vj일 때, vj로부터 vi로 향하는 간선을 연결시켜 ΓS를 완성할 수 있다. 하기 표 2는 F={aaa, bab, aab, bbb}에 대한 link함수이며, 이때의 접미사 그래프 ΓS는 도 1에 도시한 것과 같다.
Figure 112011033320401-pat00003
따라서, 상기한 과정에 의해 생성된 접미사 그래프 ΓS를 이용한 LCNSS 문제는 접미사배열을 이용함으로써 O(∥F∥) 시간에 해결할 수 있다. 상기한 바와 같이, 일반화접미사배열을 이용하여 ΓS를 O(∥F∥) 시간에 생성할 수 있음을 알 수 있다. 접미사 그래프 ΓS에 사이클이 존재하는지 여부는 깊이우선탐색(depth first search)을 통해 O(|V|+|E|) 시간에 알 수 있다. 이 과정은 ΓS의 정점의 수가 O(∥F∥)이고 간선의 수는 O(|Σ|×∥F∥)이므로 상수 크기 문자 집합에 대해 O(∥F∥)의 수행시간이 걸린다. 또한, 접미사 그래프 ΓS 상의 최장경로는 깊이우선탐색을 이용한 위상정렬(topological sort)을 통해 O(∥F∥) 시간에 찾을 수 있다. 최장경로가 주어졌을 경우 LCNSS는 보조정리 1에 의해 O(∥F∥) 시간에 구할 수 있음을 알 수 있다.
표 3은 PG(접두사 그래프 모델), SGA(접미사배열을 이용한 접미사 그래프 모델), SGT(접미사트리를 이용한 접미사 그래프 모델) 간의 그래프 생성 시간을 나타낸 실험 결과이다. 실험환경은 Intel Pentium4 3.0GHz CPU, 2GB RAM, Windows XP OS를 사용하였으며, 실험은 접두사 그래프 모델, 접미사배열을 이용한 접미사 그래프 모델, 접미사트리를 이용한 접미사 그래프 모델 각각의 그래프 생성 시간을 비교하고, F에 속한 문자열의 길이를 10으로 고정하며, ||F||의 크기를 10만부터 50만까지 10만 단위로 변화시켜가면서 수행한다. 문자열 집합 Σ의 크기는 4, 10, 26 세가지 경우에 대해서 측정한 것이다.
Figure 112011033320401-pat00004
표 3과 같이, 실험 결과 Σ의 크기가 커질수록 실행시간이 오래 걸리는 것을 알 수 있다. Σ의 크기가 커질수록 실행 시간이 오래 걸리는 이유는 두 가지 그래프 모델 모두 각 정점의 진출간선의 개수가 Σ의 크기에 비례하기 때문이다. 본 발명에서 제시한 알고리즘은 접두사 그래프 모델의 생성시간보다 평균 1.5배 느리게 나타났으며, 접미사 트리를 이용한 경우보다는 평균1.7배에서 2.1배 빠른 것으로 나타났다. 접두사 그래프 모델이 가장 빠른 이유는 다음과 같다. 접미사 그래프 모델의 경우, 접미사 그래프를 생성하기 위해서 중간 자료구조인 접미사배열이나 접미사트리를 생성한다. 하지만, 접두사 그래프모델의 경우, 중간 자료구조를 거치지 않고 직접 접두사 그래프를 생성하기 때문이다. 접미사배열을 이용한 알고리즘이 접미사트리를 이용한 알고리즘보다 빠른 이유는 중간 자료구조인 접미사배열이 접미사트리보다 생성시간이 빠르기 때문이다.
이와 같이, 본 발명의 실시예에 따르면, 접미사배열을 이용하여 접미사 그래프 ΓS를 선형시간에 생성하는 알고리즘을 제공한다. 접미사배열과 접미사트리는 모두 선형시간에 생성이 가능하지만 접미사배열을 이용하여 ΓS 그래프를 생성할 경우, 보다 빠르게 접미사 그래프 ΓS를 생성할 수 있으며, 더욱이 접미사배열을 이용하여 생성된 접미사 그래프를 적용함으로써 최장공통비상위문자열을 보다 빠르고 효율적으로 찾을 수 있다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.

Claims (5)

  1. 삭제
  2. 접미사 그래프 모델에 기반한 최장공통비상위문자열 검색 방법에 있어서,
    문자열 집합에 대하여 접미사배열(suffix array)을 이용하여 접미사 그래프를 생성하는 단계; 및
    상기 접미사 그래프를 이용하여 상기 문자열 집합에서 가장 긴 문자열에 해당되는 최장공통비상위문자열을 검색하는 단계
    를 포함하고,
    상기 접미사 그래프를 생성하는 단계는,
    상기 문자열 집합 내 각 문자열의 접미사를 사전 순으로 배열한 일반화접미사배열(generalized suffix array)을 생성하는 단계;
    상기 일반화접미사배열에 대하여 상기 접미사 그래프의 정점 집합을 생성하는 단계; 및
    상기 일반화접미사배열에 대한 최근접접두사(nearest prefix)와 link 함수를 이용하여 상기 접미사 그래프의 간선 집합을 생성하는 단계
    를 포함하는 최장공통비상위문자열 검색 방법.
  3. 제2항에 있어서,
    상기 일반화접미사배열을 생성하는 단계는,
    상기 문자열 집합에 속한 각 문자열 끝에 종결문자를 각각 붙인 문자열 집합을 이용하여 상기 일반화접미사배열을 생성하는 것
    을 특징으로 하는 최장공통비상위문자열 검색 방법.
  4. 제2항에 있어서,
    상기 접미사 그래프의 정점 집합을 생성하는 단계는,
    상기 일반화접미사배열 상의 대표 접미사이면서 상기 문자열 집합에 속하지 않는 접미사에 대하여 정점을 생성하는 것
    을 특징으로 하는 최장공통비상위문자열 검색 방법.
  5. 제2항에 있어서,
    상기 접미사 그래프의 간선 집합을 생성하는 단계는,
    상기 일반화접미사배열에 속한 접미사의 길이를 나타내는 배열인 Len 배열과 상기 일반화접미사배열에 대한 최장공통접두사(longest common prefix) 배열인 LCP 배열을 이용하여 상기 일반화접미사배열 상의 대표 접미사에 대한 최근접접두사 배열을 구한 후, 상기 최근접접두사 배열을 이용하여 상기 정점 집합에 속한 정점 간의 간선을 나타내는 링크 함수를 계산하는 것
    을 특징으로 하는 최장공통비상위문자열 검색 방법.
KR1020110042413A 2011-05-04 2011-05-04 접미사 배열을 이용한 최장공통비상위문자열 검색 방법 KR101088290B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020110042413A KR101088290B1 (ko) 2011-05-04 2011-05-04 접미사 배열을 이용한 최장공통비상위문자열 검색 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110042413A KR101088290B1 (ko) 2011-05-04 2011-05-04 접미사 배열을 이용한 최장공통비상위문자열 검색 방법

Publications (1)

Publication Number Publication Date
KR101088290B1 true KR101088290B1 (ko) 2011-11-30

Family

ID=45398358

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110042413A KR101088290B1 (ko) 2011-05-04 2011-05-04 접미사 배열을 이용한 최장공통비상위문자열 검색 방법

Country Status (1)

Country Link
KR (1) KR101088290B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101196145B1 (ko) 2012-02-21 2012-10-30 인하대학교 산학협력단 Cuda를 이용한 최장공통비상위문자열 그래프 모델의 병렬 생성 방법

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
Finding the LCNSS in linear time(2009.07.01)
T.Jiang and V.G. Timkovsky, Shortest consistent superstrings computable in polynomial time, Theoretical Computer Science, vol.143, no.1, pp.113-122, 1995*
한국정보과학회- 한국컴퓨터 학술발표논문집(2010.11)
한국정보과학회-정보과학회논문지(2009)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101196145B1 (ko) 2012-02-21 2012-10-30 인하대학교 산학협력단 Cuda를 이용한 최장공통비상위문자열 그래프 모델의 병렬 생성 방법

Similar Documents

Publication Publication Date Title
Ma et al. Simplify the usage of lexicon in Chinese NER
Gagie et al. Wheeler graphs: A framework for BWT-based data structures
Al-Khamaiseh et al. A survey of string matching algorithms
Crochemore et al. Order-preserving incomplete suffix trees and order-preserving indexes
Bentley et al. On the complexity of BWT-runs minimization via alphabet reordering
Belazzougui et al. Fast label extraction in the CDAWG
CN110362995A (zh) 一种基于逆向与机器学习的恶意软件检测及分析系统
CN104765882A (zh) 一种基于网页特征字符串的互联网网站统计方法
Katsura et al. Position heaps for parameterized strings
Christiansen et al. Compressed indexing with signature grammars
Kato et al. RNA pseudoknotted structure prediction using stochastic multiple context-free grammar
KR101088290B1 (ko) 접미사 배열을 이용한 최장공통비상위문자열 검색 방법
CN116149669B (zh) 一种基于二进制文件的软件成分分析方法、装置以及介质
Boucher et al. r-indexing the eBWT
Das et al. Weighted approximate parameterized string matching
Ruppert Finding the k shortest paths in parallel
Qian et al. 2d trie for fast parsing
Keeler et al. Alternating finite automata with limited universal branching
Jansson et al. A fast algorithm for optimal alignment between similar ordered trees
Yamamoto An automata-based recognition algorithm for semi-extended regular expressions
EP2688007A1 (en) Method of automatically extracting features from a computer readable file
Gu et al. Fast multiple pattern cartesian tree matching
Bodlaender et al. The parameterized complexity of sequence alignment and consensus
CN110851679A (zh) 一种基于正文节点特征的提取网页正文的方法和系统
Becker et al. Optimal wheeler language recognition

Legal Events

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

Payment date: 20140818

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20151001

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160912

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170829

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee