KR101222486B1 - 비결정적 유한 오토마타의 비결정성을 선택적으로 제거하기 위한 방법, 서버, 단말 장치 및 컴퓨터 판독 가능한 기록 매체 - Google Patents

비결정적 유한 오토마타의 비결정성을 선택적으로 제거하기 위한 방법, 서버, 단말 장치 및 컴퓨터 판독 가능한 기록 매체 Download PDF

Info

Publication number
KR101222486B1
KR101222486B1 KR20120038763A KR20120038763A KR101222486B1 KR 101222486 B1 KR101222486 B1 KR 101222486B1 KR 20120038763 A KR20120038763 A KR 20120038763A KR 20120038763 A KR20120038763 A KR 20120038763A KR 101222486 B1 KR101222486 B1 KR 101222486B1
Authority
KR
South Korea
Prior art keywords
state
transition
transitions
maximum probability
common
Prior art date
Application number
KR20120038763A
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 KR20120038763A priority Critical patent/KR101222486B1/ko
Priority to EP12873936.4A priority patent/EP2838032B1/en
Priority to US14/391,503 priority patent/US9251290B2/en
Priority to CN201280072270.2A priority patent/CN104246749B/zh
Priority to PCT/KR2012/011372 priority patent/WO2013154252A1/ko
Priority to EP16200936.9A priority patent/EP3171278A1/en
Application granted granted Critical
Publication of KR101222486B1 publication Critical patent/KR101222486B1/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/903Querying
    • 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/903Querying
    • G06F16/90335Query processing
    • G06F16/90344Query 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

본 발명은 비결정적 유한 오토마타의 비결정성을 선택적으로 제거하기 위한 방법, 서버, 단말 장치 및 컴퓨터 판독 가능한 기록 매체에 관한 것이다. 본 발명의 일 태양에 따르면, 비결정적 유한 오토마타(Nondeterministic Finite Automata: NFA)의 비결정성을 선택적으로 제거하기 위한 방법으로서, (a) 비결정적 유한 오토마타 내의 상태 중 특정 상태로부터 이동하여 도달할 확률이 가장 높은 것으로 산출된 상태를 최대 확률 상태로 결정하는 단계, (b) 비결정적 유한 오토마타 내에서 최대 확률 상태를 상태 i로 이동시키는 천이로 이루어진 제1 천이 집합과 최대 확률 상태를 상태 j로 이동시키는 천이로 이루어진 제2 천이 집합 사이에 공통되는 천이가 적어도 하나 존재하는지 여부를 판단하는 단계, 및 (c) 제1 천이 집합과 제2 천이 집합 사이에 공통되는 천이가 적어도 하나 존재하는 것으로 판단되면, 제1 천이 집합 및 제2 천이 집합 각각에서 공통되는 천이를 제외시키고 공통되는 적어도 하나의 천이로만 이루어진 공통 천이 집합에 의하여 최대 확률 상태로부터 이동한 결과 도달하는 상태 k를 생성하는 단계를 포함하는 방법이 제공된다. 본 발명에 의하면, 비결정적 유한 오토마타의 비결정성을 선택적으로 제거할 수 있으므로, 문자열을 검색할 때에 메모리 사용량을 줄이고 검색 속도를 향상시키는 효과를 달성할 수 있다.

Description

