맞춤기술찾기

이전대상기술

계층화된 시프트 테이블을 이용한 고속의 문자열 패턴 탐지방법

  • 기술번호 : KST2015159994
  • 담당센터 : 서울동부기술혁신센터
  • 전화번호 : 02-2155-3662
요약, Int. CL, CPC, 출원번호/일자, 출원인, 등록번호/일자, 공개번호/일자, 공고번호/일자, 국제출원번호/일자, 국제공개번호/일자, 우선권정보, 법적상태, 심사진행상태, 심판사항, 구분, 원출원번호/일자, 관련 출원번호, 기술이전 희망, 심사청구여부/일자, 심사청구항수의 정보를 제공하는 이전대상기술 뷰 페이지 상세정보 > 서지정보 표입니다.
요약 본 발명은 텍스트상에서의 문자열 패턴 탐지 방법에 관한 것으로서, 싱글 바이트(single-byte) 캐릭터 기반의 계층화된 시프트 테이블을 이용하여 텍스트상에서 이동 가능한 최대 길이만큼 검색 위치를 시프트함으로써 종래에 비해 패턴 탐지 속도를 향상시킬 수 있는 문자열 패턴 탐지 방법에 관한 것이다. 상기와 같은 본 발명의 목적을 달성하기 위한 소정의 텍스트에 N 개의 패턴 중 하나 이상의 패턴이 존재하는지 여부를 탐지하기 위한 방법은, (a) 상기 N 개의 패턴 각각의 문자열 길이를 계산하고, 그 중 가장 짧은 패턴의 길이를 LSP로 저장하는 단계; (b) 상기 텍스트에 포함될 수 있는 모든 1바이트 문자들을 인덱스(index)로 하는 B 개(B는 2 이상의 자연수)의 시프트(SHIFT) 테이블을 생성하고, 상기 B개의 시프트 테이블 각각에 대하여 각 인덱스에 대응하는 값(value)들을 LSP(Length of Shortest Pattern)로 초기화하는 단계; (c) 상기 텍스트에 포함될 수 있는 길이 B의 모든 문자열에 대한 각각의 해시값들을 인덱스로 하는 해시(HASH) 테이블 및, 상기 텍스트에 포함될 수 있는 길이 Bp(Bp는 2 이상의 자연수)의 모든 문자열에 대한 각각의 해시값들을 인덱스로 하는 프리픽스(PREFIX) 테이블을 생성하는 단계; (d) 상기 N 개의 패턴 중 어느 하나의 패턴을 선택하고, 상기 선택된 패턴의 가장 왼쪽 문자의 위치를 0 이라 할 때 왼쪽부터 0 에서 LSP - 1 위치까지의 문자열에 대하여, 상기 문자열의 가장 왼쪽부터 오른쪽으로 한 칸씩 이동하면서 해당 위치에 존재하는 문자의 시프트 값을 계산하여 상기 B 개의 시프트 테이블의 값을 업데이트하는 단계; (e) 상기 (d) 단계에서 선택된 패턴에 대하여, 상기 선택된 패턴의 왼쪽부터 LSP - B 에서 LSP - 1 위치까지의 문자열에 대한 해시값들을 인덱스 값으로 하는 상기 해시(HASH) 테이블의 값(value)을 상기 선택된 패턴에 대한 포인터(pointer)로 저장하는 단계; (f) 상기 (d) 단계에서 선택된 패턴에 대하여, 상기 선택된 패턴의 왼쪽부터 0 에서 Bp - 1 위치까지의 문자열에 대한 해시값들을 인덱스 값으로 하는 상기 프리픽스(PREFIX) 테이블의 값(value)을 상기 선택된 패턴에 대한 포인터(pointer)로 저장하는 단계; (g) 상기 N 개의 패턴 모두에 대하여 상기 (c) 단계 내지 (f) 단계를 반복 수행하는 단계; (h) 상기 (g) 단계의 수행 이후, 상기 B 개의 시프트 테이블, 해시 테이블 및 프리픽스 테이블을 이용하여 상기 텍스트 내에 상기 N 개의 패턴 중 하나 이상의 패턴이 존재하는지 여부를 탐색하는 단계; 를 포함하여 구성된다.
Int. CL G06F 17/28 (2006.01) G06F 17/30 (2006.01)
CPC
출원번호/일자 1020080075635 (2008.08.01)
출원인 재단법인서울대학교산학협력재단
등록번호/일자 10-0959244-0000 (2010.05.13)
공개번호/일자 10-2010-0013895 (2010.02.10) 문서열기
공고번호/일자 (20100524) 문서열기
국제출원번호/일자
국제공개번호/일자
우선권정보
법적상태 등록
심사진행상태 수리
심판사항
구분 신규
원출원번호/일자
관련 출원번호
심사청구여부/일자 Y (2008.08.01)
심사청구항수 8

