KR101488615B1 - 정규 표현식 기반의 매칭을 위한 오토마타 인코딩 장치 및 방법 - Google Patents

정규 표현식 기반의 매칭을 위한 오토마타 인코딩 장치 및 방법 Download PDF

Info

Publication number
KR101488615B1
KR101488615B1 KR20130105948A KR20130105948A KR101488615B1 KR 101488615 B1 KR101488615 B1 KR 101488615B1 KR 20130105948 A KR20130105948 A KR 20130105948A KR 20130105948 A KR20130105948 A KR 20130105948A KR 101488615 B1 KR101488615 B1 KR 101488615B1
Authority
KR
South Korea
Prior art keywords
automata
component
address
flag
region
Prior art date
Application number
KR20130105948A
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 KR20130105948A priority Critical patent/KR101488615B1/ko
Application granted granted Critical
Publication of KR101488615B1 publication Critical patent/KR101488615B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

정규 표현식 기반의 매칭을 위한 오토마타 인코딩 장치 및 방법이 개시된다. 개시된 오토마타 인코딩 장치는 정규 표현식 기반의 매칭을 위한 오토마타 인코딩 장치에 있어서, 상기 오토마타를 저장하기 위한 메모리부; 및 상기 메모리부에 저장된 상기 오토마타를 관리하는 메모리 관리부;를 포함하되, 상기 오토마타는 복수의 오토마타 컴포넌트를 포함하고, 상기 메모리 관리부는 상기 메모리부 상에 상기 복수의 오토마타 컴포넌트를 연속적으로 기록한다.

Description