비결정적 유한 오토마타의 비결정성을 선택적으로 제거하기 위한 방법, 서버, 단말 장치 및 컴퓨터 판독 가능한 기록 매체{METHOD, SERVER, TERMINAL, AND COMPUTER-READABLE RECORDING MEDIUM FOR SELECTIVELY ELIMINATING NONDETERMINISTIC ELEMENT OF NONDETERMINISTIC FINITE AUTOMATA}
본 발명은 비결정적 유한 오토마타(Nondeterministic Finite Automata: NFA)의 비결정성을 선택적으로 제거하기 위한 방법, 서버, 단말 장치 및 컴퓨터 판독 가능한 기록 매체에 관한 것이다. 보다 상세하게는, 본 발명은, 비결정적 유한 오토마타의 문자열 검색 속도 저하의 원인이 되는 활성 상태 증가를 유발하는 천이를 선별하여 그 비결정성을 제거함으로써 한정된 메모리 자원을 효율적으로 사용할 수 있도록 하기 위한 방법, 서버, 단말 장치 및 컴퓨터 판독 가능한 기록 매체에 관한 것이다.
정규 표현식(regular expression)은 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어로서 간단히 정규식이라고도 하는데, 컴퓨터를 비롯한 연산 장치에서 문자열을 비교하거나 검색할 때 찾고자 하는 문자열을 표현하는 용도로 많이 사용된다. 정규 표현식을 다루는 전산학의 분야인 형식 언어 이론에 따르면, 정규 표현식은 아무 내용도 없는 문자열을 의미하는 ?과, 한 문자로만 이루어진 정규 표현식(예를 들면, a, b, c 등)을 기본으로 하고 있으며, 이어 붙이기(abc, bbbb, baba 등), 선택(ab|c, ab|ba 등), 반복(c* 등)과 같은 연산자를 이용하여 기본적인 정규 표현식을 조합함으로써 다양한 패턴의 문자열을 나타낼 수 있다. 또한, 정규 표현식이 너무 길어지거나 복잡해지는 경우가 발생할 수 있기 때문에, 사용상의 편의를 위해 다양한 확장 문법을 덧붙인 형태의 정규 표현식이 소개되기도 하였는데, 컴퓨터 프로그래밍 언어인 펄에서 사용되는 방식에 따라 구현한 PCRE(Perl Compatible Regular Expressions)나 유닉스 계열 컴퓨터 운영체제의 표준에 정의된 POSIX 정규 표현식 등이 이에 속한다.
정규 표현식을 이용하여 문자열을 검색함에 있어서도 구체적으로 어떤 방식에 따라 검색을 수행하느냐에 따라 검색 시간과 메모리 사용량이 크게 달라지기 때문에, 정규 표현식을 이용하여 문자열을 효율적으로 검색하기 위한 방법에 대한 연구가 활발하게 이루어지고 있다.
먼저, 정규 표현식을 이용하여 문자열 검색을 수행하는 종래 기술의 일 예로서 정규 표현식을 비결정적 유한 오토마타(Nondeterministic Finite Automata: NFA)로 변환하여 문자열을 검색하는 방법이 소개된 바 있다.
도 1은 종래 기술에 따라 변환된 일반적인 NFA를 예시적으로 나타내는 도면이다. 도 1에서, 숫자를 포함하는 원은 NFA의 상태를 나타내고, 화살표와 그에 병기된 문자는 해당 문자가 입력될 경우 화살표를 따라 한 상태에서 다른 상태로 이동하게 되는 천이(遷移)를 나타내며, 숫자를 포함하는 원 중 두 개의 동심원으로 이루어진 것은 종료 상태를 나타내는데, 시작 상태에서부터 출발하여 천이된 결과 종료 상태에 도달하면 검색하고자 하는 문자열이 검색되었음을 의미하게 된다. 도 1을 참조하면, 검색하고자 하는 문자열은 세 글자가 연속으로 모두 a 및 b 중 어느 하나이거나 연속한 세 글자가 bad인 문자열일 수 있고, 이를 정규 표현식으로 나타내면 "[ab]{3}|bad"일 수 있으며, 이를 NFA로 나타내면 도 1과 같이 도시될 수 있다.
도 1에 도시된 NFA를 이용하여 "gjekf3jmbab0d1f"라는 입력 문자열에서 원하는 문자열을 검색하는 과정을 살펴보기로 한다.
먼저, 시작 상태인 상태 0에서부터 시작하여 입력 문자열을 한 글자씩 읽어 들이면서 어떤 상태가 다른 상태로 이동하는지 여부를 검사하게 된다. 첫 번째 문자는 "g"이지만, "g"가 입력되는 것에 대응하여 상태 0을 다른 상태로 이동시키는 천이는 없으므로, 계속하여 상태 0에 머무르게 된다. 두 번째 문자인 "j" 역시 해당하는 천이가 없으므로 상태 0에 머무르면서 그 다음 문자를 읽게 된다. 따라서, 이러한 경우에는, 상태 천이 여부 검사가 필요한 상태, 즉, 활성 상태는 상태 0으로서 총 1개가 된다.
이런 식으로 계속하여 상태 0에 머무르는 상황에서 "gjekf3jm"까지 입력되고 나면 그 다음에 입력되는 문자는 "b"가 되는데, 도 1의 NFA에는 "b"가 입력되는 경우 상태 0을 상태 1 및 상태 2로 이동시키는 천이가 존재하므로, 상태 0은 상태 1 및 상태 2로 각각 이동하게 된다. 따라서, "b"가 입력된 직후에는 상태 천이 여부 검사가 필요한 상태, 즉, 활성 상태는 상태 0, 상태 1 및 상태 2로서 총 3개가 된다.
그 다음에 입력되는 문자는 "a"가 되는데, 도 1의 NFA에는 "a"가 입력되는 경우에 활성 상태인 상태 0을 상태 1로 이동시키는 천이, 활성 상태인 상태 1을 상태 3으로 이동시키는 천이 및 활성 상태인 상태 2를 상태 4로 이동시키는 천이가 존재하므로, 상태 0, 상태 1 및 상태 2는 각각 상태 1, 상태 3 및 상태 4로 이동하게 된다. 따라서, "ba"가 입력된 직후에는 상태 천이 여부 검사가 필요한 상태, 즉, 활성 상태는 상태 0, 상태 1, 상태 3 및 상태 4로서 총 4개가 된다.
그 다음에 입력되는 문자는 "b"가 되는데, 도 1의 NFA에는 "b"가 입력되는 경우에 활성 상태인 상태 0을 상태 1 및 상태 2로 이동시키는 천이, 활성 상태인 상태 1을 상태 3으로 이동시키는 천이 및 활성 상태인 상태 3을 상태 5로 이동시키는 천이가 존재하므로, 상태 0은 상태 1 및 상태 2로 이동하고 상태 1은 상태 3으로 이동하며 상태 3은 상태 5로 이동하게 된다. 따라서, "bab"가 입력된 직후에는 천이 여부 검사가 필요한 상태, 즉, 활성 상태는 상태 0, 상태 1, 상태 2, 상태 3 및 상태 5로서 총 5개가 된다. 한편, 이로써 도 1의 NFA의 종료 상태인 상태 5에 도달했기 때문에, 주어진 입력 문자열에서 원하는 문자열, 즉, 문자열 "bab"를 찾은 것으로 취급될 수 있다.
이상에서 살펴본 바와 같이, 도 1에 도시된 종래 기술에 따른 NFA에는 문자가 입력되는 것에 대응하여 하나의 상태를 두 개 이상의 상태로 이동시키는 천이가 존재할 수 있다. 따라서, 종래 기술에 따른 NFA를 이용하여 문자열을 검색하게 되면, 검색의 대상이 되는 문자열의 문자가 하나씩 입력됨에 따라 검사가 필요한 상태, 즉, 활성 상태의 수가 많아지게 되는데, NFA의 속성상 문자가 입력될 때마다 모든 활성 상태를 검사해야 하므로, 증가된 활성 상태의 수만큼 검색 속도가 저하되는 문제점이 발생하게 된다.
한편, 정규 표현식을 이용하여 문자열 검색을 수행하는 종래 기술의 다른 예로서 비결정적 유한 오토마타(Nondeterministic Finite Automata: NFA)를 결정적 유한 오토마타(Deterministic Finite Automata: DFA)로 변환하여 문자열을 검색하는 방법도 소개된 바 있다.
DFA를 이용하여 문자열을 검색하면, 활성 상태의 수가 항상 한 개로 유지되기 때문에 검색 속도를 향상시킬 수 있고 입력 문자열 처리 과정을 단순화할 수 있다는 장점은 있지만, 기본적으로 NFA를 DFA로 변환하는 과정에서 상당한 메모리 자원이 요구된다는 문제점이 존재한다. 또한, 검색하고자 하는 문자열(즉, 정규 표현식)이 복수이거나 그 패턴이 복잡해지면 이를 처리하기 위한 메모리 사용량이 급격하게 증가하기 때문에 DFA를 이용하여 복수의 정규 표현식이나 긴 패턴의 정규 표현식을 처리하기에는 무리가 있다는 한계도 있다. 특히, 최근에는 컴퓨터 보안에 대한 요구가 증대되면서 검색하고자 하는 다양한 문자열 패턴을 통합하여 검색하는 것이 일반적인데, 이러한 경우 정규 표현식이 매우 복잡해질 수 있기 때문에 보통의 컴퓨터 메모리 자원 내에서 DFA를 이용하여 문자열 검색을 수행하는 것이 불가능해질 수도 있다.
일반적인 DFA를 이용하여 문자열을 검색하는 방법에 의할 때 발생할 수 있는 문제점을 해결하기 위하여, DFA를 압축하여 메모리 사용량을 줄이는 방법이 소개되기도 하였다. 즉, DFA가 가지고 있는 천이가 비슷한 복수의 상태를 모아서 하나의 상태로 통합하거나 여러 상태에서 공통으로 사용되는 복수의 천이를 모아서 하나의 천이로 통합하는 것이다. 하지만, 이러한 방법에 따르면, 서로 완전히 동일하지 않은 상태나 천이도 통합될 수 있기 때문에 입력 문자열을 정상적으로 처리할 수 없는 경우가 발생할 수 있고 나아가 천이 실패가 발생할 수도 있다는 문제점이 있다. 이와 같이 천이 실패가 발생하면 추가적인 메모리 참조가 요구되기 때문에, 메모리 사용량은 압축 전에 비해 적을지라도 메모리 참조 회수는 압축 전보다 많아져 결과적으로 검색 속도 하락을 피할 수 없게 되는 문제점이 발생한다.
따라서, 비결정적 유한 오토마타를 사용하면서도 활성 상태 수를 최소화하여 메모리를 적게 사용하여 빠른 문자열 검색이 가능하도록 하는 기술의 필요성이 대두되고 있다.
본 발명은 상술한 문제점을 모두 해결하는 것을 그 목적으로 한다.
또한, 비결정적 유한 오토마타(Nondeterministic Finite Automata: NFA) 내의 상태 중 도달할 확률이 높은 상태를 대상으로 하여 해당 상태가 서로 다른 둘 이상의 상태로 이동하지 않도록 NFA의 상태와 천이를 변경함으로써, NFA의 활성 상태의 수를 줄이고 NFA의 비결정성을 선택적으로 제거하는 것을 다른 목적으로 한다.
또한, 최대 확률 상태가 종료 상태에 도달하거나 NFA의 총 상태 수가 기설정된 수를 초과하는 등의 소정의 조건이 만족되면 비결정성 제거 과정을 종료함으로써, 주어진 메모리 자원 내에서만 NFA의 비결정성을 효율적으로 제거하는 것을 또 다른 목적으로 한다.
상기 목적을 달성하기 위한 본 발명의 대표적인 구성은 다음과 같다.
본 발명의 일 태양에 따르면, 비결정적 유한 오토마타(Nondeterministic Finite Automata: NFA)의 비결정성을 선택적으로 제거하기 위한 방법으로서, (a) 비결정적 유한 오토마타 내의 상태 중 특정 상태로부터 이동하여 도달할 확률이 가장 높은 것으로 산출된 상태를 최대 확률 상태로 결정하는 단계, (b) 상기 비결정적 유한 오토마타 내에서 상기 최대 확률 상태를 상태 i로 이동시키는 천이로 이루어진 제1 천이 집합과 상기 최대 확률 상태를 상태 j로 이동시키는 천이로 이루어진 제2 천이 집합 사이에 공통되는 천이가 적어도 하나 존재하는지 여부를 판단하는 단계, 및 (c) 상기 제1 천이 집합과 상기 제2 천이 집합 사이에 상기 공통되는 천이가 적어도 하나 존재하는 것으로 판단되면, 상기 제1 천이 집합 및 상기 제2 천이 집합 각각에서 상기 공통되는 천이를 제외시키고 상기 공통되는 적어도 하나의 천이로만 이루어진 공통 천이 집합에 의하여 상기 최대 확률 상태로부터 이동한 결과 도달하는 상태 k를 생성하는 단계 - 상기 상태 k는 상기 비결정적 유한 오토마타 내에 새로 추가됨 - 를 포함하는 방법이 제공된다.
본 발명의 다른 태양에 따르면, 비결정적 유한 오토마타(Nondeterministic Finite Automata: NFA)의 비결정성을 선택적으로 제거하기 위한 방법으로서, (a) 비결정적 유한 오토마타 내에서 시작 상태를 상태 i로 이동시키는 천이로 이루어진 제1 천이 집합과 상기 시작 상태를 상태 j로 이동시키는 천이로 이루어진 제2 천이 집합 사이에 공통되는 천이가 적어도 하나 존재하는지 여부를 판단하는 단계, (b) 상기 제1 천이 집합과 상기 제2 천이 집합 사이에 상기 공통되는 천이가 적어도 하나 존재하는 것으로 판단되면, 상기 제1 천이 집합 및 상기 제2 천이 집합 각각에서 상기 공통되는 천이를 제외시키고 상기 공통되는 적어도 하나의 천이로만 이루어진 공통 천이 집합에 의하여 상기 시작 상태로부터 이동한 결과 도달하는 상태 k를 생성하는 단계 - 상기 상태 k는 상기 비결정적 유한 오토마타 내에 새로 추가됨 - , 및 (c) 상기 시작 상태로부터 이동하여 도달할 수 있는 적어도 하나의 상태 각각에 대하여 검색의 대상이 되는 문자열이 입력되는 경우에 상기 시작 상태로부터 이동하여 상기 적어도 하나의 상태에 도달할 확률을 각각 산출하고, 상기 산출된 확률이 가장 높은 상태를 최대 확률 상태로 결정하는 단계를 포함하는 방법이 제공된다.
본 발명의 또 다른 태양에 따르면, 비결정적 유한 오토마타(Nondeterministic Finite Automata: NFA)의 비결정성을 선택적으로 제거하기 위한 서버로서, 비결정적 유한 오토마타 내의 상태 중 특정 상태로부터 이동하여 도달할 확률이 가장 높은 것으로 산출된 상태를 최대 확률 상태로 결정하는 최대 확률 상태 결정부, 및 상기 비결정적 유한 오토마타 내에서 상기 최대 확률 상태를 상태 i로 이동시키는 천이로 이루어진 제1 천이 집합과 상기 최대 확률 상태를 상태 j로 이동시키는 천이로 이루어진 제2 천이 집합 사이에 공통되는 천이가 적어도 하나 존재하는지 여부를 판단하고, 상기 제1 천이 집합과 상기 제2 천이 집합 사이에 상기 공통되는 천이가 적어도 하나 존재하는 것으로 판단되면, 상기 제1 천이 집합 및 상기 제2 천이 집합 각각에서 상기 공통되는 천이를 제외시키고 상기 공통되는 적어도 하나의 천이로만 이루어진 공통 천이 집합에 의하여 상기 최대 확률 상태로부터 이동한 결과 도달하는 상태 k를 생성하는 활성 상태 제거부 - 상기 상태 k는 상기 비결정적 유한 오토마타 내에 새로 추가됨 - 를 포함하는 서버가 제공된다.
본 발명의 또 다른 태양에 따르면, 비결정적 유한 오토마타(Nondeterministic Finite Automata: NFA)의 비결정성을 선택적으로 제거하기 위한 서버로서, 비결정적 유한 오토마타 내에서 시작 상태를 상태 i로 이동시키는 천이로 이루어진 제1 천이 집합과 상기 시작 상태를 상태 j로 이동시키는 천이로 이루어진 제2 천이 집합 사이에 공통되는 천이가 적어도 하나 존재하는지 여부를 판단하고, 상기 제1 천이 집합과 상기 제2 천이 집합 사이에 상기 공통되는 천이가 적어도 하나 존재하는 것으로 판단되면, 상기 제1 천이 집합 및 상기 제2 천이 집합 각각에서 상기 공통되는 천이를 제외시키고 상기 공통되는 적어도 하나의 천이로만 이루어진 공통 천이 집합에 의하여 상기 시작 상태로부터 이동한 결과 도달하는 상태 k를 생성하는 활성 상태 제거부 - 상기 상태 k는 상기 비결정적 유한 오토마타 내에 새로 추가됨 - , 및 상기 시작 상태로부터 이동하여 도달할 수 있는 적어도 하나의 상태 각각에 대하여 검색의 대상이 되는 문자열이 입력되는 경우에 상기 시작 상태로부터 이동하여 상기 적어도 하나의 상태에 도달할 확률을 각각 산출하고, 상기 산출된 확률이 가장 높은 상태를 최대 확률 상태로 결정하는 최대 확률 상태 결정부를 포함하는 서버가 제공된다.
본 발명의 또 다른 태양에 따르면, 비결정적 유한 오토마타(Nondeterministic Finite Automata: NFA)의 비결정성을 선택적으로 제거하기 위한 단말 장치로서, 비결정적 유한 오토마타 내의 상태 중 특정 상태로부터 이동하여 도달할 확률이 가장 높은 것으로 산출된 상태를 최대 확률 상태로 결정하는 최대 확률 상태 결정부, 및 상기 비결정적 유한 오토마타 내에서 상기 최대 확률 상태를 상태 i로 이동시키는 천이로 이루어진 제1 천이 집합과 상기 최대 확률 상태를 상태 j로 이동시키는 천이로 이루어진 제2 천이 집합 사이에 공통되는 천이가 적어도 하나 존재하는지 여부를 판단하고, 상기 제1 천이 집합과 상기 제2 천이 집합 사이에 상기 공통되는 천이가 적어도 하나 존재하는 것으로 판단되면, 상기 제1 천이 집합 및 상기 제2 천이 집합 각각에서 상기 공통되는 천이를 제외시키고 상기 공통되는 적어도 하나의 천이로만 이루어진 공통 천이 집합에 의하여 상기 최대 확률 상태로부터 이동한 결과 도달하는 상태 k를 생성하는 활성 상태 제거부 - 상기 상태 k는 상기 비결정적 유한 오토마타 내에 새로 추가됨 - 를 포함하는 단말 장치가 제공된다.
본 발명의 또 다른 태양에 따르면, 비결정적 유한 오토마타(Nondeterministic Finite Automata: NFA)의 비결정성을 선택적으로 제거하기 위한 단말 장치로서, 비결정적 유한 오토마타 내에서 시작 상태를 상태 i로 이동시키는 천이로 이루어진 제1 천이 집합과 상기 시작 상태를 상태 j로 이동시키는 천이로 이루어진 제2 천이 집합 사이에 공통되는 천이가 적어도 하나 존재하는지 여부를 판단하고, 상기 제1 천이 집합과 상기 제2 천이 집합 사이에 상기 공통되는 천이가 적어도 하나 존재하는 것으로 판단되면, 상기 제1 천이 집합 및 상기 제2 천이 집합 각각에서 상기 공통되는 천이를 제외시키고 상기 공통되는 적어도 하나의 천이로만 이루어진 공통 천이 집합에 의하여 상기 시작 상태로부터 이동한 결과 도달하는 상태 k를 생성하는 활성 상태 제거부 - 상기 상태 k는 상기 비결정적 유한 오토마타 내에 새로 추가됨 - , 및 상기 시작 상태로부터 이동하여 도달할 수 있는 적어도 하나의 상태 각각에 대하여 검색의 대상이 되는 문자열이 입력되는 경우에 상기 시작 상태로부터 이동하여 상기 적어도 하나의 상태에 도달할 확률을 각각 산출하고, 상기 산출된 확률이 가장 높은 상태를 최대 확률 상태로 결정하는 최대 확률 상태 결정부를 포함하는 단말 장치가 제공된다.
이 외에도, 본 발명을 구현하기 위한 다른 방법, 서버, 단말 장치 및 상기 방법을 실행하기 위한 컴퓨터 프로그램을 기록하기 위한 컴퓨터 판독 가능한 기록 매체가 더 제공된다.
본 발명에 의하면, 비결정적 유한 오토마타(Nondeterministic Finite Automata: NFA)의 활성 상태의 수를 줄이고 NFA의 비결정성을 선택적으로 제거할 수 있으므로, NFA를 이용하여 문자열을 검색할 때에 메모리 사용량을 줄이고 검색 속도를 향상시킬 수 있게 되는 효과를 달성할 수 있다.
또한, 본 발명에 의하면, NFA의 비결정성 제거 과정이 최대 확률 상태가 종료 상태에 도달하기까지 최대 확률 상태를 따라가면서 해당 상태에 대한 비결정성을 제거하게 되므로, NFA의 비결정성 제거의 경중을 따져 비결정성 제거의 효율이 가장 높아지도록 할 수 있다.
도 1은 종래 기술에 따라 변환된 일반적인 NFA를 예시적으로 나타내는 도면이다.
도 2는 본 발명의 일 실시예에 따른 문자열 검색 서버의 내부 구성을 예시적으로 나타내는 도면이다.
도 3 내지 도 5는 본 발명의 일 실시예에 따라 NFA의 비결정성을 제거하는 과정을 예시적으로 나타내는 도면이다.
도 6은 도 1의 일반적인 NFA를 이용하여 문자열을 검색하는 경우와 도 5의 본 발명에 따라 비결정성이 선택적으로 제거된 NFA를 이용하여 문자열을 검색하는 경우를 비교한 결과를 나타내는 도면이다.
후술하는 본 발명에 대한 상세한 설명은, 본 발명이 실시될 수 있는 특정 실시예를 예시로서 도시하는 첨부 도면을 참조한다. 이들 실시예는 당업자가 본 발명을 실시할 수 있기에 충분하도록 상세히 설명된다. 본 발명의 다양한 실시예는 서로 다르지만 상호 배타적일 필요는 없음이 이해되어야 한다. 예를 들어, 여기에 기재되어 있는 특정 형상, 구조 및 특성은 일 실시예에 관련하여 본 발명의 정신 및 범위를 벗어나지 않으면서 다른 실시예로 구현될 수 있다. 또한, 각각의 개시된 실시예 내의 개별 구성요소의 위치 또는 배치는 본 발명의 정신 및 범위를 벗어나지 않으면서 변경될 수 있음이 이해되어야 한다. 따라서, 후술하는 상세한 설명은 한정적인 의미로서 취하려는 것이 아니며, 본 발명의 범위는, 적절하게 설명된다면, 그 청구항들이 주장하는 것과 균등한 모든 범위와 더불어 첨부된 청구항에 의해서만 한정된다. 도면에서 유사한 참조부호는 여러 측면에 걸쳐서 동일하거나 유사한 기능을 지칭한다.
이하에서는, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있도록 하기 위하여, 본 발명의 바람직한 실시예들에 관하여 첨부된 도면을 참조하여 상세히 설명하기로 한다.
문자열 검색 서버의 구성
이하에서는, 본 발명의 구현을 위하여 중요한 기능을 수행하는 문자열 검색 서버의 내부 구성 및 각 구성요소의 기능에 대하여 살펴보기로 한다.
본 발명의 일 실시예에 따르면, 개인용 컴퓨터(예를 들어, 데스크탑 컴퓨터, 노트북 컴퓨터 등), 서버, 워크스테이션, PDA, 웹 패드, 이동 전화기, 스마트폰 등과 같이 메모리 수단을 구비하고 마이크로 프로세서를 탑재하여 연산 능력을 갖춘 장치라면 얼마든지 본 발명의 문자열 검색 서버(100)로서 채택될 수 있다.
도 2는 본 발명의 일 실시예에 따른 문자열 검색 서버의 내부 구성을 예시적으로 나타내는 도면이다.
도 2를 참조하면, 본 발명의 일 실시예에 따른 문자열 검색 서버(100)는, NFA 획득부(110), 비결정성 제거부(120), 검색 수행부(130), 통신부(140) 및 제어부(150)를 포함할 수 있고, 여기서, 비결정성 제거부(120)는 최대 확률 상태 결정부(121) 및 활성 상태 제거부(122)를 포함할 수 있다. 본 발명의 일 실시예에 따르면, NFA 획득부(110), 비결정성 제거부(120), 검색 수행부(130), 통신부(140) 및 제어부(150)는 그 중 적어도 일부가 외부 시스템(미도시됨)과 통신하는 프로그램 모듈들일 수 있다. 이러한 프로그램 모듈들은 운영 시스템, 응용 프로그램 모듈 및 기타 프로그램 모듈의 형태로 문자열 검색 서버(100)에 포함될 수 있으며, 물리적으로는 여러 가지 공지의 기억 장치 상에 저장될 수 있다. 또한, 이러한 프로그램 모듈들은 문자열 검색 서버(100)와 통신 가능한 원격 기억 장치에 저장될 수도 있다. 한편, 이러한 프로그램 모듈들은 본 발명에 따라 후술할 특정 업무를 수행하거나 특정 추상 데이터 유형을 실행하는 루틴, 서브루틴, 프로그램, 오브젝트, 컴포넌트, 데이터 구조 등을 포괄하지만, 이에 제한되지는 않는다.
먼저, 본 발명의 일 실시예에 따르면, NFA 획득부(110)는 검색의 대상이 되는 정규 표현식에 대응되는 NFA를 획득하는 기능을 수행한다. 여기서, 검색의 대상이 되는 정규 표현식이 NFA로 변환된 후에야 NFA 획득부(100)에 의해 획득되는 경우도 상정할 수 있고(이러한 경우 변환 과정은 소정의 정규 표현식 변환부(미도시됨)에 의하여 수행될 것이다.), 검색의 대상이 되는 정규 표현식 자체가 NFA 획득부(100)에 의해 획득된 후 NFA 획득부(100)에 의해 NFA로 변환되는 경우도 상정할 수 있을 것이다. 일반적으로, NFA는 상태 집합 S, 천이 집합 Σ, 천이 함수 δ, 시작 상태 s0, 종료 상태 집합 F로 구성된다. 여기서, 시작 상태와 종료 상태는 모두 상태 집합 S에 속한다. 또한, 본 발명에서와 같이, 정규 표현식을 이용하여 문자열을 검색하는 경우라면 입력 문자는 어떠한 아스키 코드값에도 해당될 수 있으므로 천이 집합 Σ 는 {0, 1, 2,..., 255}가 될 수 있다.
정규 표현식을 NFA로 변환하기 위해서는 소정의 정규 표현식 변환 기술이 요구되는데, 이러한 정규 표현식 변환 기술로서, A. Bruggemann-Klein이 저술하고 1993년 "Theoretical Computer Science"라는 저서에 수록된 "Regular expressions into finite automata"이라는 논문을 참조할 수 있을 것이다(상기 논문의 내용은 그 전체가 본 명세서에 병합되어 있는 것으로 고려되어야 한다). 상기 논문에는 정규 표현식을 비교적 단순한 형태의 오토마타인 글루시코프(Glushkov) 오토마타로 변환하는 방법에 대하여 기재되어 있다. 물론, 본 발명에 적용 가능한 정규 표현식 변환 기술이 상기 논문에 기재된 방법에만 한정되는 것은 아니며, 다양한 변형예를 적용하여 본 발명을 구현할 수 있을 것이다. 예를 들면, 본 발명의 일 실시예에 따른 정규 표현식 변환부(110)는 톰슨(Thompson) 오토마타, 팔로우(Follow) 오토마타, 안티미로프(Antimirov) 오토마타 등의 다른 형태로 정규 표현식을 변환시킬 수도 있다. 다만, 이하에서는, 발명의 상세한 설명의 일관성을 유지하기 위하여 글루시코프 오토마타를 기준으로 하여 본 발명을 설명하기로 한다.
다음으로, 본 발명의 일 실시예에 따르면, 비결정성 제거부(120)는, 정규 표현식으로부터 변환된 NFA를 이용하여 문자열을 검색하는 과정에서 활성 상태가 증가하는 것을 최소화함으로써 NFA의 비결정성을 제거하는 기능을 수행한다.
보다 구체적으로, 본 발명의 일 실시예에 따른 비결정성 제거부(120)의 최대 확률 상태 결정부(121)는 NFA 내의 상태 중 입력 문자열이 입력됨에 따라 도달하게 될 확률이 높은 최대 확률 상태를 결정할 수 있다(여기서, 최대 확률 상태란 모든 상태 중에서 가장 높은 확률을 가지는 상태를 의미하는 것이 아니라 임의의 상태로부터 도달할 수 있는 상태 중 가장 높은 확률을 가지는 상태를 의미하는 것이므로, 최대 확률 상태에 해당하는 상태가 복수 개 존재할 수 있으며, 각각의 최대 확률값도 다를 수 있음은 물론이다). 또한, 본 발명의 일 실시예에 따른 비결정성 제거부(120)의 활성 상태 제거부(122)는, 최대 확률 상태가 서로 다른 둘 이상의 상태로 이동하지 않도록 NFA의 상태와 천이를 변경하여 활성 상태의 증가를 억제시키는 기능을 수행할 수 있다. 보다 구체적으로, 활성 상태 제거부(122)는 최대 확률 상태로부터 다른 상태로 이동시키는 천이 집합 사이에 공통되는 천이(즉, 활성 상태를 증가시키는 천이)가 존재하면 공통되는 천이만으로 이루어진 천이 집합에 의하여 최대 확률 상태로부터 이동한 결과 도달하는 새로운 상태를 생성함으로써, 입력 문자열의 문자가 입력됨에 따라 최대 확률 상태로부터 서로 다른 둘 이상의 상태로 이동하게 되는 것(즉, 활성 상태가 증가하는 것)을 방지하는 기능을 수행할 수 있다.
한편, 본 발명의 일 실시예에 따르면, 검색 수행부(130)는 비결정성 제거부(120)에 의하여 병합된 NFA를 사용하여 문자열에 대한 검색을 수행하는 기능을 수행한다.
다음으로, 본 발명의 일 실시예에 따르면, 통신부(140)는 본 발명의 문자열 검색 서버(100)가 외부 장치와 통신할 수 있도록 하는 기능을 수행할 수 있다.
마지막으로, 본 발명의 일 실시예에 따른 제어부(150)는 NFA 획득부(110), 비결정성 제거부(120) 및 검색 수행부(130) 간의 데이터의 흐름을 제어하는 기능을 수행한다. 즉, 제어부(150)는 외부로부터의 또는 문자열 검색 서버(100)의 각 구성요소 간의 데이터의 흐름을 제어함으로써, NFA 획득부(110), 비결정성 제거부(120), 검색 수행부(130), 및 통신부(140)에서 각각 고유 기능을 수행하도록 제어한다.
이하에서는, 본 발명에 따라 NFA의 비결정성을 제거하는 방법에 대하여 보다 자세하게 살펴보기로 한다.
<제1 단계>
NFA의 비결정성을 제거하는 방법에 있어서 NFA의 성능을 좌우하는 가장 중요한 과정은 활성 상태 증가에 가장 큰 영향을 미치는 천이를 결정하는 과정이라고 할 수 있으며, 이러한 과정은 문자열 검색 시 반드시 거쳐갈 수 밖에 없는 시작 상태에서부터 출발하여 도달할 확률이 가장 높은 상태를 따라가면서 수행될 수 있다.
먼저, 본 발명의 일 실시예에 따른 비결정성 제거부(120)는, NFA 내에 포함되어 있는 각 상태에 대하여 입력 문자열이 입력될 경우에 특정 상태로부터 이동하여 해당 상태에 도달하게 될 가능성을 나타내는 도달 확률을 산출할 수 있고, 산출된 도달 확률을 기준으로 하여 도달 확률이 가장 큰 상태를 최대 확률 상태로 결정할 수 있다. 다만, 특정 상태로부터 도달 확률이 가장 큰 상태를 구함에 있어서, 상기 특정 상태와 직접적으로 연결 관계(천이에 의한 방향성에 따른 연결 관계)에 의해 도달하는 상태만을 대상으로 계산을 수행할 수도 있을 것이나 이에 한정되는 것은 아닐 것이다. 여기서, 제1 상태로부터 이동하여 제2 상태에 도달할 도달 확률은, 입력 문자열에 포함되는 문자 중 제1 상태를 제2 상태로 천이시키는 문자의 개수(가령, 제1 상태를 제2 상태로 천이시키는 문자가 상기 입력 문자열에 몇 개나 포함되어 있는지를 판단하여 획득된 개수)를 입력 문자열에 포함되는 문자(가령, 입력 문자열에 포함되는 모든 문자)의 총 개수로 나눈 값으로 산출될 수 있다.
예를 들면, 본 발명의 일 실시예에 따른 비결정성 제거부(120)는, NFA의 상태 중 입력 문자열이 무엇인지 관계 없이 반드시 도달할 수 밖에 없는 시작 상태 s0의 도달 확률을 1로 설정하고 나머지 상태의 도달 확률을 0으로 설정하여 시작 상태 s0가 최대 확률 상태가 되도록 초기화할 수 있다.
<제2 단계>
다음으로, 본 발명의 일 실시예에 따른 비결정성 제거부(120)는, 최대 확률 상태를 다른 상태로 이동시키는 천이 중에 활성 상태를 증가시키는 천이가 존재하는지 여부를 판단하고, 활성 상태를 증가시키는 천이가 존재하면 NFA 내의 상태 및 천이를 변경함으로써 활성 상태의 증가 요인을 제거하는 기능을 수행할 수 있다.
보다 구체적으로, 본 발명의 일 실시예에 따른 비결정성 제거부(120)는, NFA 내에서 최대 확률 상태를 상태 i로 이동시키는 천이로 이루어진 제1 천이 집합과 최대 확률 상태를 상태 j로 이동시키는 천이로 이루어진 제2 천이 집합 사이에 공통되는 천이가 적어도 하나 존재하는지 여부를 판단할 수 있다. 그리고, 본 발명의 일 실시예에 따른 비결정성 제거부(120)는, 제1 천이 집합과 제2 천이 집합 사이에 상기 공통되는 천이가 적어도 하나 존재하는 것으로 판단되면, 제1 천이 집합 및 제2 천이 집합 각각에서 상기 공통되는 적어도 하나의 천이를 제외시키고 상기 공통되는 적어도 하나의 천이로만 이루어진 공통 천이 집합에 의하여 상기 최대 확률 상태로부터 이동한 결과 도달하는 상태 k를 생성할 수 있으며, 이렇게 생성된 상태 k는 NFA에 새로 추가될 수 있다. 또한, 본 발명의 일 실시예에 따른 비결정성 제거부(120)는, 제1 천이 집합 및 제2 천이 집합 각각에서 상기 공통되는 적어도 하나의 천이를 제외시킴으로 인하여 상태 i 또는 상태 j에 도달하게 하는 천이가 없어진 경우에, 해당 상태 i 또는 상태 j를 NFA에서 삭제할 수도 있다.
<제3 단계>
다음으로, 본 발명의 일 실시예에 따른 비결정성 제거부(120)는, NFA 내에 포함되어 있는 각 상태에 대하여 입력 문자열이 입력될 경우에 최대 확률 상태로부터 이동하여 해당 상태에 도달하게 될 가능성을 나타내는 도달 확률을 산출할 수 있고, 최대 확률 상태를 상기 산출된 도달 확률이 가장 높은 상태로 갱신하는 기능을 수행할 수 있다.
여기서, 제1 상태로부터 이동하여 제2 상태에 도달할 도달 확률은, 입력 문자열에 포함되는 문자 중 제1 상태를 제2 상태로 천이시키는 문자의 개수를 입력 문자열에 포함되는 문자의 총 개수로 나눈 값으로 산출될 수 있다.
또한, 본 발명의 일 실시예에 따르면, 제3 단계에서 산출된 도달 확률은 제1 단계에서 산출된 도달 확률과 합산될 수도 있고, 최대 확률 상태를 이와 같이 합산된 도달 확률이 가장 높은 상태로 갱신할 수도 있다.
<제4 단계>
다음으로, 본 발명의 일 실시예에 따른 비결정성 제거부(120)는, 갱신된 최대 확률 상태를 기준으로 하여 앞서 설명한 제2 단계 내지 제3 단계의 과정을 반복하여 수행할 수 있다. 다만, 한정된 메모리 자원 내에서 비결정서 제거 과정을 무한히 반복하여 수행하는 것은 바람직하지 않기 때문에, 다음의 경우에는 비결정성 제거 과정을 종료함으로써 비결정성 제거의 효율성을 높일 수 있다.
(1) 본 발명에 따라 NFA의 활성 상태를 제거하게 되면 새로운 상태가 생성되기 때문에, 비결정성 제거 과정에서 NFA에 포함되는 상태의 총 개수가 증가할 수 있다. NFA에 포함되는 상태의 총 개수가 지나치게 많아지면 NFA의 검색 성능이 저하될 수 있으므로, 본 발명의 일 실시예에 따른 비결정성 제거부(120)는 NFA에 포함되는 상태의 총 개수가 기설정된 값을 초과하면 직전에 수행된 비결정성 제거 작업이 수행되기 전의 상태로 NFA를 복원시키고 비결정성 제거 과정을 종료할 수도 있다.
(2) 본 발명의 일 실시예에 따르면, 최대 확률 상태가 해당 NFA의 종료 상태에 도달하게 되면 비결정성 제거 과정을 종료할 수도 있다.
(3) 본 발명의 일 실시예에 따르면, NFA에 포함되는 모든 상태의 도달 확률이 0보다 크게 되면 비결정성 제거 과정을 종료할 수도 있다.
이하에서는, 본 발명의 일 실시예에 따라 NFA의 비결정성을 제거하는 과정을 구체적인 예를 들어 설명하기로 한다. 도 3 내지 도 5는 본 발명의 일 실시예에 따라 NFA의 비결정성을 제거하는 과정을 예시적으로 나타내는 도면이다.
이하의 실시예에서, 검색의 대상이 되는 입력 문자열은 "gjekf3jmbab0d1f"이고, 입력 문자열에서 검색해내고자 하는 문자열을 가리키는 정규 표현식은 "[ab]{3}|bad"인 것으로 가정하기로 한다.
먼저, 도 3을 참조하면, NFA에 포함되는 각 상태의 도달 확률이 초기화될 수 있는데, 구체적으로는, 시작 상태인 상태 0(310)의 도달 확률이 1이고 나머지 상태 1 내지 상태 5(320 내지 360)의 도달 확률은 0인 것으로 초기화될 수 있고 이에 따라 시작 상태인 상태 0(310)이 최대 확률 상태로 결정될 수 있다.
계속하여, 도 3을 참조하면, 최대 확률 상태인 상태 0(310)에서 문자 b가 입력되는 경우에 천이 함수에 의하여 상태 1(320) 및 상태 2(330)로 이동하게 되므로, 이러한 경우 활성 상태가 1개(즉, 상태 0(310))에서 2개(즉, 상태 1(320) 및 상태 2(330))로 증가하게 된다. 따라서, 본 발명의 일 실시예에 따르면, 새로운 상태인 상태 6(도 4의 470)을 생성하여 상태 0(310)에서 문자 b가 입력되는 경우에 상태 1(320)이나 상태 2(330)가 아니라 상태 6(도 4의 470)으로 이동하게 함으로써, 상태 0(310)에서 문자 b가 입력되더라도 활성 상태가 증가하지 않고 1개(즉, 도 4의 상태 6(470))로 유지되도록 할 수 있다. 다시 말하면, 상태 0(310)을 상태 1(320)로 이동시키는 제1 천이 집합인 {a, b}와 상태 0(310)을 상태 2(330)로 이동시키는 제2 천이 집합인 {b} 사이에 공통되는 천이로만 이루어진 공통 천이 집합인 {b}에 의하여 최대 확률 상태인 상태 0(310)으로부터 이동한 결과 도달하는 새로운 상태를 생성할 수 있다. 도 4에는 이렇게 생성된 새로운 상태인 상태 6(470)이 도시되어 있다.
한편, 상태 6(370)이 생성됨으로 인하여 자신에 도달하게 하는 천이가 없어진 상태 2(430)은 NFA에서 삭제될 수 있다.
다음으로, 도 4를 참조하면, 현재 최대 확률 상태(즉, 상태 0(410))를 상태 0(410)으로부터 이동하여 도달하게 될 가능성을 나타내는 도달 확률이 가장 높은 상태로 갱신할 수 있다. 보다 구체적으로, 입력 문자열에 포함되는 문자의 총 개수가 15개이고 그 중 상태 0(410)을 상태 1(420)로 이동시킬 수 있는 문자 "a"의 개수는 1개이므로, 상태 0(410)으로부터 이동하여 상태 1(420)에 도달하게 될 확률은 1/15인 것으로 산출될 수 있다. 한편, 입력 문자열에 포함되는 문자의 총 개수가 15개이고 그 중 상태 0(410)을 상태 6(470)으로 이동시킬 수 있는 문자 "b"의 개수는 2개이므로, 상태 0(410)으로부터 이동하여 상태 6(470)에 도달하게 될 확률은 2/15인 것으로 산출될 수 있다. 이상에서 살펴본 바와 같이, 상태 0(410)을 출발점으로 할 때 상태 6(470)으로의 도달 확률이 상태 1(420)로의 도달 확률보다 크고 나머지 상태로의 도달 확률 역시 상태 6(470)으로의 도달 확률보다 클 수 없으므로, 최대 확률 상태를 상태 0(410)에서 상태 6(470)으로 갱신할 수 있다.
계속하여, 도 4를 참조하면, 최대 확률 상태인 상태 6(470)에서 문자 a가 입력되는 경우에 천이 함수에 의하여 상태 3(440) 및 상태 4(450)로 이동하게 되므로, 이러한 경우 활성 상태가 1개(즉, 상태 6(470))에서 2개(즉, 상태 3(440) 및 상태 4(450)로 증가하게 된다. 따라서, 본 발명의 일 실시예에 따르면, 새로운 상태인 상태 7(도 5의 580)을 생성하여 상태 6(470)에서 문자 a가 입력되는 경우에 상태 3(440)이나 상태 4(450)가 아니라 상태 7(도 5의 580)로 이동하게 함으로써, 상태 6(470)에서 문자 a가 입력되더라도 활성 상태가 증가하지 않고 1개(즉, 도 5의 상태 7(580))로 유지되도록 할 수 있다. 다시 말하면, 상태 6(470)을 상태 3(440)로 이동시키는 제1 천이 집합인 {a, b}와 상태 6(470)을 상태 4(450)로 이동시키는 제2 천이 집합인 {a} 사이에 공통되는 천이로만 이루어진 공통 천이 집합인 {a}에 의하여 최대 확률 상태인 상태 6(470)으로부터 이동한 결과 도달하는 새로운 상태를 생성할 수 있다. 도 5에는 이렇게 생성된 새로운 상태인 상태 7(580)이 도시되어 있다.
한편, 상태 7(580)이 생성됨으로 인하여 자신에 도달하게 하는 천이가 없어진 상태 4(450)는 NFA에서 삭제될 수 있다.
다음으로, 도 5를 참조하면, 현재 최대 확률 상태(즉, 상태 6(570))를 상태 6(570)으로부터 이동하여 도달하게 될 가능성을 나타내는 도달 확률이 가장 높은 상태로 갱신할 수 있다. 보다 구체적으로, 입력 문자열에 포함되는 문자의 총 개수가 15개이고 그 중 상태 6(570)을 상태 3(550)로 이동시킬 수 있는 문자 "b"의 개수는 2개이므로, 상태 6(570)으로부터 이동하여 상태 3(540)에 도달하게 될 확률은 1/15인 것으로 산출될 수 있다. 한편, 입력 문자열에 포함되는 문자의 총 개수가 15개이고 그 중 상태 6(570)을 상태 7(580)으로 이동시킬 수 있는 문자 "b"의 개수는 2개이므로, 상태 6(570)으로부터 이동하여 상태 7(580)에 도달하게 될 확률은 2/15인 것으로 산출될 수 있다. 이상에서 살펴본 바와 같이, 상태 6(570)을 출발점으로 할 때 상태 3(540)으로의 도달 확률이 상태 7(580)로의 도달 확률보다 크고 나머지 상태로의 도달 확률 역시 상태 7(580)으로의 도달 확률보다 클 수 없으므로, 최대 확률 상태를 상태 6(570)에서 상태 3(540)으로 갱신할 수 있다.
계속하여, 도 5를 참조하면, 최대 확률 상태인 상태 3(540)에서 문자 a나 문자 b가 입력되는 경우에 모두 천이 함수에 의하여 상태 5(560)로 이동하게 되므로, 이러한 경우 활성 상태가 1개(즉, 상태 3(540))에서 1개(즉, 상태 5(560))로 그대로 유지되게 된다. 따라서, 본 발명의 일 실시예에 따르면, 최대 확률 상태가 상태 3(540)인 경우에는 활성 상태를 제거할 필요가 없게 된다.
계속하여, 도 5를 참조하면, 현재 최대 확률 상태(즉, 상태 3(540))를 상태 3(540)으로부터 이동하여 도달하게 될 가능성을 나타내는 도달 확률이 가장 높은 상태로 갱신할 수 있다. 보다 구체적으로, 입력 문자열에 포함되는 문자의 총 개수가 15개이고 그 중 상태 3(540)을 상태 5(560)로 이동시킬 수 있는 문자 "a"와 "b"의 개수의 합은 3개이므로, 상태 3(540)으로부터 이동하여 상태 5(560)에 도달하게 될 확률은 3/15 = 1/5인 것으로 산출될 수 있다. 한편, 상태 3(540)으로부터 이동하여 상태 5(560)에 도달하게 될 확률은 0인 것으로 산출될 수 있다. 이상에서 살펴본 바와 같이, 상태 3(540)을 출발점으로 할 때 상태 5(560)으로의 도달 확률이 나머지 상태로의 도달 확률보다 크기 때문에, 최대 확률 상태를 상태 3(540)에서 상태 5(560)으로 갱신할 수 있다.
마지막으로, 현재 최대 확률 상태(즉, 상태 5(560))가 종료 상태에 도달하였기 때문에, 본 발명의 일 실시예에 따르면 NFA의 비결정성 제거 과정을 종료할 수 있으며, 도 5에 도시된 NFA가 비결정성 제거에 따른 최종 결과물로서 제공될 수 있다.
이하에서는, 본 발명의 일 실시예에 따라 비결정성이 선택적으로 제거된 도 5의 NFA를 이용하여 문자열을 검색하는 과정을 살펴보기로 한다. 이하의 실시예에서, 검색의 대상이 되는 입력 문자열은 "gjekf3jmbab0d1f"인 것으로 가정하기로 한다.
도 5의 NFA는 시작 상태인 상태 0(510)에서부터 시작하여 입력 문자열을 한 글자씩 순차적으로 읽어 들이면서 어떤 상태가 다른 상태로 이동하는지 여부를 검사하게 된다.
첫 번째 문자는 "g"이지만, "g"가 입력되는 것에 대응하여 상태 0(510)을 다른 상태로 이동시키는 천이는 없으므로, 계속하여 상태 0(510)에 머무르게 된다. 두 번째 문자인 "j" 역시 해당하는 천이가 없으므로 상태 0(510)에 머무르면서 그 다음 문자를 읽게 된다. 따라서, 이러한 경우에는, 상태 0(510)만이 상태 천이 여부 검사가 필요한 상태, 즉, 활성 상태가 된다.
이런 식으로 계속하여 상태 0(510)에 머무르는 상황에서 "gjekf3jm"까지 입력되고 나면 그 다음에 입력되는 문자는 "b"가 되는데, 도 5의 NFA에는 "b"가 입력되는 경우 상태 0(510)을 상태 6(570)으로 이동시키는 천이가 존재하므로, 상태 0(510)은 상태 6(570)으로 이동하게 된다. 따라서, "b"가 입력된 직후에는 상태 천이 여부 검사가 필요한 상태, 즉, 활성 상태는 상태 0(510) 및 상태 6(570)으로서 총 2개가 된다.
그 다음에 입력되는 문자는 "a"가 되는데, 도 5의 NFA에는 "a"가 입력되는 경우에 활성 상태인 상태 0(510)을 상태 1(520)로 이동시키는 천이 및 활성 상태인 상태 6(570)을 상태 7(580)로 이동시키는 천이가 존재하므로, 상태 0(510) 및 상태 6(570)는 각각 상태 1(520) 및 상태 7(580)로 이동하게 된다. 따라서, "ba"가 입력된 직후에는 상태 천이 여부 검사가 필요한 상태, 즉, 활성 상태는 상태 0(510), 상태 1(520) 및 상태 7(580)로서 총 3개가 된다.
그 다음에 입력되는 문자는 "b"가 되는데, 도 1의 NFA에는 "b"가 입력되는 경우에 활성 상태인 상태 0(510)을 상태 6(570)으로 이동시키는 천이, 활성 상태인 상태 1(530)을 상태 3(540)으로 이동시키는 천이 및 활성 상태인 상태 7(580)을 상태 5(550)로 이동시키는 천이가 존재하므로, 상태 0(510) 및 상태 1(520) 및 상태 7(580)은 각각 상태 6(570), 상태 3(540) 및 상태 5(560)로 이동하게 된다. 따라서, "bab"가 입력된 직후에는 상태 천이 여부 검사가 필요한 상태, 즉, 활성 상태는 상태 0(510), 상태 3(540), 상태 5(560) 및 상태 6(570)로서 총 4개가 된다.
한편, 이로써 도 5의 NFA의 종료 상태인 상태 5(560)에 도달했기 때문에, 주어진 입력 문자열에서 원하는 문자열, 즉, 문자열 "bab"를 찾은 것으로 취급될 수 있다.
도 6은 도 1의 일반적인 NFA를 이용하여 문자열을 검색하는 경우와 도 5의 본 발명에 따라 비결정성이 선택적으로 제거된 NFA를 이용하여 문자열을 검색하는 경우를 비교한 결과를 나타내는 도면이다. 도 6을 참조하면, 도 5의 NFA를 이용하는 경우가 도 1의 NFA를 이용하는 경우보다 매 단계마다 적어도 한 개 이상의 활성 상태가 감소되는 것을 확인할 수 있다. 도 6에서 확인할 수 있는 바와 같이, 본 발명에 따른 NFA의 비결정성 제거 방법에 의하면, 문자열을 검색할 때에 메모리 사용량을 줄이고 검색 속도를 향상시킬 수 있게 되는 효과를 달성할 수 있게 된다.
이상에서는 NFA를 획득 및 병합하고 문자열 검색하는 과정이 서버에서 수행되는 실시예를 중심으로 하여 설명하였지만, 본 발명의 구성이 반드시 상기 실시예에 한정되는 것은 아니며 상기 일련의 과정은 사용자의 단말 장치(미도시됨) 상에서도 얼마든지 수행될 수 있을 것이다. 예를 들면, 단말 장치 내에 설치된 소정의 어플리케이션에 의하여 NFA를 획득 및/또는 병합하고 문자열을 검색하는 과정이 수행될 수 있다.
이상 설명된 본 발명에 따른 실시예들은 다양한 컴퓨터 구성요소를 통하여 수행될 수 있는 프로그램 명령어의 형태로 구현되어 컴퓨터 판독 가능한 기록 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능한 기록 매체는 프로그램 명령어, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 컴퓨터 판독 가능한 기록 매체에 기록되는 프로그램 명령어는 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 분야의 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능한 기록 매체의 예에는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 ROM, RAM, 플래시 메모리 등과 같은 프로그램 명령어를 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령어의 예에는, 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드도 포함된다. 상기 하드웨어 장치는 본 발명에 따른 처리를 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상에서 본 발명이 구체적인 구성요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나, 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명이 상기 실시예들에 한정되는 것은 아니며, 본 발명이 속하는 기술분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형을 꾀할 수 있다.
따라서, 본 발명의 사상은 상기 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등하게 또는 등가적으로 변형된 모든 것들은 본 발명의 사상의 범주에 속한다고 할 것이다.
100: 문자열 검색 서버
110: NFA 획득부
120: 비결정성 제거부
121: 최대 확률 상태 결정부
122: 활성 상태 제거부
130: 검색 수행부
140: 통신부
150: 제어부

Claims (23)

  1. 비결정적 유한 오토마타(Nondeterministic Finite Automata: NFA)의 비결정성을 선택적으로 제거하기 위한 서버 또는 단말 장치에 의하여 구현되는 방법으로서 - 상기 서버 및 상기 단말 장치는 최대 확률 상태 결정부 및 활성 상태 제거부를 포함함 - ,
    (a) 상기 최대 확률 상태 결정부가, 비결정적 유한 오토마타 내의 상태 중 특정 상태로부터 이동하여 도달할 확률이 가장 높은 것으로 산출된 상태를 최대 확률 상태로 결정하는 단계,
    (b) 상기 활성 상태 제거부가, 상기 비결정적 유한 오토마타 내에서 상기 최대 확률 상태를 상태 i로 이동시키는 천이로 이루어진 제1 천이 집합과 상기 최대 확률 상태를 상태 j로 이동시키는 천이로 이루어진 제2 천이 집합 사이에 공통되는 천이가 적어도 하나 존재하는지 여부를 판단하는 단계, 및
    (c) 상기 활성 상태 제거부가, 상기 제1 천이 집합과 상기 제2 천이 집합 사이에 상기 공통되는 천이가 적어도 하나 존재하는 것으로 판단되면, 상기 제1 천이 집합 및 상기 제2 천이 집합 각각에서 상기 공통되는 천이를 제외시키고 상기 공통되는 적어도 하나의 천이로만 이루어진 공통 천이 집합에 의하여 상기 최대 확률 상태로부터 이동한 결과 도달하는 상태 k를 생성하는 단계 - 상기 상태 k는 상기 비결정적 유한 오토마타 내에 새로 추가됨 -
    를 포함하는 방법.
  2. 제1항에 있어서,
    (d) 상기 최대 확률 상태 결정부가, 상기 최대 확률 상태로부터 이동하여 도달할 수 있는 적어도 하나의 상태 각각에 대하여 검색의 대상이 되는 문자열이 입력되는 경우에 상기 최대 확률 상태로부터 이동하여 상기 적어도 하나의 상태에 도달할 확률을 각각 산출하고, 상기 최대 확률 상태를 상기 산출된 확률이 가장 높은 상태로 갱신하는 단계, 및
    (e) 상기 활성 상태 제거부가, 상기 갱신된 최대 확률 상태를 상태 l로 이동시키는 천이로 이루어진 제3 천이 집합과 상기 갱신된 최대 확률 상태를 상태 m으로 이동시키는 천이로 이루어진 제4 천이 집합 사이에 공통되는 천이가 적어도 하나 존재하는지 여부를 판단하는 단계, 및
    (f) 상기 활성 상태 제거부가, 상기 제3 천이 집합과 상기 제4 천이 집합 사이에 상기 공통되는 천이가 적어도 하나 존재하는 것으로 판단되면, 상기 제3 천이 집합 및 상기 제4 천이 집합 각각에서 상기 공통되는 천이를 제외시키고 상기 공통되는 적어도 하나의 천이로만 이루어진 공통 천이 집합에 의하여 상기 갱신된 최대 확률 상태로부터 이동한 결과 도달하는 상태 n을 생성하는 단계 - 상기 상태 n은 상기 비결정적 유한 오토마타 내에 새로 추가됨 - ,
    를 더 포함하는 방법.
  3. 제1항에 있어서,
    상기 (a) 단계에서, 상기 특정 상태로부터 이동하여 상기 최대 확률 상태에 도달할 확률은, 검색의 대상이 되는 문자열에 포함되는 문자 중 상기 특정 상태를 상기 최대 확률 상태로 천이시키는 문자의 개수를 상기 검색의 대상이 되는 문자열에 포함되는 문자의 총 개수로 나눈 값인 것을 특징으로 하는 방법.
  4. 제2항에 있어서,
    상기 (d) 단계에서, 상기 최대 확률 상태로부터 이동하여 상기 적어도 하나의 상태에 도달할 확률은, 상기 검색의 대상이 되는 문자열에 포함되는 문자 중 상기 최대 확률 상태를 상기 적어도 하나의 상태로 천이시키는 문자의 개수를 상기 검색의 대상이 되는 문자열에 포함되는 문자의 총 개수로 나눈 값인 것을 특징으로 하는 방법.
  5. 제1항에 있어서,
    상기 (c) 단계에서, 상기 활성 상태 제거부가, 상기 비결정적 유한 오토마타 내의 상태 중 다른 상태로부터 이동하여 자신에 도달하게 하는 천이가 없는 상태를 삭제하는 것을 특징으로 하는 방법.
  6. 제1항에 있어서,
    (d) 상기 최대 확률 상태 결정부가, 상기 최대 확률 상태로부터 이동하여 도달할 수 있는 적어도 하나의 상태 각각에 대하여 검색의 대상이 되는 문자열이 입력되는 경우에 상기 최대 확률 상태로부터 이동하여 상기 적어도 하나의 상태에 도달할 확률을 각각 산출하고, 상기 최대 확률 상태를 상기 산출된 확률이 가장 높은 상태로 갱신하는 단계, 및
    (g) 상기 활성 상태 제거부가, 상기 갱신된 최대 확률 상태가 상기 비결정적 유한 오토마타의 종료 상태이면 비결정성 제거 과정을 종료하는 단계
    를 더 포함하는 방법.
  7. 제2항에 있어서,
    (h) 상기 활성 상태 제거부가, 상기 (f) 단계에서 상기 상태 n이 생성됨으로 인하여 상기 비결정적 유한 오토마타 내에 포함되는 상태의 개수가 기설정된 값을 초과하게 되면, 상기 (f) 단계가 수행되기 이전으로 복원하는 단계
    를 더 포함하는 방법.
  8. 비결정적 유한 오토마타(Nondeterministic Finite Automata: NFA)의 비결정성을 선택적으로 제거하기 위한 서버 또는 단말 장치에 의하여 구현되는 방법으로서 - 상기 서버 및 상기 단말 장치는 최대 확률 상태 결정부 및 활성 상태 제거부를 포함함 - ,
    (a) 상기 활성 상태 제거부가, 비결정적 유한 오토마타 내에서 시작 상태를 상태 i로 이동시키는 천이로 이루어진 제1 천이 집합과 상기 시작 상태를 상태 j로 이동시키는 천이로 이루어진 제2 천이 집합 사이에 공통되는 천이가 적어도 하나 존재하는지 여부를 판단하는 단계,
    (b) 상기 활성 상태 제거부가, 상기 제1 천이 집합과 상기 제2 천이 집합 사이에 상기 공통되는 천이가 적어도 하나 존재하는 것으로 판단되면, 상기 제1 천이 집합 및 상기 제2 천이 집합 각각에서 상기 공통되는 천이를 제외시키고 상기 공통되는 적어도 하나의 천이로만 이루어진 공통 천이 집합에 의하여 상기 시작 상태로부터 이동한 결과 도달하는 상태 k를 생성하는 단계 - 상기 상태 k는 상기 비결정적 유한 오토마타 내에 새로 추가됨 - , 및
    (c) 상기 최대 확률 상태 결정부가, 상기 시작 상태로부터 이동하여 도달할 수 있는 적어도 하나의 상태 각각에 대하여 검색의 대상이 되는 문자열이 입력되는 경우에 상기 시작 상태로부터 이동하여 상기 적어도 하나의 상태에 도달할 확률을 각각 산출하고, 상기 산출된 확률이 가장 높은 상태를 최대 확률 상태로 결정하는 단계
    를 포함하는 방법.
  9. 제8항에 있어서
    (d) 상기 활성 상태 제거부가, 상기 최대 확률 상태를 상태 l로 이동시키는 천이로 이루어진 제3 천이 집합과 상기 최대 확률 상태를 상태 m으로 이동시키는 천이로 이루어진 제4 천이 집합 사이에 공통되는 천이가 적어도 하나 존재하는지 여부를 판단하는 단계, 및
    (e) 상기 활성 상태 제거부가, 상기 제3 천이 집합과 상기 제4 천이 집합 사이에 상기 공통되는 천이가 적어도 하나 존재하는 것으로 판단되면, 상기 제3 천이 집합 및 상기 제4 천이 집합 각각에서 상기 공통되는 천이를 제외시키고 상기 공통되는 적어도 하나의 천이로만 이루어진 공통 천이 집합에 의하여 상기 최대 확률 상태로부터 이동한 결과 도달하는 상태 n을 생성하는 단계 - 상기 상태 n은 상기 비결정적 유한 오토마타 내에 새로 추가됨 - ,
    를 더 포함하는 방법.
  10. 제8항에 있어서,
    상기 (c) 단계에서, 상기 시작 상태로부터 이동하여 상기 적어도 하나의 상태에 도달할 확률은, 상기 검색의 대상이 되는 문자열에 포함되는 문자 중 상기 시작 상태를 상기 적어도 하나의 상태로 천이시키는 문자의 개수를 상기 검색의 대상이 되는 문자열에 포함되는 문자의 총 개수로 나눈 값인 것을 특징으로 하는 방법.
  11. 비결정적 유한 오토마타(Nondeterministic Finite Automata: NFA)의 비결정성을 선택적으로 제거하기 위한 서버로서,
    비결정적 유한 오토마타 내의 상태 중 특정 상태로부터 이동하여 도달할 확률이 가장 높은 것으로 산출된 상태를 최대 확률 상태로 결정하는 최대 확률 상태 결정부, 및
    상기 비결정적 유한 오토마타 내에서 상기 최대 확률 상태를 상태 i로 이동시키는 천이로 이루어진 제1 천이 집합과 상기 최대 확률 상태를 상태 j로 이동시키는 천이로 이루어진 제2 천이 집합 사이에 공통되는 천이가 적어도 하나 존재하는지 여부를 판단하고, 상기 제1 천이 집합과 상기 제2 천이 집합 사이에 상기 공통되는 천이가 적어도 하나 존재하는 것으로 판단되면, 상기 제1 천이 집합 및 상기 제2 천이 집합 각각에서 상기 공통되는 천이를 제외시키고 상기 공통되는 적어도 하나의 천이로만 이루어진 공통 천이 집합에 의하여 상기 최대 확률 상태로부터 이동한 결과 도달하는 상태 k를 생성하는 활성 상태 제거부 - 상기 상태 k는 상기 비결정적 유한 오토마타 내에 새로 추가됨 -
    를 포함하는 서버.
  12. 제11항에 있어서,
    상기 최대 확률 상태 결정부는, 상기 최대 확률 상태로부터 이동하여 도달할 수 있는 적어도 하나의 상태 각각에 대하여 검색의 대상이 되는 문자열이 입력되는 경우에 상기 최대 확률 상태로부터 이동하여 상기 적어도 하나의 상태에 도달할 확률을 각각 산출하고, 상기 최대 확률 상태를 상기 산출된 확률이 가장 높은 상태로 갱신하고,
    상기 활성 상태 제거부는, 상기 갱신된 최대 확률 상태를 상태 l로 이동시키는 천이로 이루어진 제3 천이 집합과 상기 갱신된 최대 확률 상태를 상태 m으로 이동시키는 천이로 이루어진 제4 천이 집합 사이에 공통되는 천이가 적어도 하나 존재하는지 여부를 판단하고, 상기 제3 천이 집합과 상기 제4 천이 집합 사이에 상기 공통되는 천이가 적어도 하나 존재하는 것으로 판단되면, 상기 제3 천이 집합 및 상기 제4 천이 집합 각각에서 상기 공통되는 천이를 제외시키고 상기 공통되는 적어도 하나의 천이로만 이루어진 공통 천이 집합에 의하여 상기 갱신된 최대 확률 상태로부터 이동한 결과 도달하는 상태 n을 생성하는 것 - 상기 상태 n은 상기 비결정적 유한 오토마타 내에 새로 추가됨 - 을 특징으로 하는 서버.
  13. 제11항에 있어서,
    상기 특정 상태로부터 이동하여 상기 최대 확률 상태에 도달할 확률은, 검색의 대상이 되는 문자열에 포함되는 문자 중 상기 특정 상태를 상기 최대 확률 상태로 천이시키는 문자의 개수를 상기 검색의 대상이 되는 문자열에 포함되는 문자의 총 개수로 나눈 값인 것을 특징으로 하는 서버.
  14. 제12항에 있어서,
    상기 최대 확률 상태로부터 이동하여 상기 적어도 하나의 상태에 도달할 확률은, 상기 검색의 대상이 되는 문자열에 포함되는 문자 중 상기 최대 확률 상태를 상기 적어도 하나의 상태로 천이시키는 문자의 개수를 상기 검색의 대상이 되는 문자열에 포함되는 문자의 총 개수로 나눈 값인 것을 특징으로 하는 서버.
  15. 제11항에 있어서,
    상기 활성 상태 제거부는, 상기 비결정적 유한 오토마타 내의 상태 중 다른 상태로부터 이동하여 자신에 도달하게 하는 천이가 없는 상태를 삭제하는 것을 특징으로 하는 서버.
  16. 제11항에 있어서,
    상기 최대 확률 상태 결정부는, 상기 최대 확률 상태로부터 이동하여 도달할 수 있는 적어도 하나의 상태 각각에 대하여 검색의 대상이 되는 문자열이 입력되는 경우에 상기 최대 확률 상태로부터 이동하여 상기 적어도 하나의 상태에 도달할 확률을 각각 산출하고, 상기 최대 확률 상태를 상기 산출된 확률이 가장 높은 상태로 갱신하고,
    상기 활성 상태 제거부는, 상기 갱신된 최대 확률 상태가 상기 비결정적 유한 오토마타의 종료 상태이면 비결정성 제거 과정을 종료하는 것을 특징으로 하는 서버.
  17. 제12항에 있어서,
    상기 활성 상태 제거부는, 상기 상태 n이 생성됨으로 인하여 상기 비결정적 유한 오토마타 내에 포함되는 상태의 개수가 기설정된 값을 초과하게 되면, 상기 비결정적 유한 오토마타를 상기 상태 n이 생성되기 이전으로 복원하는 것을 특징으로 하는 서버.
  18. 비결정적 유한 오토마타(Nondeterministic Finite Automata: NFA)의 비결정성을 선택적으로 제거하기 위한 서버로서,
    비결정적 유한 오토마타 내에서 시작 상태를 상태 i로 이동시키는 천이로 이루어진 제1 천이 집합과 상기 시작 상태를 상태 j로 이동시키는 천이로 이루어진 제2 천이 집합 사이에 공통되는 천이가 적어도 하나 존재하는지 여부를 판단하고, 상기 제1 천이 집합과 상기 제2 천이 집합 사이에 상기 공통되는 천이가 적어도 하나 존재하는 것으로 판단되면, 상기 제1 천이 집합 및 상기 제2 천이 집합 각각에서 상기 공통되는 천이를 제외시키고 상기 공통되는 적어도 하나의 천이로만 이루어진 공통 천이 집합에 의하여 상기 시작 상태로부터 이동한 결과 도달하는 상태 k를 생성하는 활성 상태 제거부 - 상기 상태 k는 상기 비결정적 유한 오토마타 내에 새로 추가됨 - , 및
    상기 시작 상태로부터 이동하여 도달할 수 있는 적어도 하나의 상태 각각에 대하여 검색의 대상이 되는 문자열이 입력되는 경우에 상기 시작 상태로부터 이동하여 상기 적어도 하나의 상태에 도달할 확률을 각각 산출하고, 상기 산출된 확률이 가장 높은 상태를 최대 확률 상태로 결정하는 최대 확률 상태 결정부
    를 포함하는 서버.
  19. 제18항에 있어서
    상기 활성 상태 제거부는, 상기 최대 확률 상태를 상태 l로 이동시키는 천이로 이루어진 제3 천이 집합과 상기 최대 확률 상태를 상태 m으로 이동시키는 천이로 이루어진 제4 천이 집합 사이에 공통되는 천이가 적어도 하나 존재하는지 여부를 판단하고, 상기 제3 천이 집합과 상기 제4 천이 집합 사이에 상기 공통되는 천이가 적어도 하나 존재하는 것으로 판단되면, 상기 제3 천이 집합 및 상기 제4 천이 집합 각각에서 상기 공통되는 천이를 제외시키고 상기 공통되는 적어도 하나의 천이로만 이루어진 공통 천이 집합에 의하여 상기 최대 확률 상태로부터 이동한 결과 도달하는 상태 n을 생성하는 것 - 상기 상태 n은 상기 비결정적 유한 오토마타 내에 새로 추가됨 - 을 특징으로 하는 서버.
  20. 제18항에 있어서,
    상기 시작 상태로부터 이동하여 상기 적어도 하나의 상태에 도달할 확률은, 상기 검색의 대상이 되는 문자열에 포함되는 문자 중 상기 시작 상태를 상기 적어도 하나의 상태로 천이시키는 문자의 개수를 상기 검색의 대상이 되는 문자열에 포함되는 문자의 총 개수로 나눈 값인 것을 특징으로 하는 서버.
  21. 비결정적 유한 오토마타(Nondeterministic Finite Automata: NFA)의 비결정성을 선택적으로 제거하기 위한 단말 장치로서,
    비결정적 유한 오토마타 내의 상태 중 특정 상태로부터 이동하여 도달할 확률이 가장 높은 것으로 산출된 상태를 최대 확률 상태로 결정하는 최대 확률 상태 결정부, 및
    상기 비결정적 유한 오토마타 내에서 상기 최대 확률 상태를 상태 i로 이동시키는 천이로 이루어진 제1 천이 집합과 상기 최대 확률 상태를 상태 j로 이동시키는 천이로 이루어진 제2 천이 집합 사이에 공통되는 천이가 적어도 하나 존재하는지 여부를 판단하고, 상기 제1 천이 집합과 상기 제2 천이 집합 사이에 상기 공통되는 천이가 적어도 하나 존재하는 것으로 판단되면, 상기 제1 천이 집합 및 상기 제2 천이 집합 각각에서 상기 공통되는 천이를 제외시키고 상기 공통되는 적어도 하나의 천이로만 이루어진 공통 천이 집합에 의하여 상기 최대 확률 상태로부터 이동한 결과 도달하는 상태 k를 생성하는 활성 상태 제거부 - 상기 상태 k는 상기 비결정적 유한 오토마타 내에 새로 추가됨 -
    를 포함하는 단말 장치.
  22. 비결정적 유한 오토마타(Nondeterministic Finite Automata: NFA)의 비결정성을 선택적으로 제거하기 위한 단말 장치로서,
    비결정적 유한 오토마타 내에서 시작 상태를 상태 i로 이동시키는 천이로 이루어진 제1 천이 집합과 상기 시작 상태를 상태 j로 이동시키는 천이로 이루어진 제2 천이 집합 사이에 공통되는 천이가 적어도 하나 존재하는지 여부를 판단하고, 상기 제1 천이 집합과 상기 제2 천이 집합 사이에 상기 공통되는 천이가 적어도 하나 존재하는 것으로 판단되면, 상기 제1 천이 집합 및 상기 제2 천이 집합 각각에서 상기 공통되는 천이를 제외시키고 상기 공통되는 적어도 하나의 천이로만 이루어진 공통 천이 집합에 의하여 상기 시작 상태로부터 이동한 결과 도달하는 상태 k를 생성하는 활성 상태 제거부 - 상기 상태 k는 상기 비결정적 유한 오토마타 내에 새로 추가됨 - , 및
    상기 시작 상태로부터 이동하여 도달할 수 있는 적어도 하나의 상태 각각에 대하여 검색의 대상이 되는 문자열이 입력되는 경우에 상기 시작 상태로부터 이동하여 상기 적어도 하나의 상태에 도달할 확률을 각각 산출하고, 상기 산출된 확률이 가장 높은 상태를 최대 확률 상태로 결정하는 최대 확률 상태 결정부
    를 포함하는 단말 장치.
  23. 제1항 내지 제10항 중 어느 한 항에 따른 방법을 실행하기 위한 컴퓨터 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체.
KR20120038763A 2012-04-13 2012-04-13 비결정적 유한 오토마타의 비결정성을 선택적으로 제거하기 위한 방법, 서버, 단말 장치 및 컴퓨터 판독 가능한 기록 매체 KR101222486B1 (ko)

Priority Applications (6)

Application Number Priority Date Filing Date Title
KR20120038763A KR101222486B1 (ko) 2012-04-13 2012-04-13 비결정적 유한 오토마타의 비결정성을 선택적으로 제거하기 위한 방법, 서버, 단말 장치 및 컴퓨터 판독 가능한 기록 매체
EP12873936.4A EP2838032B1 (en) 2012-04-13 2012-12-24 Method, server and terminal device for selectively removing nondeterminism of nondeterministic finite automata
US14/391,503 US9251290B2 (en) 2012-04-13 2012-12-24 Method, server, terminal device, and computer-readable recording medium for selectively removing nondeterminism of nondeterministic finite automata
CN201280072270.2A CN104246749B (zh) 2012-04-13 2012-12-24 用于选择性消除非确定性有限自动机的不确定性的方法、服务器及终端装置
PCT/KR2012/011372 WO2013154252A1 (ko) 2012-04-13 2012-12-24 비결정적 유한 오토마타의 비결정성을 선택적으로 제거하기 위한 방법, 서버, 단말 장치 및 컴퓨터 판독 가능한 기록 매체
EP16200936.9A EP3171278A1 (en) 2012-04-13 2012-12-24 Method, server, terminal device, and computer-readable recording medium for selectively removing nondeterminism of nondeterministic finite automata

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR20120038763A KR101222486B1 (ko) 2012-04-13 2012-04-13 비결정적 유한 오토마타의 비결정성을 선택적으로 제거하기 위한 방법, 서버, 단말 장치 및 컴퓨터 판독 가능한 기록 매체

Publications (1)

Publication Number Publication Date
KR101222486B1 true KR101222486B1 (ko) 2013-01-16

Family

ID=47841885

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20120038763A KR101222486B1 (ko) 2012-04-13 2012-04-13 비결정적 유한 오토마타의 비결정성을 선택적으로 제거하기 위한 방법, 서버, 단말 장치 및 컴퓨터 판독 가능한 기록 매체

Country Status (5)

Country Link
US (1) US9251290B2 (ko)
EP (2) EP2838032B1 (ko)
KR (1) KR101222486B1 (ko)
CN (1) CN104246749B (ko)
WO (1) WO2013154252A1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101645890B1 (ko) * 2015-07-13 2016-08-05 연세대학교 산학협력단 비결정적 유한 오토마타의 상태 축소 방법 및 장치
KR101714270B1 (ko) * 2015-12-10 2017-03-08 연세대학교 산학협력단 Xml 스키마 변환 방법 및 장치
KR20200094977A (ko) * 2019-01-31 2020-08-10 연세대학교 산학협력단 오토마타 기반 증분적 중위 확률 계산 장치 및 방법
KR20230042986A (ko) 2021-09-23 2023-03-30 연세대학교 산학협력단 글루시코프 오토마타 생성과 하이브리드 매칭을 활용한 정규 표현식 엔진에 관한 오토마타 처리 장치 및 방법

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015084360A1 (en) * 2013-12-05 2015-06-11 Hewlett-Packard Development Company, L.P. Regular expression matching

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100323384B1 (ko) 1998-12-03 2002-03-08 오길록 유한오토마타기반의프로토콜명세에대한검정방법
US20030187644A1 (en) 2002-03-29 2003-10-02 Mehryar Mohri Systems and methods for determining the N-best strings
KR100475266B1 (ko) 1996-05-21 2005-07-11 가부시끼가이샤 히다치 세이사꾸쇼 입력문자열추측인식장치
JP2010186412A (ja) 2009-02-13 2010-08-26 Hitachi Ltd 文書管理方法及び管理装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050114700A1 (en) * 2003-08-13 2005-05-26 Sensory Networks, Inc. Integrated circuit apparatus and method for high throughput signature based network applications
US20050273450A1 (en) * 2004-05-21 2005-12-08 Mcmillen Robert J Regular expression acceleration engine and processing model
US7260558B1 (en) * 2004-10-25 2007-08-21 Hi/Fn, Inc. Simultaneously searching for a plurality of patterns definable by complex expressions, and efficiently generating data for such searching
US7765183B2 (en) * 2005-04-23 2010-07-27 Cisco Technology, Inc Hierarchical tree of deterministic finite automata
US20080293395A1 (en) * 2007-05-21 2008-11-27 Motorola, Inc. Using downloadable specifications to render a user interface on a mobile device
CN101303589B (zh) * 2008-06-20 2011-04-13 中南大学 基于有限状态自动机的多艾真体动态多目标协作跟踪方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100475266B1 (ko) 1996-05-21 2005-07-11 가부시끼가이샤 히다치 세이사꾸쇼 입력문자열추측인식장치
KR100323384B1 (ko) 1998-12-03 2002-03-08 오길록 유한오토마타기반의프로토콜명세에대한검정방법
US20030187644A1 (en) 2002-03-29 2003-10-02 Mehryar Mohri Systems and methods for determining the N-best strings
JP2010186412A (ja) 2009-02-13 2010-08-26 Hitachi Ltd 文書管理方法及び管理装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101645890B1 (ko) * 2015-07-13 2016-08-05 연세대학교 산학협력단 비결정적 유한 오토마타의 상태 축소 방법 및 장치
KR101714270B1 (ko) * 2015-12-10 2017-03-08 연세대학교 산학협력단 Xml 스키마 변환 방법 및 장치
KR20200094977A (ko) * 2019-01-31 2020-08-10 연세대학교 산학협력단 오토마타 기반 증분적 중위 확률 계산 장치 및 방법
KR102146625B1 (ko) 2019-01-31 2020-08-20 연세대학교 산학협력단 오토마타 기반 증분적 중위 확률 계산 장치 및 방법
KR20230042986A (ko) 2021-09-23 2023-03-30 연세대학교 산학협력단 글루시코프 오토마타 생성과 하이브리드 매칭을 활용한 정규 표현식 엔진에 관한 오토마타 처리 장치 및 방법

Also Published As

Publication number Publication date
CN104246749B (zh) 2016-01-13
EP3171278A1 (en) 2017-05-24
US9251290B2 (en) 2016-02-02
EP2838032B1 (en) 2019-03-06
EP2838032A4 (en) 2016-04-27
WO2013154252A1 (ko) 2013-10-17
EP2838032A1 (en) 2015-02-18
US20150074104A1 (en) 2015-03-12
CN104246749A (zh) 2014-12-24

Similar Documents

Publication Publication Date Title
US9710455B2 (en) Feature text string-based sensitive text detecting method and apparatus
KR101222486B1 (ko) 비결정적 유한 오토마타의 비결정성을 선택적으로 제거하기 위한 방법, 서버, 단말 장치 및 컴퓨터 판독 가능한 기록 매체
US10061858B2 (en) Method and apparatus for processing exploding data stream
JP7095209B2 (ja) グラフニューラルネットワークをプレトレーニングする方法、プログラム及び装置
CN110806923A (zh) 一种区块链任务的并行处理方法、装置、电子设备和介质
CN112559870B (zh) 多模型融合方法、装置、电子设备和存储介质
CN111914010B (zh) 业务处理的方法、装置、设备以及存储介质
CN111582454A (zh) 生成神经网络模型的方法和装置
CN105989015B (zh) 一种数据库扩容方法和装置以及访问数据库的方法和装置
KR102613367B1 (ko) 딥러닝 모델 서빙 최적화를 위한 모델 자동 경량화 방법 및 장치, 이를 이용한 클라우드 추론 서비스 제공 방법
CN112580723B (zh) 多模型融合方法、装置、电子设备和存储介质
US8489537B2 (en) Segmenting sequential data with a finite state machine
US9754213B2 (en) Reasoning over cyclical directed graphical models
JP2022522790A (ja) ブロックチェーントランザクションを追跡するための方法およびデバイス
KR101645890B1 (ko) 비결정적 유한 오토마타의 상태 축소 방법 및 장치
KR102613365B1 (ko) 인공지능 기반 클라우드 서비스 서버 결정 장치 및 방법
CN111563591B (zh) 超网络的训练方法和装置
CN111190660B (zh) 一种基于双向链表模型优化流程自动化的方法及系统
JP6015662B2 (ja) 空間充填曲線処理システム、空間充填曲線処理方法およびプログラム
CN112100467A (zh) 生成搜索空间的方法、装置、设备及存储介质
KR101583978B1 (ko) 오토마타 배치 형태 조절 방법 및 장치
KR102289411B1 (ko) 가중치 기반의 피처 벡터 생성 장치 및 방법
CN115801020B (zh) 确定有限状态自动机压缩方法、匹配方法、设备及介质
KR101583979B1 (ko) 오토마타 생성 장치 및 방법
JP7156376B2 (ja) 観測事象判定装置、観測事象判定方法、及びプログラム

Legal Events

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

Payment date: 20140224

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20160805

Year of fee payment: 9