출원인

번호, 이름, 국적, 주소의 정보를 제공하는 이전대상기술 뷰 페이지 상세정보 > 인명정보 - 출원인 표입니다.
번호 이름 국적 주소
1 재단법인서울대학교산학협력재단 대한민국 서울특별시 관악구

발명자

번호, 이름, 국적, 주소의 정보를 제공하는 이전대상기술 뷰 페이지 상세정보 > 인명정보 - 발명자 표입니다.
번호 이름 국적 주소
1 최윤호 대한민국 대구광역시 수성구
2 서승우 대한민국 서울특별시 금천구

대리인

번호, 이름, 국적, 주소의 정보를 제공하는 이전대상기술 뷰 페이지 상세정보 > 인명정보 - 대리인 표입니다.
번호 이름 국적 주소
1 특허법인(유)화우 대한민국 서울특별시 강남구 테헤란로***길 **, *층 (대치동, 삼호빌딩)

최종권리자

번호, 이름, 국적, 주소의 정보를 제공하는 이전대상기술 뷰 페이지 상세정보 > 인명정보 - 최종권리자 표입니다.
번호 이름 국적 주소
1 재단법인서울대학교산학협력재단 대한민국 서울특별시 관악구
번호, 서류명, 접수/발송일자, 처리상태, 접수/발송일자의 정보를 제공하는 이전대상기술 뷰 페이지 상세정보 > 행정처리 표입니다.
번호 서류명 접수/발송일자 처리상태 접수/발송번호
1 [특허출원]특허출원서
[Patent Application] Patent Application
2008.08.01 수리 (Accepted) 1-1-2008-0557223-62
2 선행기술조사의뢰서
Request for Prior Art Search
2009.02.04 수리 (Accepted) 9-1-9999-9999999-89
3 선행기술조사보고서
Report of Prior Art Search
2009.03.18 수리 (Accepted) 9-1-2009-0015593-60
4 의견제출통지서
Notification of reason for refusal
2010.02.17 발송처리완료 (Completion of Transmission) 9-5-2010-0066522-20
5 [명세서등 보정]보정서
[Amendment to Description, etc.] Amendment
2010.03.17 보정승인간주 (Regarded as an acceptance of amendment) 1-1-2010-0169111-60
6 등록결정서
Decision to grant
2010.05.07 발송처리완료 (Completion of Transmission) 9-5-2010-0195066-04
7 출원인정보변경(경정)신고서
Notification of change of applicant's information
2014.08.22 수리 (Accepted) 4-1-2014-5100909-62
8 출원인정보변경(경정)신고서
Notification of change of applicant's information
2015.03.20 수리 (Accepted) 4-1-2015-5036045-28
번호, 청구항의 정보를 제공하는 이전대상기술 뷰 페이지 상세정보 > 청구항 표입니다.
번호 청구항
1 1
소정의 텍스트에 N 개(N은 2 이상의 자연수)의 패턴 중 하나 이상의 패턴이 존재하는지 여부를 탐지하기 위한 방법으로서, (a) 상기 N 개의 패턴 각각의 문자열 길이를 계산하고, 그 중 가장 짧은 패턴의 길이를 LSP(Length of Shortest Pattern)로 저장하는 단계; (b) 상기 텍스트에 포함될 수 있는 모든 1바이트 문자들을 인덱스(index)로 하는 B 개(B는 2 이상의 자연수)의 시프트(SHIFT) 테이블을 생성하고, 상기 B개의 시프트 테이블 각각에 대하여 각 인덱스에 대응하는 값(value)들을 LSP로 초기화하는 단계; (c) 상기 텍스트에 포함될 수 있는 길이 B의 모든 문자열에 대한 각각의 해시값들을 인덱스로 하는 해시(HASH) 테이블 및, 상기 텍스트에 포함될 수 있는 길이 Bp(Bp는 2 이상의 자연수)의 모든 문자열에 대한 각각의 해시값들을 인덱스로 하는 프리픽스(PREFIX) 테이블을 생성하는 단계; (d) 상기 N 개의 패턴 중 어느 하나의 패턴을 선택하고, 상기 선택된 패턴의 가장 왼쪽 문자의 위치를 0 이라 할 때 왼쪽부터 0 에서 LSP - 1 위치까지의 문자열에 대하여, 상기 문자열의 가장 왼쪽부터 오른쪽으로 한 칸씩 이동하면서 해당 위치에 존재하는 문자의 시프트 값을 계산하여 상기 B 개의 시프트 테이블의 값을 업데이트하는 단계; (e) 상기 (d) 단계에서 선택된 패턴에 대하여, 상기 선택된 패턴의 왼쪽부터 LSP - B 에서 LSP - 1 위치까지의 문자열에 대한 해시값들을 인덱스 값으로 하는 상기 해시(HASH) 테이블의 값(value)을 상기 선택된 패턴에 대한 포인터(pointer)로 저장하는 단계; (f) 상기 (d) 단계에서 선택된 패턴에 대하여, 상기 선택된 패턴의 왼쪽부터 0 에서 Bp - 1 위치까지의 문자열에 대한 해시값들을 인덱스 값으로 하는 상기 프리픽스(PREFIX) 테이블의 값(value)을 상기 선택된 패턴에 대한 포인터(pointer)로 저장하는 단계; (g) 상기 N 개의 패턴 모두에 대하여 상기 (c) 단계 내지 (f) 단계를 반복 수행하는 단계; (h) 상기 (g) 단계의 수행 이후, 상기 B 개의 시프트 테이블, 해시 테이블 및 프리픽스 테이블을 이용하여 상기 텍스트 내에 상기 N 개의 패턴 중 하나 이상의 패턴이 존재하는지 여부를 탐색하는 단계; 를 포함하여 구성되는 문자열 패턴 탐지 방법
2 2
제1항에 있어서, 상기 B 개의 시프트 테이블 각각을 SHIFTLj 테이블(j는 0에서 B - 1 사이의 자연수)로 정의할 때, 상기 (d) 단계는, (d-1) 상기 선택된 패턴상의 위치(k1)를 0으로 설정하는 단계; (d-2) 상기 선택된 패턴에 대하여 상기 k1번째 위치에 해당하는 문자를 추출하는 단계; (d-3) 상기 추출된 문자를 인덱스로 하는 SHIFTLj 테이블의 값 LSP - 1 - k1 을 계산하는 단계; (d-4) 상기 (d-3) 단계에서 계산된 LSP - 1 - k1 값과 SHIFTLj 테이블의 현재값을 서로 비교하고, 이 중 작은 값을 상기 SHIFTLj 테이블의 해당 인덱스의 값으로 업데이트하는 단계; (d-5) 만약 상기 k1 값이 LSP - 1 - j 값과 동일한 경우, 상기 k1 위치에 해당하는 문자를 인덱스로 하는 상기 SHIFTLj 테이블의 값을 0 으로 설정하는 단계; (d-6) 상기 B 개의 시프트 테이블 모두에 대하여, 상기 (d-3) 단계 내지 (d-5) 단계를 반복 수행하는 단계; (d-7) 상기 k1 값을 LSP - 1 에 도달할 때까지 1씩 증가시키면서, 상기 (d-2) 내지 (d-6) 단계를 반복 수행하는 단계; 를 포함하여 구성되는 문자열 패턴 탐지 방법
3 3
제1항 또는 제2항에 있어서, 상기 (e) 단계에서 상기 포인터를 저장하고자 하는 상기 해시 테이블의 값에 기 저장된 포인터가 있을 경우, 기 저장된 포인터를 삭제하지 않고 상기 선택된 패턴에 대한 포인터를 리스트 형태로 추가 저장하는 것을 특징으로 하는 문자열 패턴 탐지 방법
4 4
제1항 또는 제2항에 있어서, 상기 (f) 단계에서 상기 포인터를 저장하고자 하는 상기 프리픽스 테이블의 값에 기 저장된 포인터가 있을 경우, 기 저장된 포인터를 삭제하지 않고 상기 선택된 패턴에 대한 포인터를 리스트 형태로 추가 저장하는 것을 특징으로 하는 문자열 패턴 탐지 방법
5 5
제1항에 있어서, 상기 B 개의 시프트 테이블 각각을 SHIFTLj 테이블(j는 0에서 B - 1 사이의 자연수)로 정의할 때, 상기 (h) 단계는, (h-1) 상기 텍스트의 왼쪽에서 가장 첫 번째 위치를 0 이라 할 때, 펀치 포인터(Sc)를 상기 텍스트의 LSP - 1 위치로 설정하는 단계; (h-2) 상기 텍스트의 Sc 위치에 해당하는 문자에 대한 시프트 값을 SHIFTL0 테이블로부터 추출하는 단계; (h-3) 상기 (h-2) 단계에서 추출된 시프트 값이 0인 경우, 상기 j 값을 1 부터 B - 1 까지 1씩 증가시키면서 상기 텍스트의 Sc - j 위치에 해당하는 문자에 대한 시프트 값을 SHIFTLj 테이블로부터 추출하는 단계; (h-4) 상기 (h-3) 단계에서 추출된 시프트 값들이 모두 0인 경우, 상기 텍스트의 Sc - B + 1부터 Sc 위치까지의 문자열에 대한 해시값을 인덱스 값으로 하는 패턴들을 상기 해시 테이블로부터 검출하는 단계; (h-5) 상기 (h-4) 단계에서 상기 해시 테이블로부터 패턴들이 검출된 경우, 상기 텍스트의 Sc - LSP + 1 부터 Sc - LSP + Bp 위치까지의 문자열에 대한 해시값을 인덱스 값으로 하는 패턴들을 상기 프리픽스 테이블로부터 검출하는 단계; (h-6) 상기 (h-5) 단계에서 상기 프리픽스 테이블로부터 패턴들이 검출된 경우, 상기 프리픽스 테이블로부터 검출된 패턴과 상기 해시 테이블로부터 검출된 패턴 중 일치하는 패턴들이 존재하는지 여부를 판단하는 단계; (h-7) 상기 (h-6) 단계에서의 판단 결과 일치하는 패턴들이 있는 경우, 상기 일치하는 패턴들과 상기 텍스트를 직접 비교하여 상기 패턴들이 실제로 상기 텍스트에 존재하는지 여부를 탐색하는 단계; (h-8) 상기 (h-7) 단계에서의 판단 결과 상기 텍스트와 직접 비교한 패턴들 중 하나라도 상기 텍스트와 일치하는 패턴이 존재하는 경우, 해당 패턴을 상기 텍스트에 존재하는 패턴으로 판단하는 단계; 를 포함하여 구성되는 문자열 패턴 탐지 방법
6 6
제5항에 있어서, 상기 (h-2) 단계에서 추출된 시프트 값이 0이 아닌 경우, 추출된 상기 시프트 값 만큼 상기 Sc를 상기 텍스트의 오른쪽으로 이동하고, 이동된 상기 Sc를 기준으로 상기 (h-2) 단계 이하의 단계들을 수행하는 것을 특징으로 하는 문자열 패턴 탐지 방법
7 7
제5항에 있어서, 상기 (h-3) 단계의 수행 도중 최초로 0이 아닌 시프트 값이 추출된 경우, 다음 수식을 이용하여 상기 Sc를 상기 텍스트의 오른쪽으로 이동하고, 이동된 상기 Sc를 기준으로 상기 (h-2) 단계 이하의 단계들을 수행하는 것을 특징으로 하는 문자열 패턴 탐지 방법
8 8
제5항에 있어서, 상기 (h-4) 단계에서 상기 해시 테이블로부터 패턴들이 검출되지 않은 경우, 또는 상기 (h-5) 단계에서 상기 프리픽스 테이블로부터 패턴들이 검출되지 않은 경우, 또는 상기 (h-6) 단계에서 일치하는 패턴들이 없는 경우, 또는 상기 (h-7) 단계에서 직접 비교 결과 최종적으로 패턴들이 상기 텍스트와 불일치하는 것으로 판단되는 경우 중 어느 하나의 경우에 해당하는 경우, 상기 Sc를 상기 텍스트의 오른쪽으로 1 만큼 이동하고, 이동된 상기 Sc를 기준으로 상기 (h-2) 단계 이하의 단계들을 수행하는 것을 특징으로 하는 문자열 패턴 탐지 방법
지정국 정보가 없습니다
순번, 패밀리번호, 국가코드, 국가명, 종류의 정보를 제공하는 이전대상기술 뷰 페이지 상세정보 > 패밀리정보 - 패밀리정보 표입니다.
순번 패밀리번호 국가코드 국가명 종류
1 US08108387 US 미국 FAMILY
2 US20110066631 US 미국 FAMILY
3 WO2010013863 WO 세계지적재산권기구(WIPO) FAMILY

DOCDB 패밀리 정보

순번, 패밀리번호, 국가코드, 국가명, 종류의 정보를 제공하는 이전대상기술 뷰 페이지 상세정보 > 패밀리정보 - DOCDB 패밀리 정보 표입니다.
순번 패밀리번호 국가코드 국가명 종류
1 US2011066631 US 미국 DOCDBFAMILY
2 US8108387 US 미국 DOCDBFAMILY
3 WO2010013863 WO 세계지적재산권기구(WIPO) DOCDBFAMILY
국가 R&D 정보가 없습니다.