정규 표현식 기반의 매칭을 위한 오토마타 인코딩 장치 및 방법{AUTOMATA ENCODING DEVICE AND METHOD}
본 발명의 실시예들은 정규 표현식 기반의 매칭을 위한 오토마타 인코딩 장치 및 방법에 관한 것으로서, 보다 상세하게는 오토마타 인코딩에 사용되는 메모리의 사용량을 줄여서 메모리를 보다 효율적으로 활용할 수 있는 장치 및 방법에 관한 것이다.
정규 표현식(Regular Expression)은 각종 검색 엔진, 바이오 인포매틱스, 운영체제 명령어, 문서 편집기, 네트워크 보안 등과 같이 주로 텍스트 패턴 매칭에 활용되고 있으며, 검색할 패턴을 기술하는 표현식을 의미한다. 대부분의 어플리케이션은 정규 표현식을 활용하고 있으며, 학문적으로도 컴퓨터 과학의 거의 모든 분야에서 정규 표현식을 활용하고 있다.
정규 표현식은 표 1와 같은 문법의 조합으로 정의되는 문자열의 집합을 의미한다. 일례로서, 정규 표현식 "(fa|mo|b?o)ther"는 "father", "mother", "bother", "other"를 나타낸다.
기능 설명
. 문자 1개의 문자와 일치한다. 단일행 모드에서는 새줄 문자를 제외한다.
\ 이스케이프 특수 문자를 식에 문자 자체로 포함한다.
| 선택 여러 식 중에서 하나를 선택한다. 예를 들어, "abc|adc"는 abc와 adc 문자열을 모두 포함한다.
^ 부정 문자 클래스 안의 문자를 제외한 나머지를 선택한다. 예를 들면 [^abc]d는 ad, bd, cd는 포함하지 않고 ed, fd 등을 포함한다. [^a-z]는 알파벳 소문자로 시작하지 않는 모든 문자를 의미한다.
[] 문자 클래스 "["과 "]" 사이의 문자 중 하나를 선택한다. "|"를 여러 개 쓴 것과 같은 의미이다. 예를 들면 [abc]d는 ad, bd, cd를 뜻한다. 또한, "-" 기호와 함께 쓰면 범위를 지정할 수 있다. "[a-z]"는 a부터 z까지 중 하나, "[1-9]"는 1부터 9까지 중의 하나를 의미한다.
() 하위식 여러 식을 하나로 묶을 수 있다. "abc|adc"와 "a(b|d)c"는 같은 의미를 가진다.
* 0회 이상 0개 이상의 문자를 포함한다. "a*b"는 "b", "ab", "aab", "aaab"를 포함한다.
+ 1회 이상 "a+b"는 "ab", "aab", "aaab"를 포함하지만 "b"는 포함하지 않는다.
? 0 또는 1회 "a?b"는 "b", "ab"를 포함한다.
{m} m회 "a{3}b"는 "aaab"만 포함한다.
{m,} m회 이상 "a{2,}b"는 "aab", "aaab", "aaaab"를 포함한다. "ab"는 포함되지 않는다.
{m,n} m회 이상 n회 이하 "a{1,3}b"는 "ab", "aab", "aaab"를 포함하지만, "b"나 "aaaab"는 포함하지 않는다.
정규 표현식은 검색에 있어 대단히 강력한 도구로 활용되는데, 이는 특정 키워드가 아닌 다양한 패턴의 다중 검색어에 대해 효율적인 패턴 매칭을 수행하여 패턴 검색의 효율을 높일 수 있기 때문이다.
정규 표현식이 나타내는 내용은 그대로 유지하면서 사용되는 메모리를 줄이기 위하여, 다양한 인코딩 기술을 활용하여 불필요한 공간의 낭비를 줄이고 더 작은 형태의 정규 표현식을 만드는 과정을 정규 표현식 인코딩 기술이라고 한다. 정규 표현식에 의해 만들어지는 오토마타를 더 작은 오토마타로 변환하는 과정도 정규 표현식 인코딩의 일환이라고 볼 수 있다. 결과적인 정규 표현식 표현형이 얼마나 작고(compact) 효율적(efficient)인지를 연구하는 것이 중요하다.
정규 표현식을 활용한 검색이나 패턴 매칭을 위해서는 정규 표현식을 유한 오토마타(Finite-State Automata)로 변환화는 과정을 거치게 된다. 가장 대표적인 변환 방법에는 톰슨 변환(Thompson's Construction)이 있으며, 도 1에 도시된 것과 같이 정규 표현식으로부터 비결정적 유한 오토마타를 얻는다. 도 1에서, 원은 오토마타의 스테이트(State), 화살표는 오토마타의 트랜지션(Transition)를 각각 의미한다.
정규 표현식을 유한 오토마타로 변환하는 방식은 톰슨 변환 방식 이외에도 다양한 방식이 존재하며, 어떤 방식으로 변환해도 같은 언어(문자열 집합)을 처리하기 때문에, 해당하는 정규 표현식에 대해 더 작은 유한 오토마타를 얻어내는 변환 알고리즘도 정규 표현식 기반 검색 시스템의 성능 향상에 기여할 수 있다.
한편, 주어진 정규 표현식을 유한 오토마타로 나타낼 때, 비트 패킹(Bit-Packing) 기술을 활용하여 보다 크기가 작은 오토마타로 나타낼 수 있으며, 이러한 방법을 이용하여 보다 빠른 정규 표현식 기반의 패턴 매칭이 가능해진다. 기존의 컴퓨터 자료구조는 메모리 상에서 문자, 숫자, 이진 문자, 문자열 등 다양한 데이터 형(기호)을 저장하기 위해서 각각의 데이터 형에 1, 2, 4, 8 바이트(Byte)를 부여하여 해당하는 정보를 인코딩하도록 한다.
보다 상세하게, 도 2를 참조하면 종래의 오토마타 인코딩 장치는 정규 표현식과 대응되는 오토마타 즉, 오토마타 컴포넌트(211 내지 216)를 메모리부(210) 상에 저장한다.
이 때, 해당 오토마타 컴포넌트(211 내지 216) 각각은 다수의 바이트(Byte)(일례로 5 바이트)로 구성되되, 문자 등과 같은 기호가 기록된 기호 영역(일례로, 1 바이트) 및 다음 오토마타 컴포넌트의 주소값이 기록된 주소 영역(일례로, 4 바이트)으로 구성된다. 일례로, 제1 오토마타 컴포넌트(211)는 기호를 기록하기 위한 1 바이트와, 다음 오토마타 컴포넌트인 제2 오토마타 컴포넌트(212)의 주소값을 포함하는 4 바이트로 구성된다. 즉, 숫자 0부터 4294967295에 해당하는 양의 정수를 인코딩하기 위해서 주소 영역에 4 바이트의 메모리를 할당하고, ASCII코드에 속하는 문자 하나를 인코딩하기 위해서 1 바이트의 메모리를 할당한다.
이 때, 종래의 오토마타 인코딩 장치는 오토마타 컴포넌트를 비연속적으로 기록한다. 일례로, 제3 오토마타 컴포넌트(213)와 제4 오토마타 컴포넌트(214)는 연속적으로 기록되지 않는다(7 바이트 간격으로 떨어져 있음). 이는 기록되지 않는 메모리 상에 오토마타 컴포넌트를 배치함으로써 빈 곳으로 남겨진 메모리를 사용을 높이기 위함이다.
이러한 방식의 메모리 할당 기법은 프로그래머가 이해하기 쉬워 프로그래밍하기가 용이하기 때문에 대부분의 컴퓨터 프로그램에서 활용되고 있다.
그러나, CPU의 메모리의 양은 한정되어 있어, 이와 같은 메모리 할당 기법을 통해 정규 표현식을 나타낼 경우 메모리의 크기를 벗어나 잦은 페이지 폴트(Page Fault)를 유발하며, 이에 따라 정규 표현식 검색의 성능 저하로 이어질 우려가 있다. 또한 정규 표현식을 주로 활용하는 네트워크 보안 패키지의 경우에도 네트워크 라우터가 비교적 메모리가 제한되어 있으므로 정규 표현식 매칭 속도가 원활하지 않아 디도스 공격과 같은 트래픽 과부하 공격에 치명적인 약점을 드러내기도 한다.
상기한 바와 같은 종래기술의 문제점을 해결하기 위해, 본 발명에서는 비트 단위로 정규 표현식을 인코딩하여 기존의 자료구조에 비해 훨씬 더 작은 메모리를 점유하게 하여 정규 표현식 기반 검색이나 패턴 매칭 엔진의 성능 향상을 도모할 수 있는 정규 표현식 기반의 매칭을 위한 오토마타 인코딩 장치 및 방법을 제안하고자 한다.
본 발명의 다른 목적들은 하기의 실시예를 통해 당업자에 의해 도출될 수 있을 것이다.
상기한 목적을 달성하기 위해 본 발명의 바람직한 일 실시예에 따르면, 정규 표현식 기반의 매칭을 위한 오토마타 인코딩 장치에 있어서, 상기 오토마타를 저장하기 위한 메모리부; 및 상기 메모리부에 저장된 상기 오토마타를 관리하는 메모리 관리부;를 포함하되, 상기 오토마타는 복수의 오토마타 컴포넌트를 포함하고, 상기 메모리 관리부는 상기 메모리부 상에 상기 복수의 오토마타 컴포넌트를 연속적으로 기록하는 것을 특징으로 하는 오토마타 인코딩 장치가 제공된다.
상기 메모리부 상에 기록된 상기 오토마타 컴포넌트의 형태는 플래그 영역, 기호 영역 및 주소 영역 중에서 적어도 하나를 포함할 수 있다.
상기 주소 영역은 다음 오토마타 컴포넌트의 주소값을 포함하며,
상기 오토마타 컴포넌트가 복수의 트랜지션과 연관되는 경우, 상기 주소 영역에는 복수의 다음 오토마타 컴포넌트의 주소값이 연속적으로 기록될 수 있다.
상기 주소 영역은 바이트 단위로 기록되되, 상기 다음 오토마타 컴포넌트의 주소값은 하나 이상의 바이트에 기록되며, 하나의 바이트 상에서, 상기 주소 영역은 상기 다음 오토마타 컴포넌트의 주소값이 기록되는 제1 주소 영역 및 상기 다음 오토마타 컴포넌트의 주소값이 계속됨을 나타내는 제2 주소 영역을 포함할 수 있다.
하나의 바이트 상에서, 상기 주소 영역은 상기 다음 오토마타 컴포넌트가 마지막 오토마타 컴포넌트임을 나타내는 제3 주소 영역을 더 포함할 수 있다.
하나의 바이트 상에서, 상기 주소 영역은 다른 다음 오토마타 컴포넌트가 기록되어 있음을 나타내는 제4 주소 영역을 더 포함할 수 있다.
상기 기호 영역은 상기 정규 표현식을 구성하는 기호를 기록하는 제1 기호 영역 및 상기 기호와 대응되는 기호 인덱스를 기록하는 제2 기호 영역 중에서 어느 하나를 포함할 수 있다.
상기 플래그 영역은 상기 오토마타의 상태 전이에 관한 정보로 구성된 적어도 하나의 플래그를 포함할 수 있다.
상기 적어도 하나의 플래그는 상기 오토마타 컴포넌트가 마지막 오토마타 컴포넌트임을 나타내는 제1 플래그를 포함할 수 있다.
상기 오토마타 컴포넌트의 형태은 상기 플래그 영역 및 상기 기호 영역을 포함하고, 다음 오토마타 컴포넌트의 주소값을 기록하는 상기 주소 영역은 포함하지 않으며, 상기 적어도 하나의 플래그는 상기 오토마타 컴포넌트가 상기 주소 영역을 포함하고 있지 않음을 나타내는 제2 플래그를 포함할 수 있다.
상기 제2 플래그가 상기 주소 영역을 포함하고 있지 않음을 나타내는 경우, 상기 적어도 하나의 플래그는 상기 오토마타 컴포넌트의 다음 오토마타 컴포넌트가 마지막 오토마타 컴포넌트임을 나타내는 제3 플래그를 포함할 수 있다.
상기 적어도 하나의 플래그는 상기 오토마타 컴포넌트가 자가 전이(Self-loop Transition)임을 나타내는 제4 플래그를 포함할 수 있다.
상기 제4 플래그가 상기 자가 전이임을 나타내는 경우, 상기 적어도 하나의 플래그는 상기 자가 전이가 종료되었음을 나타내는 제5 플래그를 포함할 수 있다.
또한, 본 발명의 다른 실시예에 따르면, 정규 표현식 기반의 매칭을 위한 오토마타 인코딩 방법에 있어서, 메모리부에 저장된 상기 오토마타를 관리하는 단계;를 포함하되, 상기 오토마타는 복수의 오토마타 컴포넌트를 포함하고, 상기 관리하는 단계는 상기 메모리부 상에 상기 복수의 오토마타 컴포넌트를 연속적으로 기록하는 것을 특징으로 하는 오토마타 인코딩 방법이 제공된다.
본 발명에 따르면, 훨씬 더 작은 메모리를 점유하게 하여 정규 표현식 기반 검색이나 패턴 매칭 엔진의 성능 향상을 도모할 수 있는 장점이 있다.
도 1은 종래 기술에 있어, 정규 표현식으로부터 비결정적 유한 오토마타를 얻는 개념을 도시한 도면이다.
도 2는 종래 오토마타 인코딩 장치의 오토마타 내지 오토마타 컴포넌트의 저장 내지 기록의 개념을 도시한 도면이다.
도 3은 본 발명의 일 실시예에 따른 정규 표현식 기반의 매칭을 위한 오토마타 인코딩 장치의 개략적인 구성을 도시한 도면이다.
도 4는 본 발명의 일 실시예에 따른 오토마타 컴포넌트의 형태를 도시한 도면이다.
도 5는 본 발명의 일 실시예에 따른 효과를 설명하기 위한 도면이다.
도 6은 본 발명의 일 실시예에 따른 정규 표현식 기반의 매칭을 위한 오토마타 인코딩 방법의 흐름을 도시한 도면이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.
이하에서, 본 발명에 따른 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다.
도 3은 본 발명의 일 실시예에 따른 정규 표현식 기반의 매칭을 위한 오토마타 인코딩 장치의 개략적인 구성을 도시한 도면이다.
도 3을 참조하면, 본 발명의 일 실시예에 따른 오토마타 인코딩 장치(300)는 메모리부(310) 및 메모리 관리부(320)를 포함한다. 이하, 각 구성요소 별로 그 기능을 상세히 설명하기로 한다.
오토마타 인코딩 장치(300)는 정규 표현식을 유한 오토마타(Finite-State Automata)로 변환하며, 메모리부(310)는 상기한 오토마타를 저장 내지 기록한다. 그리고, 메모리 관리부(320)는 메모리부(310)에 저장된 오토마타를 관리한다. 또한, 정규 표현식은 오토마타와 대응되고, 오토마타는 도 1에 도시된 바와 같이 스테이트(State) 및 트랜지션(Transition)를 포함하되, 정규 표현식을 구성하는 문자, 숫자 등과 같은 복수의 기호는 복수의 오토마타 컴포넌트(Automata Component)와 대응된다. 즉, 메모리부(310)에 저장된 오토마타는 복수의 오토마타 컴포넌트를 포함하며, 이는 정규 표현식의 기호들과 대응된다.
도 3에서는 메모리부(310)에 저장되어 있는 오토마타 및 이에 포함된 복수의 오토마타 컴포넌트(311 내지 316)를 도시하고 있다. 그리고, 도 4는 본 발명의 일 실시예에 따른 오토마타 컴포넌트(311 내지 316)의 형태를 도시한 도면이다.
도 3 및 도 4를 참조하면, 각 오토마타 컴포넌트(311 내지 316)는 복수의 바이트(Byte)로 구성되며, 플래그 영역(410), 기호 영역(420) 및 주소 영역(430) 중에서 하나를 포함한다. 그리고, 각 오토마타 컴포넌트(311 내지 316)의 크기는 서로 다를 수 있다. 이하, 기호 영역(420), 주소 영역(420) 및 플래그 영역(410)의 순서대로 각 영역을 상세히 설명한다.
기호 영역(420)은 정규 표현식을 구성하는 기호들을 기록하는 영역이다.
세부적으로, 기호 영역(420)는 기호를 기록하는 제1 기호 영역(421) 및 기호와 대응되는 기호 인덱스(미리 설정됨)를 기록하는 제2 기호 영역(422) 중에서 하나를 포함할 수 있다. 일례로, 현재의 오토마타 컴포넌트에서 총 8개의 문자가 쓰였다면 빈도수에 따라 기호 인덱스를 0부터 7까지로 설정하여 3 비트 또는 5비트에 할당한다. 그 이후에 검색을 수행할 때는 인코딩된 비트와 따로 저장된 기호 인덱스 테이블을 비교하여 현재 오토마타 컴포넌트에서 읽는 문자를 알아낼 수 있다
따라서, 정규 표현식에서 많이 등장하는 즉, 미리 설정된 기호가 기록되는 경우, 오토마타 컴포넌트(311 내지 316)는 제2 기호 영역(422)에 미리 설정된 "기호 인덱스"를 기록한다(제1 기호 영역(421)은 포함되지 않으며, "기호 영역(420) = 제2 기호 영역(422)"이 됨). 반대로, 미리 설정되지 않는 기호가 기록되는 경우, 오토마타 컴포넌트(311 내지 316)는 제1 기호 영역(422)에 "기호"를 기록한다(제2 기호 영역(422)은 포함되지 않으며, "기호 영역(420) = 제1 기호 영역(421)"이 됨).
요컨대, "기호"만이 기록되는 경우, 본 발명의 기호 영역(420)은 도 2에서 설명한 종래의 오토마타 컴포넌트의 기호 영역과 동일하지만(본 발명과 종래 기술 모두 기호 영역이 "8 비트"임), "기호 인덱스"만이 기록되는 경우, 본 발명의 기호 영역(420)은 종래의 오토마타 컴포넌트의 기호 영역에 비해 그 크기가 감소되므로(본 발명의 기호 영역(420): 3 비트, 종래 기술의 기호 영역: 8 비트), 메모리부(310)의 사용량을 줄일 수 있게 된다.
다음으로, 주소 영역(430)은 오토마타 컴포넌트(311 내지 316)의 다음 오토마타 컴포넌트의 주소값에 대한 정보가 기록되는 영역이다.
본 발명의 일 실시예에 따르면, 메모리 관리부(320)는 메모리부(310) 상에 복수의 오토마타 컴포넌트를 연속적으로 기록할 수 있다.
이에 대해 보다 상세하게 설명하면, 주소 영역(430)은 바이트 단위로 기록(즉, 다수의 수의 바이트들로 기록)된다. 그리고, 각 바이트 내에서 주소 영역(430)은 제1 주소 영역 및 제2 주소 영역을 포함하고, 제3 주소 영역 및 제4 주소 영역을 선택적으로 포함할 수 있다.
제1 주소 영역은 다음 오토마타 컴포넌트의 주소값이 기록되는 영역이며, 제2 주소 영역은 다음 오토마타가 컴포넌트 주소값이 계속됨을 알리는 정보를 나타내는 영역이다.
예를 들어, 하나의 바이트 내에서, 비트의 부족으로 인해 다음 오토마타 컴포넌트의 주소값을 표현할 수 없는 경우, "제1 주소 영역"에서는 다음 오토마타 컴포넌트의 주소값의 일부분이 기록되고, "제2 주소 영역"에서는 다음 오토마타가 컴포넌트 주소값이 계속됨을 알리는 정보(일례로, 비트 "1")가 기록된다. 그리고, 다음 바이트 내에서는 다음 오토마타 컴포넌트의 주소값의 다른 일부분이 "제1 주소 영역(계속)"에 기록된다.
만약, 다음 바이트 내에서, 다음 오토마타가 컴포넌트 주소값이 모두 기록되는 경우, "제2 주소 영역"에서는 다음 오토마타가 컴포넌트 주소값이 모두 기록되었음을 알리는 정보(일례로, 비트 "0")가 기록된다. 반대로, 다음 바이트 내에서도 다음 오토마타가 컴포넌트 주소값이 모두 기록되지 않는 경우, "제2 주소 영역"에서는 다음 오토마타가 컴포넌트 주소값이 계속됨을 알리는 정보(일례로, 비트 "1")가 기록되며, 다다음 바이트 내에서 다음 오토마타가 컴포넌트 주소값의 또 다른 일부분이 기록된다.
정리하면, 도 2에 도시된 종래의 오토마타 인코딩 장치는 오토마타 내지 오토마타 컴포넌트를 비연속적 즉, 랜덤하게 저장하였으며, 이에 따라 다음 오토마타 컴포넌트의 주소값을 저장하는데 기설정된 바이트(일례로, 4 바이트)를 강제적으로 할당하여야 했다. 이에 따라, 종래의 오토마타 인코딩 장치는 사용되지 않는, 즉 필요없는 메모리 사용량이 많아지는 문제점이 있었다(즉, 특정 기호를 기록하는 경우 1 바이트만을 사용하여도 충분히 기록 가능하지만, 종래의 경우 4 바이트를 강제적으로 할당함으로써, 3 바이트의 메모리를 버리는 문제점을 발생시킴).
하지만, 본 발명에 따른 오토마타 인코딩 장치(300)는 주소값이 연속적으로 기록될 뿐만 아니라, 다음 오토마타 컴포넌트의 주소값이 계속됨을 알리는 제2 주소 영역을 이용함으로써, 사용되지 않는 메모리 사용량을 줄일 수 있는 효과를 얻을 수 있다(즉, 특정 기호를 기록하는 경우 제2 주소 영역에 의해 2 바이트만을 사용하여도 충분히 기록 가능하므로, 버려지는 2 바이트의 메모리를 확보할 수 있음).
그리고, 제3 주소 영역은 다음 오토마타 컴포넌트가 마지막 오토마타 컴포넌트임을 알리는 정보를 나타내는 영역이다.
따라서, 제1 주소 영역에 기록된 다음 오토마타 컴포넌트의 주소값이 "마지막 오토마타 컴포넌트"인 경우, 제3 주소 영역에서는 "다음 오토마타 컴포넌트가 마지막 오토마타 컴포넌트임을 알리는 정보"(일례로, 비트 "1")가 기록된다. 반대로, 제1 주소 영역에 기록된 다음 오토마타 컴포넌트의 주소값이 "마지막 오토마타 컴포넌트"가 아닌 경우, 제3 주소 영역에서는 "다음 오토마타 컴포넌트가 마지막 오토마타 컴포넌트가 아님을 알리는 정보"(일례로, 비트 "0")가 기록된다. 제3 주소 영역은 다음 오토마타 컴포넌트의 주소값이 기록되는 마지막 바이트에 위치할 수 있다.
한편, 본 발명의 일 실시예에 따르면, 일부의 오토마타 컴포넌트는 주소 영역(430)을 포함하지 않을 수 있다. 즉, 오토마타 컴포넌트가 마지막 오토마타 컴포넌트인 경우, 해당 오토마타 컴포넌트는 주소 영역(430)을 포함하지 않으며, 플래그 영역(410) 및 기호 영역(420) 만을 포함한다.
또한, 본 발명의 일 실시예에 따르면, 주소 영역(430)에서는 적어도 하나의 다음 오토마타 컴포넌트가 기록될 수 있다. 즉, 해당 오토마타 컴포넌트가 특정 스테이트를 나타내되, 해당 오토마타 컴포넌트 즉, 특정 스테이트가 복수의 트랜지션과 연관되는 경우, 주소 영역(430)에는 복수의 다음 오토마타 컴포넌트의 주소값이 연속적으로 기록될 수 있다.
일례로서, 도 4의 실시예에서, 주소 영역(430)은 2개의 다음 오토마타 컴포넌트를 기록하고 있다(제1 주소 영역(1)에서는 "다음 오토마타 컴포넌트 1"가 기록되어 있고, 제1 주소 영역(2)에서는 "다음 오토마타 컴포넌트 2"가 기록되어 있음).
이를 위해, 하나의 다음 오토마타 컴포넌트의 주소값이 기록되는 마지막 비트에서는 제4 주소 영역이 기록될 수 있다. 제4 주소 영역은 다른 다음 오토마타 컴포넌트가 기록되어 있음을 나타내는 정보가 기록되는 영역이다. 일례로, 다른 다음 오토마타 컴포넌트가 기록되는 경우, 제4 주소 영역의 비트는 "1"이 기록되고, 다른 다음 오토마타 컴포넌트가 기록되지 않는 경우, 제4 주소 영역의 비트는 "0"이 기록된다.
따라서, "KILL"와 "KEY"의 오토마타가 저장되는 경우, 종래의 오토마타 인코딩 장치에 따르면, 도 5의 (A)에 도시된 바와 같이 "K"를 두 번 기록하게 되며, 이에 따라 메모리 사용량이 늘어난다.
반면에, 본 발명의 오토마타 인코딩 장치(300)에 따르면, 도 5의 (B)에 도시된 바와 같이 "K" 오토마타 컴포넌트 내에 "I"의 주소값 및 "E"의 주소값을 모두 기록, 즉, 2개의 트랜지션을 모두 기록할 수 있으므로, 사용되지 않는 메모리 사용량을 줄일 수 있는 효과를 얻을 수 있다.
마지막으로, 플래그 영역(410)은 오토마타의 트랜지션 즉, 상태 전이에 관한 정보로 구성된 적어도 하나의 플래그를 포함할 수 있다.
보다 상세하게, 플래그 영역(410)은 제1 플래그(L), 제2 플래그(N), 제3 플래그(NF), 제4 플래그(S), 및 제5 플래그(SF)를 포함할 수 있으며, 일례로 플래그 영역(410)은 5 비트의 크기를 가질 수 있다.
제1 플래그는 오토마타 컴포넌트가 마지막 오토마타 컴포넌트임을 나타내는 정보를 기록한다.
일례로, 제1 플래그가 비트 "1"인 경우, 해당 오토마타 컴포넌트는 "마지막 오토마타 컴포넌트"임을 나타내며, 반대로 제1 플래그가 비트 "0"인 경우, 해당 오토마타 컴포넌트는 "마지막 오토마타 컴포넌트"가 아님을 나타낸다.
이를 통해, 본 발명은 현재 상태를 기술하는 ID나 식별자 없이도 특정 상태 전이가 마지막이라는 정보만으로 상태들을 구분할 수 있게 된다.
제2 플래그는 해당 오토마타 컴포넌트가 주소 영역(430)을 포함하고 있지 않음을 알린다.
일례로, 제2 플래그가 비트 "1"인 경우, 해당 오토마타 컴포넌트가 주소 영역(430)을 포함하지 않음을 알리며, 반대로 제2 플래그가 비트 "0"인 경우, 해당 오토마타 컴포넌트는 주소 영역(430)을 포함함을 알린다.
즉, 제2 플래그를 통해 만약 현재 상태가 그 바로 다음 상태로의 상태 전이를 갖고 있을 경우, 해당 상태의 주소를 저장하지 않고 제2 플래그를 온시키는 것으로 그 정보를 대신한다. 주소값 정보가 최소 1 바이트에서 많은 바이트를 소모할 가능성이 있으므로, 1 비트를 통해 이러한 정보를 대신함으로써 큰 메모리 절약 효과가 얻을 수 있다.
한편, 제2 플래그가 주소 영역을 포함하고 있지 않음을 나타내는 경우가 발생하며, 이 때, 제3 플래그는 오토마타 컴포넌트의 다음 오토마타 컴포넌트가 마지막 오토마타 컴포넌트임을 알리는 기능을 수행한다.
일례로, 제3 플래그가 비트 "1"인 경우, 해당 오토마타 컴포넌트의 다음 오토마타 컴포넌트가 주소 영역(430)을 포함하지 않음을 알리며, 반대로 제3 플래그가 비트 "0"인 경우, 해당 오토마타 컴포넌트의 다음 오토마타 컴포넌트가 주소 영역(430)을 포함하고 있음을 알린다.
다음으로, 제4 플래그는 해당 오토마타 컴포넌트가 자가 전이(Self-loop Transition)임을 나타낸다. 또한, 제4 플래그가 자가 전이임을 나타내는 경우가 발생하며, 이 때 제5 플래그는 자가 전이가 종료되었음을 나타낸다.
도 6은 본 발명의 일 실시예에 따른 정규 표현식 기반의 매칭을 위한 오토마타 인코딩 방법의 흐름을 도시한 도면이다. 이하. 도 6를 참조하여 각 단계별로 수행되는 과정을 설명한다.
단계(S610)에서는 정규 표현식을 오토마타로 변환하여 메모리부에 저장한다.
그리고, 단계(S620)에서는 메모리부에 저장된 오토마타를 관리한다.
본 발명의 일 실시예에 따르면, 단계(S610)는 메모리부 상에 복수의 오토마타 컴포넌트를 연속적으로 기록할 수 있다. 여기서, 메모리부 상에 기록된 오토마타 컴포넌트의 형태은 플래그 영역, 기호 영역 및 주소 영역 중에서 적어도 하나를 포함할 수 있다.
지금까지 본 발명에 따른 오토마타 인코딩 방법의 실시예들에 대하여 설명하였고, 앞서 도 1 내지 도 5에서 설명한 오토마타 인코딩 장치(300)에 관한 구성이 본 실시예에도 그대로 적용 가능하다. 이에, 보다 상세한 설명은 생략하기로 한다.
또한, 본 발명의 실시예들은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 일 실시예들의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명에서는 구체적인 구성 요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나 이는 본 발명의 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 따라서, 본 발명의 사상은 설명된 실시예에 국한되어 정해져서는 아니되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등하거나 등가적 변형이 있는 모든 것들은 본 발명 사상의 범주에 속한다고 할 것이다.

Claims (15)

  1. 정규 표현식 기반의 매칭을 위한 오토마타 인코딩 장치에 있어서,
    상기 오토마타를 저장하기 위한 메모리부; 및
    상기 메모리부에 저장된 상기 오토마타를 관리하는 메모리 관리부;를 포함하되,
    상기 오토마타는 복수의 오토마타 컴포넌트를 포함하고, 상기 메모리 관리부는 상기 메모리부 상에 상기 복수의 오토마타 컴포넌트를 연속적으로 기록하는 것을 특징으로 하는 오토마타 인코딩 장치.
  2. 제1항에 있어서,
    상기 메모리부 상에 기록된 상기 오토마타 컴포넌트의 형태는 플래그 영역, 기호 영역 및 주소 영역 중에서 적어도 하나를 포함하는 것을 특징으로 하는 오토마타 인코딩 장치.
  3. 제2항에 있어서,
    상기 주소 영역은 다음 오토마타 컴포넌트의 주소값을 포함하며,
    상기 오토마타 컴포넌트와 대응되는 스테이트가 복수의 트랜지션을 가지는 경우, 상기 주소 영역에는 복수의 다음 오토마타 컴포넌트의 주소값이 연속적으로 기록되는 것을 특징으로 하는 오토마타 인코딩 장치.
  4. 제3항에 있어서,
    상기 주소 영역은 바이트 단위로 기록되되, 상기 다음 오토마타 컴포넌트의 주소값은 하나 이상의 바이트에 기록되며,
    하나의 바이트 상에서, 상기 주소 영역은 상기 다음 오토마타 컴포넌트의 주소값이 기록되는 제1 주소 영역 및 상기 다음 오토마타 컴포넌트의 주소값이 계속됨을 나타내는 제2 주소 영역을 포함하는 것을 특징으로 하는 오토마타 인코딩 장치.
  5. 제4항에 있어서,
    하나의 바이트 상에서, 상기 주소 영역은 상기 다음 오토마타 컴포넌트가 마지막 오토마타 컴포넌트임을 나타내는 제3 주소 영역을 더 포함하는 것을 특징으로 하는 오토마타 인코딩 장치.
  6. 제4항에 있어서,
    하나의 바이트 상에서, 상기 주소 영역은 상기 복수의 다음 오토마타 컴포넌트 중에서, 기 저장된 다음 오토마타 컴포넌트와는 다른 또 하나의 다음 오토마타 컴포넌트가 기록되어 있음을 나타내는 제4 주소 영역을 더 포함하는 것을 특징으로 하는 오토마타 인코딩 장치.
  7. 제2항에 있어서,
    상기 기호 영역은 상기 정규 표현식을 구성하는 기호를 기록하는 제1 기호 영역 및 상기 기호와 대응되는 기호 인덱스를 기록하는 제2 기호 영역 중에서 어느 하나를 포함하는 것을 특징으로 하는 오토마타 인코딩 장치.
  8. 제2항에 있어서,
    상기 플래그 영역은 상기 오토마타의 트랜지션에 관한 정보로 구성된 적어도 하나의 플래그를 포함하는 것을 특징으로 하는 오토마타 인코딩 장치.
  9. 제8항에 있어서,
    상기 적어도 하나의 플래그는 상기 오토마타 컴포넌트가 마지막 오토마타 컴포넌트임을 나타내는 제1 플래그를 포함하는 것을 특징으로 하는 오토마타 인코딩 장치.
  10. 제8항에 있어서,
    상기 오토마타 컴포넌트의 형태은 상기 플래그 영역 및 상기 기호 영역을 포함하고, 다음 오토마타 컴포넌트의 주소값을 기록하는 상기 주소 영역은 포함하지 않으며,
    상기 적어도 하나의 플래그는 상기 오토마타 컴포넌트가 상기 주소 영역을 포함하고 있지 않음을 나타내는 제2 플래그를 포함하는 것을 특징으로 하는 오토마타 인코딩 장치.
  11. 제10항에 있어서,
    상기 제2 플래그가 상기 주소 영역을 포함하고 있지 않음을 나타내는 경우, 상기 적어도 하나의 플래그는 상기 오토마타 컴포넌트의 다음 오토마타 컴포넌트가 마지막 오토마타 컴포넌트임을 나타내는 제3 플래그를 포함하는 것을 특징으로 하는 오토마타 인코딩 장치.
  12. 제8항에 있어서,
    상기 적어도 하나의 플래그는 상기 오토마타 컴포넌트가 자가 전이(Self-loop Transition)임을 나타내는 제4 플래그를 포함하는 것을 특징으로 하는 오토마타 인코딩 장치.
  13. 제12항에 있어서,
    상기 제4 플래그가 상기 자가 전이임을 나타내는 경우, 상기 적어도 하나의 플래그는 상기 자가 전이가 종료되었음을 나타내는 제5 플래그를 포함하는 것을 특징으로 하는 오토마타 인코딩 장치.
  14. 정규 표현식 기반의 매칭을 위한 오토마타 인코딩 방법에 있어서,
    메모리부에 저장된 상기 오토마타를 관리하는 단계;를 포함하되,
    상기 오토마타는 복수의 오토마타 컴포넌트를 포함하고, 상기 관리하는 단계는 상기 메모리부 상에 상기 복수의 오토마타 컴포넌트를 연속적으로 기록하는 것을 특징으로 하는 오토마타 인코딩 방법.
  15. 제14항에 있어서,
    상기 메모리부 상에 기록된 상기 오토마타 컴포넌트의 형태은 플래그 영역, 기호 영역 및 주소 영역 중에서 적어도 하나를 포함하는 것을 특징으로 하는 오토마타 인코딩 방법.
KR20130105948A 2013-09-04 2013-09-04 정규 표현식 기반의 매칭을 위한 오토마타 인코딩 장치 및 방법 KR101488615B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR20130105948A KR101488615B1 (ko) 2013-09-04 2013-09-04 정규 표현식 기반의 매칭을 위한 오토마타 인코딩 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR20130105948A KR101488615B1 (ko) 2013-09-04 2013-09-04 정규 표현식 기반의 매칭을 위한 오토마타 인코딩 장치 및 방법

Publications (1)

Publication Number Publication Date
KR101488615B1 true KR101488615B1 (ko) 2015-02-04

Family

ID=52590012

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20130105948A KR101488615B1 (ko) 2013-09-04 2013-09-04 정규 표현식 기반의 매칭을 위한 오토마타 인코딩 장치 및 방법

Country Status (1)

Country Link
KR (1) KR101488615B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190136369A (ko) 2018-05-30 2019-12-10 연세대학교 산학협력단 오토마타 기반 실시간 확률 패턴 매칭 장치 및 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090110431A (ko) * 2008-04-18 2009-10-22 에스케이 텔레콤주식회사 무선 메신저 내 채팅 중 문자를 자소 단위로 전송하는 방법및 단말기

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090110431A (ko) * 2008-04-18 2009-10-22 에스케이 텔레콤주식회사 무선 메신저 내 채팅 중 문자를 자소 단위로 전송하는 방법및 단말기

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190136369A (ko) 2018-05-30 2019-12-10 연세대학교 산학협력단 오토마타 기반 실시간 확률 패턴 매칭 장치 및 방법
KR102061413B1 (ko) * 2018-05-30 2019-12-31 연세대학교 산학협력단 오토마타 기반 실시간 확률 패턴 매칭 장치 및 방법

Similar Documents

Publication Publication Date Title
JP6051212B2 (ja) 反復データの処理
JP5996088B2 (ja) 暗号ハッシュ・データベース
US20060271540A1 (en) Method and apparatus for indexing in a reduced-redundancy storage system
US20100185807A1 (en) Data storage processing method, data searching method and devices thereof
US20120119927A1 (en) Methods and devices for creating, compressing and searching binary tree
US10802923B2 (en) Method and apparatus for incremental backup based on file paths and a prefix tree
CN102867049B (zh) 一种基于单词查找树实现的汉语拼音快速分词方法
CN103279532A (zh) 多集合元素去重并标识所属集合的过滤系统及其方法
US20150278530A1 (en) Method and apparatus for storing redeem code, and method and apparatus for verifying redeem code
CN106326040B (zh) 一种快照元数据管理方法和装置
WO2018133762A1 (zh) 文件合并方法和装置
WO2019034136A1 (zh) 表项数据的存储和查询
CN116089663A (zh) 一种规则表达式匹配方法、装置及计算机可读存储介质
KR101488615B1 (ko) 정규 표현식 기반의 매칭을 위한 오토마타 인코딩 장치 및 방법
CN108304384B (zh) 拆词方法及设备
CN107609143B (zh) 一种分布式实时内存数据库的分片信息存储方法
US8463759B2 (en) Method and system for compressing data
KR101089722B1 (ko) 프리픽스 트리 기반 색인 방법 및 장치, 그 기록 매체
JP2007249252A (ja) インデックスカラム暗号化方法、pkカラム暗号化方法
CN114461635A (zh) 一种MySQL数据库数据存储方法、装置和电子设备
KR101645890B1 (ko) 비결정적 유한 오토마타의 상태 축소 방법 및 장치
CN104598464A (zh) 一种信息处理方法及电子设备
Mishra et al. A review on compressed pattern matching
JP5349193B2 (ja) 言語モデル圧縮装置、言語モデルのアクセス装置、言語モデル圧縮方法、言語モデルのアクセス方法、言語モデル圧縮プログラム、言語モデルのアクセスプログラム
KR101583979B1 (ko) 오토마타 생성 장치 및 방법

Legal Events

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

Payment date: 20190121

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20200305

Year of fee payment: 6