KR100908301B1 - 리스트 기반 최대빈번 서브트리 추출 방법 및 장치 - Google Patents

리스트 기반 최대빈번 서브트리 추출 방법 및 장치 Download PDF

Info

Publication number
KR100908301B1
KR100908301B1 KR1020070054839A KR20070054839A KR100908301B1 KR 100908301 B1 KR100908301 B1 KR 100908301B1 KR 1020070054839 A KR1020070054839 A KR 1020070054839A KR 20070054839 A KR20070054839 A KR 20070054839A KR 100908301 B1 KR100908301 B1 KR 100908301B1
Authority
KR
South Korea
Prior art keywords
seed
label
field
parent node
tree
Prior art date
Application number
KR1020070054839A
Other languages
English (en)
Other versions
KR20080107045A (ko
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 KR1020070054839A priority Critical patent/KR100908301B1/ko
Publication of KR20080107045A publication Critical patent/KR20080107045A/ko
Application granted granted Critical
Publication of KR100908301B1 publication Critical patent/KR100908301B1/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
    • G06F17/10Complex mathematical operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Algebra (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

리스트 기반 최대빈번 서브트리 추출 방법 및 장치가 개시된다. 본 발명의 일 실시예에 따르면, 미리 저장된 트리들을 이용하여 링크드리스트 구조를 생성하는 단계; 미리 설정된 최소지지도값 및 총 트리 개수를 이용하여 최소 트리 개수를 산출하여 상기 최소 트리 개수 미만인 엘리먼트를 갖는 리스트를 제거하여 정제된 리스트 구조를 생성하는 단계; 상기 정제된 리스트 구조에서 각각의 리스트에 저장된 레이블에 대응하는 시드(seed)를 생성하고, 상기 생성된 시드의 주소값 및 상기 저장된 레이블을 매핑하여 레이블 헤더 테이블을 생성하는 단계; 및 상기 시드 및 상기 레이블 헤더 테이블을 이용하여 시드 트리를 생성하여 프루닝(pruning)을 수행하여 최대빈번 서브트리를 추출하는 단계를 포함하는 최대빈번 서브트리 추출 방법이 제공될 수 있다. 따라서, 본 발명에 의해, 자원 점유가 심한 트리 조인 연산의 수행없이 최대빈번 서브트리를 추출할 수 있다.
트리, 리스트, 링크드리스트, TREE

Description

리스트 기반 최대빈번 서브트리 추출 방법 및 장치{Method and device for extracting maximal frequent subtrees based list structure}
도 1은 본 발명의 일 실시예에 따른 최대빈번 서브트리를 추출할 수 있는 장치의 블록 구성도.
도 2는 본 발명의 일 실시예에 따른 트리 구조를 예시한 도면.
도 3은 본 발명의 일 실시예에 따른 트리 구조를 이용하여 생성한 링크드리스트 구조를 예시한 도면.
도 4는 본 발명의 일 실시예에 따른 생성된 링크드리스트 구조에서 빈번하지 않은 레이블을 제거하는 정제 과정을 나타난 순서도.
도 5는 본 발명의 일 실시예에 따른 빈번하지 않은 레이블을 이용하여 생성한 해쉬 테이블을 예시한 도면.
도 6은 본 발명의 일 실시예에 따른 빈번하지 않은 레이블이 저장된 리스트를 제거한 여과된 리스트를 예시한 도면.
도 7은 본 발명의 일 실시예에 따른 정제된 리스트를 예시한 도면.
도 8은 본 발명의 일 실시예에 따른 시드 트리 생성 과정을 나타낸 순서도.
도 9는 본 발명의 일 실시예에 따른 시드 및 레이블 헤더 테이블을 예시한 도면.
도 10은 본 발명의 일 실시예에 따른 생성된 시드 트리를 예시한 도면.
도 11은 본 발명의 일 실시예에 따른 최대비번 서브트리 추출 과정을 나타낸 순서도.
도 12은 본 발명의 일 실시예에 따른 시드 트리에서 프루닝에 의해 도출된 최대빈번 서브트리를 예시한 도면.
<도면의 주요 부분에 대한 부호의 설명>
110: 저장부
120: 리스트 생성부
130: 리스트 정제부
140: 최대빈번 서브트리 추출부
본 발명은 최대빈번 서브트리 추출에 관한 것으로, 특히 리스트 구조를 이용하여 최대빈번 서브트리를 효율적으로 추출할 수 있는 방법 및 장치에 관한 것이다.
그래프는 데이터와 해당 데이터간의 관계를 쉽고 간단하게 표현하기 위해 폭 넓게 사용되는 데이터 구조이며, 그 중에서도 데이터베이스 분야의 XML 문서에서 주로 쓰이는 트리 구조가 가장 유용하게 널리 사용되고 있다. 웹 사이트 방문 패턴을 표시하는 등의 일상 응용에서 쓰이는 트리들은 XML 트리와 마찬가지로 노드 또는 간선에 레이블을 가진 트리들이며, 해당 레이블은 중복이 허용된다.
저장된 모든 트리들이 사용자에 의해 유용하게 쓰이는 데이터는 아니며 극히 일분의 데이터만이 자주 사용되고 효용이 높은 정보들이며, 이와 같이 효용이 높은 정보들이 트리 데이터에서는 빈번하게 발생하는 서브트리들이다. 일반적으로 서브트리를 생성하는 방식은 Apriori 방식을 주로 사용하나 빈번한 서브트리를 추출하기 위해 많은 트리 조인연산을 수행해야하는 문제점이 있다. 일반적으로 트리 조인연산은 노드의 개수의 지수승으로 증가되어 계산을 위해 너무 많은 시간이 소요되는 문제점이 있다.
따라서, 상술한 문제점을 해결하기 위한 본 발명은 계층적 트리 구조를 링크드리스트 구조로 변경하여 효율적으로 최대빈번 서브트리를 추출할 수 있는 방법 및 장치를 제공하기 위한 것이다.
또한, 본 발명은 대량의 트리 데이터로부터 빈번하게 발생하는 정보를 추출하기 위해 특화된 데이터 구조를 이용함으로써 자원 점유가 심한 트리 조인 연산의 수행없이 최대빈번 서브트리를 추출할 수 있는 방법 및 장치를 제공하기 위한 것이다.
또한, 본 발명은 트리 구조와는 달리 중복 저장을 허용하지 않음으로써 보다 저장 매체를 효율적으로 이용할 수 있는 최대빈번 서브트리를 추출할 수 있는 방법 및 장치를 제공하기 위한 것이다.
이외의 본 발명의 목적들은 하기의 실시예에 대한 설명을 통해 쉽게 이해될 수 있을 것이다.
상기 목적을 달성하기 위하여, 본 발명의 일 측면에 따르면, 계층적 트리 구조로 저장된 데이터들을 링크드리스트 구조로 변경하여 최대빈번한 서브트리를 보다 효과적으로 추출할 수 있는 방법 및 그 프로그램이 기록된 기록매체가 제공된다.
본 발명의 일 실시예에 따르면, 트리(tree)들에서 최대빈번 서브트리를 추출하는 방법에 있어서, 미리 저장된 트리들을 이용하여 링크드리스트 구조를 생성하는 단계; 미리 설정된 최소지지도값 및 총 트리 개수를 이용하여 최소 트리 개수를 산출하여 상기 최소 트리 개수 미만인 엘리먼트를 갖는 리스트를 제거하여 정제된 리스트 구조를 생성하는 단계; 상기 정제된 리스트 구조에서 각각의 리스트에 저장된 레이블에 대응하는 시드(seed)를 생성하고, 상기 생성된 시드의 주소값 및 상기 저장된 레이블을 매핑하여 레이블 헤더 테이블을 생성하는 단계; 및 상기 시드 및 상기 레이블 헤더 테이블을 이용하여 시드 트리를 생성하고, 생성된 시드 트리에 대해 프루닝(pruning)을 수행하여 최대빈번 서브트리를 추출하는 단계를 포함하는 최대빈번 서브트리 추출 방법이 제공될 수 있다.
상기 링크드리스트 구조는 헤더 부분과 바디 부분을 포함하되, 상기 헤더 부분은 트리의 레이블이 저장되는 레이블 필드 및 해당 레이블이 할당된 노드 ID가 저장되는 노드 필드를 포함하며, 상기 바디 부분은 부모 노드 필드 및 트리 필드가 포함된 엘리먼트들을 포함하고, 상기 부모 노드 필드는 상기 노드 ID의 부모 노드 ID를 저장하며, 상기 트리 필드는 상기 노드 ID를 포함하는 트리 ID를 저장할 수 있다.
상기 시드는 상기 대응되는 레이블이 할당된 노드의 부모 노드를 지시하는 주소가 저장되는 제1 주소 필드, 발생빈도가 저장되는 빈도필드 및 후임자 시드의 주소가 저장되는 제2 주소 필드를 포함할 수 있다.
상기 정제된 리스트 구조를 생성하는 단계는, 상기 최소지지도값과 미리 설정된 총 트리 개수를 이용하여 최소 트리 개수를 산출하는 단계; 상기 링크드리스트 구조에서 각 리스트에 포함된 엘리먼트의 수가 상기 최소 트리 개수 미만인 상기 제거 대상 리스트를 추출하여 상기 해쉬 테이블을 생성하는 단계; 상기 링크드리스트 구조에서 상기 제거 대상 리스트를 제거하여 여과된 리스트 구조를 생성하는 단계; 상기 여과된 리스트에서 저장된 레이블에 상응하는 부모 노드 ID들의 레이블이 상기 해쉬 테이블에 포함되는지 여부를 판단하는 단계; 및 상기 해쉬 테이블에 포함되는 경우, 상기 부모 노드 ID의 조상 노드들을 탐색하여 상기 해쉬 테이블에 포함되지 않은 조상 노드가 존재하는 경우, 상기 부모 노드 ID를 상기 조상 노드 ID로 변경하여 상기 정제된 리스트 구조를 생성하는 단계를 포함할 수 있다.
상기 부모 노드 ID의 조상 노드들을 탐색한 결과 상기 부모 노드 ID의 모든 조상 노드들이 상기 해쉬 테이블에 포함되는 경우, 미리 설정된 널값으로 변경하여 상기 정제된 리스트 구조를 생성하는 단계를 더 포함할 수 있다.
상기 해쉬 테이블은 키필드, 값필드 및 인덱스 필드를 포함하되, 상기 키필드에는 상기 제거 대상 리스트들의 레이블 그룹에 대한 정보가 저장되고, 상기 인덱스 필드에는 상기 제거 대상 리스트에 저장된 레이블이 저장되며, 상기 값필드에는 상기 저장된 레이블이 할당된 노드의 부모 노드 ID가 저장되는 제1 필드 및 상기 부모 노드 ID를 포함하는 트리 ID가 저장되는 제2 필드를 포함할 수 있다.
상기 시드 및 상기 레이블 헤더 테이블을 이용하여 시드 트리를 생성하는 단계는, 상기 정제된 리스트에 저장된 레이블에 상응하는 부모 노드 ID에 해당하는 레이블에 연결된 부모 노드 시드를 설정하는 단계; 상기 저장된 레이블에 연결된 현재 레이블 시드의 제1 주소 필드가 미리 설정된 널값인지 여부를 판단하는 단계; 및 상기 제1 주소 필드가 상기 미리 설정된 널값인 경우, 상기 부모 노드 시드의 주소를 상기 현재 레이블 시드의 상기 제1 주소 필드에 저장하고, 미리 설정된 값만큼 증가된 발생빈도를 상기 빈도필드에 저장하는 단계를 포함할 수 있다.
상기 제1 주소 필드가 상기 미리 설정된 널값이 아닌 경우, 상기 현재 레이블 시드의 상기 제1 주소 필드와 상기 부모 노드 시드의 주소가 동일한지 여부를 판단하는 단계; 및 상기 제1 주소 필드와 상기 부모 노드 시드의 주소가 동일하지 않은 경우, 상기 현재 레이블 시드에 연결되는 후임자 시드를 생성하고, 상기 미리 설정된 값만큼 증가된 후임자 시드의 발생빈도를 빈도필드에 저장하는 단계를 더 포함할 수 있다.
상기 제1 주소 필드와 상기 부모 노드 시드의 주소가 동일한 경우, 미리 설정된 값만큼 증가된 부모 노드 시드의 발생빈도를 빈도필드에 저장하는 단계를 더 포함할 수 있다.
상기 프루닝의 수행은 상기 시드 트리에 저장되어 있는 시드들 중 상기 부모 노드 시드의 발생빈도가 상기 최소지지도값 이상인 시드들만 추출하는 과정이다.
본 발명의 다른 실시예에 따르면, 최대빈번 서브트리를 추출하는 방법을 수행하기 위해 디지털 처리 장치에 의해 실행될 수 있는 명령어들의 프로그램이 유형적으로 구현되어 있으며, 상기 디지털 처리 장치에 의해 판독될 수 있는 프로그램을 기록한 기록매체에 있어서, 미리 저장된 트리들을 이용하여 링크드리스트 구조를 생성하는 단계; 미리 설정된 최소지지도값 및 총 트리 개수를 이용하여 최소 트리 개수를 산출하여 상기 최소 트리 개수 미만인 엘리먼트를 갖는 리스트를 제거하여 정제된 리스트 구조를 생성하는 단계; 상기 정제된 리스트 구조에서 각각의 리스트에 저장된 레이블에 대응하는 시드(seed)를 생성하고, 상기 생성된 시드의 주소값과 상기 저장된 레이블이 하나의 레코드로써 매핑된 레이블 헤더 테이블을 생성하는 단계; 및 상기 시드 및 상기 레이블 헤더 테이블을 이용하여 시드 트리를 생성하고, 생성된 시드 트리에 대해 프루닝(pruning)을 수행하여 최대빈번 서브트리를 추출하는 단계를 수행하는 프로그램을 기록한 기록 매체가 제공될 수 있다.
상기 링크드리스트 구조는 헤더 부분과 바디 부분을 포함하되, 상기 헤더 부 분은 트리의 레이블이 저장되는 레이블 필드 및 해당 레이블이 할당된 노드 ID가 저장되는 노드 필드를 포함하며, 상기 바디 부분은 부모 노드 필드 및 트리 필드가 포함된 엘리먼트들을 포함하고, 상기 부모 노드 필드는 상기 노드 ID의 부모 노드 ID를 저장하며, 상기 트리 필드는 상기 노드 ID를 포함하는 트리 ID를 저장할 수 있다.
상기 시드는 상기 대응되는 레이블이 할당된 노드의 부모 노드를 지시하는 주소가 저장되는 제1 주소 필드, 발생빈도가 저장되는 빈도필드 및 후임자 시드의 주소가 저장되는 제2 주소 필드를 포함할 수 있다.
상기 정제된 리스트 구조를 생성하는 단계는, 상기 최소지지도값과 미리 설정된 총 트리 개수를 이용하여 최소 트리 개수를 산출하는 단계; 상기 링크드리스트 구조에서 각 리스트에 포함된 엘리먼트의 수가 상기 최소 트리 개수 미만인 상기 제거 대상 리스트를 추출하여 상기 해쉬 테이블을 생성하는 단계; 상기 링크드리스트 구조에서 상기 제거 대상 리스트를 제거하여 여과된 리스트 구조를 생성하는 단계; 상기 여과된 리스트에서 저장된 레이블에 상응하는 부모 노드 ID들의 레이블이 상기 해쉬 테이블에 포함되는지 여부를 판단하는 단계; 및 상기 부모 노드 ID의 조상 노드들을 탐색하여 상기 해쉬 테이블에 포함되지 않은 조상 노드가 존재하는 경우, 상기 부모 노드 ID를 상기 조상 노드 ID로 변경하여 상기 정제된 리스트 구조를 생성하는 단계를 수행할 수 있다.
상기 부모 노드 ID의 조상 노드들을 탐색한 결과 상기 부모 노드 ID의 모든 조상 노드들이 상기 해쉬 테이블에 포함되는 경우, 미리 설정된 널값으로 변경하여 상기 정제된 리스트 구조를 생성하는 단계를 더 수행할 수 있다.
상기 해쉬 테이블은 키필드, 값필드 및 인덱스 필드를 포함하되, 상기 키필드에는 상기 제거 대상 리스트들의 레이블 그룹에 대한 정보가 저장되고, 상기 인덱스 필드에는 상기 제거 대상 리스트에 저장된 레이블이 저장되며, 상기 값필드에는 상기 저장된 레이블이 할당된 노드의 부모 노드 ID가 저장되는 제1 필드 및 상기 부모 노드 ID를 포함하는 트리 ID가 저장되는 제2 필드를 포함할 수 있다..
상기 시드 및 상기 레이블 헤더 테이블을 이용하여 시드 트리를 생성하는 단계는, 상기 정제된 리스트에 저장된 레이블에 상응하는 부모 노드 ID에 해당하는 레이블에 연결된 부모 노드 시드를 설정하는 단계; 상기 저장된 레이블에 연결된 현재 레이블 시드의 제1 주소 필드가 미리 설정된 널값인지 여부를 판단하는 단계; 및 상기 제1 주소 필드가 상기 미리 설정된 널값인 경우, 상기 부모 노드 시드의 주소를 상기 현재 레이블 시드의 상기 제1 주소 필드에 저장하고, 미리 설정된 값만큼 증가된 발생빈도를 상기 빈도필드에 저장하는 단계를 수행할 수 있다.
상기 제1 주소 필드가 상기 미리 설정된 널값이 아닌 경우, 상기 현재 레이블 시드의 상기 제1 주소 필드와 상기 부모 노드 시드의 주소가 동일한지 여부를 판단하는 단계; 및 상기 제1 주소 필드와 상기 부모 노드 시드의 주소가 동일하지 않은 경우, 상기 현재 레이블 시드에 연결되는 후임자 시드를 생성하고, 상기 미리 설정된 값만큼 증가된 후임자 시드의 발생빈도를 빈도필드에 저장하는 단계를 더 수행할 수 있다.
상기 제1 주소 필드와 상기 부모 노드 시드의 주소가 동일한 경우, 미리 설 정된 값만큼 증가된 부모 노드 시드의 발생빈도를 빈도필드에 저장하는 단계를 더 수행할 수 있다.
본 발명의 다른 측면에 따르면, 계층적 트리 구조로 저장된 데이터들을 링크드리스트 구조로 변경하여 최대빈번한 서브트리를 보다 효과적으로 추출할 수 있는 디지털 처리 장치가 제공된다.
본 발명의 일 실시예에 따르면, 하나 이상의 트리(tree)들이 저장된 저장부; 상기 트리들을 이용하여 링크드리스트 구조를 생성하는 리스트 생성부; 미리 설정된 최소지지도값 및 총 트리 개수를 이용하여 최소 트리 개수를 산출하여 상기 최소 트리 개수 미만인 엘리먼트를 갖는 리스트를 제거하여 정제된 리스트 구조를 생성하는 리스트 정제부; 및 상기 정제된 리스트 구조에서 각각의 리스트에 저장된 레이블에 대응하는 시드(seed)를 생성하고, 상기 시드 및 상기 저장된 레이블을 이용하여 레이블 헤더 테이블을 생성하며, 상기 시드 및 상기 레이블 헤더 테이블을 이용하여 시드 트리를 생성하고, 생성된 시드 트리에 대해 프루닝(pruning)을 수행하여 최대빈번 서브트리를 추출하는 최대빈번 서브트리 추출부를 포함하는 디지털 처리 장치가 제공될 수 있다.
상기 리스트 정제부는 상기 링크드리스트 구조에서 각 리스트에 포함된 엘리먼트의 수가 상기 최소 트리 개수 미만인 리스트를 상기 제거 대상 리스트로 추출하여 해쉬 테이블을 생성하며, 상기 링크드리스트 구조에서 상기 제거 대상 리스트를 제거하여 여과된 리스트 구조를 생성할 수 있다.
상기 리스트 정제부는 상기 여과된 리스트 구조에서 각 리스트에 저장된 레이블에 상응하는 부모 노드 ID의 레이블이 상기 해쉬 테이블에 포함되는 경우, 상기 부모 노드 ID의 조상 노드들을 탐색하여 상기 조상 노드들이 상기 해쉬 테이블에 포함되지 않는 조상 노드가 존재하는 경우, 상기 부모 노드 ID를 상기 조상 노드 ID로 변경하여 상기 정제된 리스트 구조를 생성할 수 있다.
상기 조상 노드들이 상기 해쉬 테이블에 포함되지 않는 조상 노드가 존재하지 않는 경우, 상기 부모 노드 ID를 미리 설정된 널값으로 변경하여 상기 정제된 리스트 구조를 생성할 수 있다.
상기 최대빈번 서브트리 추출부는 상기 정제된 리스트 구조에서 각 리스트에 저장된 레이블에 상응하는 부모 노드 ID에 할당된 레이블에 매핑된 부모 노드 시드를 설정하고, 상기 정제된 리스트 구조에서 각 리스트에 저장된 레이블에 매핑된 현재 레이블 시드의 제1 주소 필드가 미리 설정된 널값인지 여부를 판단하여 널값인 경우, 상기 부모 노드 시드의 주소를 상기 현재 레이블 시드의 제1 주소 필드에 저장하며, 미리 설정된 값만큼 증가된 발생빈도를 상기 현재 레이블 시드의 빈도필드에 저장할 수 있다.
상기 최대빈번 서브트리 추출부는 현재 레이블 시드의 제1 주소 필드가 미리 설정된 널값인지 여부를 판단하여 널값이 아닌 경우, 상기 현재 레이블 시드의 상기 제1 주소 필드에 저장된 주소와 상기 부모 노드 시드의 주소가 동일한지 여부를 판단하여 동일하지 않으면 상기 현재 레이블 시드에 연결되는 후임자 시드를 생성하고, 미리 설정된 값만큼 증가된 발생빈도를 상기 후임자 시드의 빈도필드에 저장 할 수 있다.
상기 최대빈번 서브트리 추출부는 상기 현재 레이블 시드의 상기 제1 주소 필드와 상기 부모 노드 시드의 주소가 동일한 경우, 미리 설정된 값만큼 증가된 발생빈도를 상기 부모 노드 시드의 빈도필드에 저장할 수 있다.
상기 최대빈번 서브트리 추출부는 상기 시드 트리에서 상기 부모 노드 시드의 발생빈도가 상기 최소 트리 개수 이상인 시드들을 최대빈번 서브트리로써 추출할 수 있다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 이하, 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다. 또한, 본 발명을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
도 1은 본 발명의 일 실시예에 따른 최대빈번 서브트리를 추출할 수 있는 장 치의 블록 구성도이며, 도 2는 본 발명의 일 실시예에 따른 트리 구조를 예시한 도면이고, 도 3은 본 발명의 일 실시예에 따른 트리 구조를 이용하여 생성한 링크드리스트 구조를 예시한 도면이며, 도 4는 본 발명의 일 실시예에 따른 생성된 링크드리스트 구조에서 빈번하지 않은 레이블을 제거하는 정제 과정을 나타난 순서도이고, 도 5는 본 발명의 일 실시예에 따른 빈번하지 않은 레이블을 이용하여 생성한 해쉬 테이블을 예시한 도면이며, 도 6은 본 발명의 일 실시예에 따른 빈번하지 않은 레이블이 저장된 리스트를 제거한 여과된 리스트를 예시한 도면이고, 도 7은 본 발명의 일 실시예에 따른 정제된 리스트를 예시한 도면이며, 도 8은 본 발명의 일 실시예에 따른 시드 트리 생성 과정을 나타낸 순서도이고, 도 9는 본 발명의 일 실시예에 따른 시드 및 레이블 헤더 테이블을 예시한 도면이며, 도 10은 본 발명의 일 실시예에 따른 생성된 시드 트리를 예시한 도면이고, 도 12은 본 발명의 일 실시예에 따른 시드 트리에서 프루닝에 의해 도출된 최대빈번 서브트리를 예시한 도면이다.
도 1을 참조하면, 본 발명에 따른 최대빈번 서브트리를 추출할 수 있는 장치(100)는 저장부(110), 리스트 생성부(120), 리스트 정제부(130) 및 최대빈번 서브트리 추출부(140)를 포함한다. 여기서, 본 발명에 따른 최대빈번 서브트리를 추출할 수 있는 장치(100)는 저장된 트리 구조를 리스트 구조로 변환하여 최대빈번 서브트리를 추출할 수 있는 명령어들의 프로그램을 실행할 수 있는 컴퓨터와 같은 디지털 처리 장치이면 모두 동일하게 적용될 수 있다. 이하에서는 해당 장치(100)가 컴퓨터인 것을 가정하여 설명하기로 한다.
우선, 이해와 설명의 편의를 위해, 본 명세서에서 사용되는 용어들에 대해 정의하기로 한다.
레이블트리(labeled tree)는 트리의 모든 노드가 각각 하나의 레이블과 연계되어 있는 트리를 지칭하며, 순서트리(ordered tree)는 임의의 노드(u)의 자식노드들 사이의 탐색 순서가 좌측에서 우측 순으로 정해져 있는 트리를 지칭하고, 비순서트리(unordered tree)는 임의의 노드(u)의 자식노드들 사이에 탐색 순서가 정해져 있지 않은 트리를 지칭한다.
또한, 본 명세서에서 트리(T)는 다음과 같이 표현된다.
T=(r, N, E, L), 여기서, r은 루트노드, N은 트리의 전체 노드의 집합, E는 간선들의 집합, L은 레이블을 할당하는 레이블 함수를 의미하며, 하나의 트리는 4개의 속성을 갖는다.
또한, 서브트리(subtree)는 제1 트리(T1)와 제2 트리(T2)가 주어졌을 때, 제1 트리(T1)는 (r, N, E, L)의 속성을 갖으며, 제2 트리(T2)는 (rs, Ns, Es, L s )의 속성을 갖는다고 가정하자. 이때, 다음의 4가지 조건을 만족하는 경우, 제2 트리(T2)는 제1 트리(T1)의 서브트리일 수 있다.
첫번째 Ns가 N에 포함되며, 두번째는 Es에 속하는 모든 간선을 구성하고 있는 모든 (u, v)쌍에 대해 제2 트리에서는 v의 부모노드인 u가 제1 트리(T1)에서는 조상노드로 위치하고, 세번째 Ns에 속하는 임의의 노드 v에 대해서 L s (v)=L(v)가 성 립하며 네번째 만일 제1 트리(T1)과 제2 트리(T2)가 순서트리인 경우 Ns에 속하는 임의의 노드 v 1 , v 2 에 대해서 제1 트리(T1)에서 v 1 v 2 보다 좌측에 위치하는 경우 제2 트리(T2)에서도 v 1 v 2 보다 좌측에 위치한다. 이와 같은 4가지 조건을 모두 만족하는 경우 제2 트리(T2)를 제1 트리(T1)의 서브트리라 지칭한다.
빈번도(frequency)는 집합 D와 트리 S가 주어졌을 때 트리 S의 빈번도(freqD(S))는 집합 D에 있는 트리들 중에서 트리 S를 서브트리로 하는 트리들의 개수를 나타낸다. 빈번도는 예를 들어, 하기 수학식 1을 이용하여 산출된다.
Figure 112007040938678-pat00001
여기서, 트리 S가 트리 Ti의 서브트리라면, 빈번도(freqTi(S))의 값은 "1"이 되고, 트리 S가 트리 Ti의 서브트리가 아니라면 빈번도((freqTi(S))의 값은 "0"이 된다.
또한, 지지도(support)는 집합 D에 대한 트리 S의 지지도는 supD(S)로 표기하며, 이는 집합 D에 있는 총 트리 개수 |D| 중에서 트리 S를 서브트리로 포함하고 있는 트리 수의 비율을 나타낸다. 즉, supD(S)=freqD(S)/|D|에 의해 계산되며, '0'과 '1'사이의 실수값을 갖는다.
빈번 서브트리(frequent subtree)는 미리 설정된 최소지지도
Figure 112007040938678-pat00002
값을 이용하 여 산출되는 최소트리의 개수 이상의 트리에서 서브트리로 존재하는 모든 트리들을 칭한다.
또한, 최대빈번 서브트리(miximal frequent subtree)는 미리 설정된 최소지지도
Figure 112007040938678-pat00003
에 상응하여 다수의 트리에 대한 트리 S의 지지도(supD(S))가
Figure 112007040938678-pat00004
이상이고, 트리 S를 서브트리로 포함하면서도 지지도가 최소지지도 이상인 다른 서브트리가 존재하지 않으면, 트리 S를 최대빈번 서브트리라 칭한다.
도 1을 참조하면, 저장부(110)는 하나 이상의 트리 구조가 저장된다.
리스트 생성부(120)는 저장부(110)에 저장된 하나 이상의 트리들을 미리 정해진 방법에 의해 링크드리스트 구조로 변경하는 기능을 수행한다.
도 3을 참조하면, 각각의 리스트는 헤더 부분(301)과 바디 부분(303)으로 구분된다. 헤더 부분(301)은 트리들에서 각 레이블과 해당 레이블을 사용하고 있는 노드 ID들에 대한 정보가 저장된다. 따라서, 임의의 레이블이 입력되면, 해쉬값(hash value)을 이용하여 해당 레이블에 대한 리스트 검색이 가능하다.
각각의 리스트의 헤더 부분(301)은 레이블 필드, 노드 필드 및 주소 필드를 포함한다. 레이블 필드는 현재 리스트를 구성하는 기준이 되는 레이블이 저장되는 필드이고, 노드 필드는 각각의 트리에 현재 레이블이 할당된 노드 ID들을 저장하는 필드이며, 주소 필드는 현재 리스트의 헤더 부분(301)에 저장된 노드 ID들의 트리 정보를 저장하고 있는 리스트의 바디 부분(303)의 시작 주소를 가르키는 포인터가 저장되는 필드이다.
예를 들어, 도 3의 310을 참조하면, 헤더 부분(301a)의 레이블 필드에 레이블 A가 저장되며, 레이블 A는 도 2를 참조하면, 제1 트리(T1)에만 할당되어 있으므로, 노드 필드에는 제1 트리(T1)의 레이블 A가 할당된 노드 ID-즉, "1"-가 노드 필드에 저장된다. 그리고, 주소 필드는 해당 레이블 A에 상응하는 노드 ID 들의 트리 정보가 저장되는 바디 부분의 시작 주소를 지시하는 포인터가 저장된다.
바디 부분(303)는 각 리스트의 헤더 부분9301)에 저장된 레이블이 할당된 노드 ID를 포함하는 트리 정보를 저장하는 하나 이상의 엘리먼트를 포함한다. 이하, 본 명세서에서는 이해와 설명의 편의를 도모하기 위해, 바디 부분(303)에 포함된 하나 이상의 리스트를 "엘리먼트"라 칭하기로 한다.
각 엘리먼트는 현 레이블이 할당된 노드 ID를 포함하는 트리 정보가 저장된다. 도 3에 예시된 바와 같이, 각각의 엘리먼트는 현 레이블이 할당된 노드의 부모 노드에 대한 정보를 저장하기 위한 제1 필드, 현 레이블이 할당된 노드가 위치한 트리 정보를 저장하기 위한 제2 필드 및 다음 엘리먼트의 시작 위치를 지시하기 위한 포인터가 저장되는 제3 필드를 포함한다.
예를 들어, 도 2를 참조하면, 레이블 C의 경우, 제1 트리, 제2 트리 및 제3 트리에 모두 할당되어 있으므로 레이블 C에 상응하는 엘리먼트는 총 3개가 생성됨을 알 수 있다. 따라서, 각 리스트의 바디 부분에 포함된 엘리먼트의 수는 해당 바디 부분에 상응하는 헤더 부분에 저장된 레이블이 할당된 전체 트리의 개수와 동일하며, 본 명세서에서는 이를 "리스트 크기"라 칭하며, |Ntllabel|로 표기하기로 한 다. 즉, 도 3을 참조하면, 레이블 A의 리스트 크기(|NtlA|)는 "1"이고, 다른 레이블들의 리스트 크기는 모두 "3"이 된다.
리스트 정제부(130)는 리스트 생성부(120)에 의해 생성된 링크드리스트 구조에서 미리 정해진 방법에 의해 빈번하지 않은 리스트를 제거하고 정제하는 기능을 수행한다. 이하, 본 명세서에서 "빈번하지 않다"는 표현은 최소트리 개수 미만의 트리들에 포함되어 있다는 것을 의미한다. 즉, 빈번하지 않은 리스트는 해당 리스트에 저장된 레이블이 최소트리 개수 미만의 트리들에 포함되어 있다는 것을 의미한다.
또한 "빈번하다"라는 표현은 최소트리 개수 이상의 트리들에 포함된다는 것을 의미한다.
또한, "빈번하지 않은 리스트"는 해당 리스트에 저장된 레이블이 할당된 노드들이 최소트리 개수 미만의 트리들만 포함된다는 것을 의미하는 표현으로 이해되어야 할 것이다.
우선, 도 4를 참조하여 리스트 정제부(130)가 빈번하지 않은 리스트를 제거하고 정제하는 과정에 대해 상세히 설명하기로 한다.
단계 410에서 리스트 정제부(130)는 미리 설정된 최소 지지도 값과 총 트리 개수를 이용하여 최소트리 개수를 산출한다. 여기서, 최소 지지도 값은 외부로부터 입력되는 값이며, 사용자에 의해 임의로 설정될 수도 있다.
예를 들어, 최소트리 개수는 하기 수학식2를 이용하여 산출된다.
Figure 112007040938678-pat00005
최소트리 개수=INT(최소지지도() X 총 트리 개수(|D|))
예를 들어, 최소 지지도 값이 2/3인 경우, 도 2와 같이 총 트리 개수가 3개이면, 최소트리 개수는 2가 된다. 최소트리 개수는 임의의 레이블이 빈번 서브트리로 추출되기 위해 해당 레이블이 포함되어야 하는 최소한의 트리의 개수를 의미한다. 따라서, 최소트리 개수가 2인 경우, 각각의 레이블은 2개 이상의 트리에 포함되어 있는 경우 빈번한 것으로 판단될 수 있다.
단계 415에서 리스트 정제부(130)는 산출된 최소트리 개수와 리스트 크기(|Ntllabel|)를 이용하여 빈번하지 않은 레이블이 포함된 리스트를 제거하여 해쉬 테이블을 생성한다. 즉, 리스트 정제부(130)는 링크드리스트 구조에서 최소트리 개수보다 작은 리스트 크기를 갖는 리스트를 추출하여 해쉬 테이블을 생성한다.
예를 들어, 리스트 정제부(130)는 최소트리 개수가 2이므로, 도 3에 예시된 링크드리스트 구조에서 각각의 리스트의 리스트 크기를 비교하여 리스트 크기가 최소트리 개수 미만인 리스트를 추출한다. 도 3의 예시에서는 레이블 A가 저장된 리스트의 리스트 크기가 "1"이므로 빈번하지 않은 레이블이 포함된 리스트로서 추출된다. 그리고, 리스트 정제부(130)는 레이블 A가 저장된 리스트를 이용하여 도 5에 예시된 해쉬 테이블을 생성한다.
이해의 편의를 도모하기 위해, 도 5를 참조하여 해쉬 테이블에 대해 간략하게 설명하기로 한다.
해쉬 테이블은 키필드, 키에 해당하는 값이 저장되는 값필드 및 키와 값을 연결해주는 인덱스가 저장되는 인덱스 필드로 구성된다. 여기서, 키필드는 레이블 그룹이 저장된다. 그리고, 값필드는 해당 키필드에 저장된 레이블 그룹의 레이블이 할당된 노드의 부모 노드 ID가 저장되는 제 4필드와 해당 레이블이 할당된 노드를 포함하는 트리 ID가 저장되는 제5 필드로 구성된다. 따라서, 키필드는 리스트의 바디 부분에 포함된 엘리먼트의 제1 필드와 제2 필드와 동일하게 구성됨을 알 수 있다. 또한, 인덱스 필드는 리스트의 레이블이 저장된다.
예를 들어, 레이블 A에 해당하는 리스트를 이용하여 리스트 정제부(130)는 키필드에 레이블 그룹을 저장한다. 본 명세서에서 레이블 그룹은 glable로 표기하기로 한다. 그리고, 리스트 정제부(130)는 레이블 함수를 해쉬 함수로 하여 해당 레이블 그룹 gA에 상응하는 레이블을 인덱스 필드에 저장한다. 해쉬 함수는 키마다 다른 인덱스가 주어지도록 계산하여 키간 충돌이 발생되지 않도록 해야 한다.
즉, 리스트 정제부(130)는 인덱스 필드에 추출된 리스트에 저장된 레이블을 저장한다. 그리고, 리스트 정제부(130)는 키와 인덱스가 연결되도록 값필드에는 추출된 리스트의 바디 부분에 포함된 엘리먼트를 이용하여 키필드의 필드값들을 저장한다.
예를 들어, 레이블 A의 경우 리스트 정제부(130)는 엘리먼트의 부모 노드 ID가 저장된 제1 필드의 값을 추출하여 제4 필드에 저장하고, 해당 레이블 A가 할당된 노드를 포함하는 트리 ID가 저장된 제2 필드값을 추출하여 제5 필드에 저장한 다.
따라서, 도 5를 참조하면, 레이블 A에 상응하는 해쉬 테이블의 인덱스필드에는 "A"가 저장되며, 값필드의 제4 필드에는 부모 노드 ID인 "0"가 저장되고, 제5 필드에는 트리 ID인 "T1"이 저장된다.
도 6에 리스트 정제부(130)가 빈번하지 않은 레이블 A가 저장된 리스트를 제거한 것이 예시되어 있다. 이해와 설명의 편의를 도모하기 위해 도 6과 같이 빈번하지 않은 레이블에 상응하는 리스트가 제거된 링크드리스트 구조를 "여과된 리스트"라 칭하기로 한다.
다시 도 4를 참조하면, 단계 420에서 리스트 정제부(130)는 해쉬 테이블을 이용하여 여과된 리스트의 엘리먼트에 있는 부모 노드들이 빈번하지 않은 레이블을 갖는지 여부를 판단한다. 여기서, 부모 노드는 엘리먼트의 제1 필드에 저장된 부모 노드 ID를 지칭한다.
만일, 임의의 엘리먼트의 부모 노드가 빈번하지 않은 레이블을 갖는 경우(즉, 해당 부모 노드의 레이블이 해쉬 테이블의 인덱스 필드에서 검출되는 경우), 단계 425에서 리스트 정제부(130)는 당해 엘리먼트의 부모 노드 ID를 널값(Null)(예를 들어, "0")으로 설정한다. 여과된 리스트에서 각 엘리먼트의 부모 노드들이 빈번하지 않은 레이블을 갖는 경우, 해당 부모 노드 ID를 널값으로 변경한 리스트(이하, 이해와 설명의 편의를 위해 "정제된 리스트"라 칭하기로 함)가 도 7에 예시되어 있다. 여기서, 단계 415 내지 단계 420은 엘리먼트에 있는 모든 부모 노드들이 빈번하지 않은 레이블을 갖지 않도록 반복 수행된다.
도 7에 예시된 더미 리스트는 리스트 정제부(130)가 루트 노드를 지시하기 위해 임의로 생성한 리스트("루트 리스트"라 칭함)로, 해당 루트 리스트는 생성할 수도 있으며, 생성하지 않을 수도 있다.
최대빈번 서브트리 추출부(140)는 리스트 정제부(130)에 의해 여과 및 정제된 리스트를 이용하여 미리 정해진 방법에 의해 최대빈번 서브트리를 추출하는 기능을 수행한다.
도 8을 참조하여 최대빈번 서브트리 추출부(140)가 리스트 정제부(130)에 의해 정제된 리스트에서 최대빈번 서브트리를 추출하는 과정에 대해 상세히 설명하기로 한다.
단계 810에서 최대빈번 서브트리 추출부(140)는 정제된 리스트에서 각 리스트들의 레이브들에 대응하는 노드(이하, 이해와 설명의 편의를 도모하기 위해 "시드(seed)"라 칭하기로 함)를 생성한다.
여기서, 각 시드는 자신의 부모 시드를 지시하기 위한 주소가 저장되는 제1 주소 필드, 다른 시드나 후임자(successor)의 부모가 되는 발생빈도가 저장되는 빈도필드 및 자신의 후임자 노드를 지시하기 위한 주소가 저장되는 제2 주소 필드를 포함한다.
단계 815에서 최대빈번 서브트리 추출부(140)는 생성된 시드에 정제된 리스트의 각 레이블을 연결하여 레이블 헤더 테이블(LHT: lable header table)을 생성한다.
레이블 헤더 테이블은 도 9에 예시된 바와 같이, 정제된 리스트의 헤더 부분에 저장된 각 리스트의 레이블과 이 레이블을 할당받아 생성된 시드의 주소가 하나의 레코드로 구성된다. 초기 시드는 자식 노드를 포함하지 않으므로 발생빈도가 0이며, 부모 시드나 후임자 시드 또는 존재하지 않기 때문에 널값(Null)으로 설정된다.
단계 820에서 최대빈번 서브트리 추출부(140)는 현재 노드의 부모 노드 ID에 할당된 레이블을 획득한 후 레이블 헤더 테이블에서 해당 레이블에 매핑된 시드(이해, 이해와 설명의 편의를 위해 "부모 노드 시드"라 칭하기로 함)를 찾는다.
단계 825에서 최대빈번 서브트리 추출부(140)는 현 레이블 시드의 제1 주소 필드가 널값인지 여부를 판단한다.
만일 현 레이블 시드의 제1 주소 필드가 널값이면, 단계 830에서 최대빈번 서브트리 추출부(140)는 현 레이블 시드의 제1 주소 필드에 단계 820에서 찾은 부모 노드 시드의 주소를 저장한다.
그러나 만일 현 레이블 시드의 제1 주소 필드가 널값이 아닌 경우, 단계 835에서 최대빈번 서브트리 추출부(140)는 현 레이블 시드의 제1 주소 필드에 저장된 주소와 부모 노드 시드의 주소값이 동일한지 여부를 판단한다.
만일 동일한 경우 단계 840에서 최대빈번 서브트리 추출부(140)는 부모 노드 시드의 빈도필드에 저장된 발생 빈도를 1회 증가시킨다.
그러나 만일 동일하지 않은 경우, 단계 845에서 최대빈번 서브트리 추출부(140)는 현 레이블 시드가 하나 이상의 다른 시드에 의해 공유되고 있는 것을 의 미하므로 후임자 시드를 생성한다. 여기서, 후임자 시드를 현 레이블의 시드와 동일한 구조나 반드시 현 레이블 시드의 뒤에 위치된다. 즉, 새로 추가되는 후임자는 체인의 가장 끝에 위치된다.
단계 850에서 최대빈번 서브트리 추출부(140)는 현 레이블 시드와 연결된 후임자 시드의 빈도필드에 저장된 발생 빈도를 1회 증가시켜 저장한다.
여기서, 단계 820 내지 단계 850의 과정은 정제된 리스트의 모든 레이블의 노드에 대해 시드간 또는 시드/후임자 시드간의 연결을 설정할때까지 반복 수행한다.
이하, 이해와 설명의 편의를 위해, 이와 같이 시드간 또는 시드/후임자 시드간의 연결이 형성된 체인을 "시드 트리"라 칭하기로 한다. 도 10에 시드간 또는 시드/ 후임자 시드간의 연결이 형성된 체인인 시드 트리가 예시되어 있다.
단계 855에서 최대빈번 서브트리 추출부(140)는 시드 트리에서 현 레이블 시드의 부모 노드 시드의 발생빈도가 최소지지도값보다 작은 경우 현 레이블 시드의 부모 레이블로써 발생하는 빈도가 적다는 것을 의미하므로 해당 부모 노드 시드의 자식 시드 또는 후임자 시드를 시드 트리에서 프루닝(pruning)하여 최대빈번 서브트리를 추출한다.
도 12를 참조하면, 이와 같이 현 레이블 시드의 부모 노드 시드의 발생빈도가 최소지지도(2/3)보다 작은 간선 또는 해당 부모 노드 시드의 자식 노드 및 후임자 시드를 프루닝하여 최대빈번 서브트리를 도출한 시드 트리가 예시되어 있다.
도 11은 본 발명의 일 실시예에 따른 계층적 트리 구조를 링크드리스트 구조로 변환하여 최대빈번 서브트리를 추출하는 과정을 나타낸 순서도이다. 이하에서는 하나 이상의 트리가 생성되어 저장된 것을 가정하며, 이후 본 발명에 따른 링크드리스트 구조로 변환하는 과정부터 설명하기로 한다. 이하에서는 각각의 단계를 수행하는 주체가 최대빈번 서브트리를 추출하는 장치가 컴퓨터인 것을 가정하여 설명하기로 한다.
단계 1110에서 서브트리 추출 장치(100)는 생성된 트리 구조를 미리 정해진 방법에 따라 링크드리스트 구조로 변경한다. 당해 서브트리 추출 장치(100)가 트리 구조를 링크드리스트 구조로 변경한 것이 도 3에 예시되어 있다.
단계 1115에서 서브트리 추출 장치(100)는 링크드리스트 구조에서 빈번하지 않은 레이블을 제거하여 정제된 리스트를 생성한다. 여기서, 서브트리 추출 장치(100)는 빈번하지 않은 레이블을 이용하여 해쉬 테이블을 생성한다. 여기서, 링크드리스트 구조에서 정제된 리스트를 생성하는 과정은 도 4에서 설명한 바와 동일하므로 중복되는 설명은 생략하기로 한다.
단계 1120에서 서브트리 추출 장치(100)는 정제된 리스트에서 미리 정해진 방법을 이용하여 시드트리를 생성한다. 여기서, 시드트리를 생성하는 과정은 도 8을 이용하여 설명한 바와 동일하므로 중복되는 과정은 생략하기로 한다.
단계 1125에서 서브트리 추출 장치(100)는 생성된 시드트리에서 최소지지도값 미만의 발생빈도를 갖는 부모 노드 시드의 자식 시드 및 후임자 시드를 제거하여 최대빈번 서브트리를 추출한다.
상술한 바와 같이, 본 발명에 따른 최대빈번 서브트리 추출 방법 및 장치를 제공함으로써, 계층적 트리 구조를 링크드리스트 구조로 변경하여 효율적으로 최대빈번 서브트리를 추출할 수 있는 효과가 있다.
또한, 본 발명은 대량의 트리 데이터로부터 빈번하게 발생하는 정보를 추출하기 위해 특화된 데이터 구조를 이용함으로써 자원 점유가 심한 트리 조인 연산의 수행없이 최대빈번 서브트리를 추출할 수 있는 효과도 있다.
또한, 본 발명은 트리 구조와는 달리 중복 저장을 허용하지 않음으로써 보다 저장 매체를 효율적으로 이용할 수 있는 최대빈번 서브트리를 추출할 수 있는 효과도 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야에서 통상의 지식을 가진 자라면 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.

Claims (31)

  1. 트리(tree)들에서 최대빈번 서브트리를 추출하는 방법에 있어서,
    미리 저장된 트리들을 이용하여 링크드리스트 구조를 생성하는 단계;
    미리 설정된 최소지지도값 및 총 트리 개수를 이용하여 최소 트리 개수를 산출하여 상기 최소 트리 개수 미만인 엘리먼트를 갖는 리스트를 제거하여 정제된 리스트 구조를 생성하는 단계;
    상기 정제된 리스트 구조에서 각각의 리스트에 저장된 레이블에 대응하는 시드(seed)를 생성하고, 상기 생성된 시드의 주소값 및 상기 저장된 레이블을 매핑하여 레이블 헤더 테이블을 생성하는 단계; 및
    상기 시드 및 상기 레이블 헤더 테이블을 이용하여 시드 트리를 생성하고, 생성된 시드 트리에 대해 프루닝(pruning)을 수행하여 최대빈번 서브트리를 추출하는 단계를 포함하되,
    상기 시드는 상기 시드에 대응되는 레이블이 할당된 노드의 부모 노드를 지시하는 주소가 저장되는 제1 주소 필드, 발생빈도가 저장되는 빈도필드 및 후임자 시드의 주소가 저장되는 제2 주소 필드를 포함하는 것을 특징으로 하는 최대빈번 서브트리 추출 방법.
  2. 제 1항에 있어서,
    상기 링크드리스트 구조는 헤더 부분과 바디 부분을 포함하되,
    상기 헤더 부분은 트리의 레이블이 저장되는 레이블 필드 및 해당 레이블이 할당된 노드 ID가 저장되는 노드 필드를 포함하며,
    상기 바디 부분은 부모 노드 필드 및 트리 필드가 포함된 엘리먼트들을 포함 하고,
    상기 부모 노드 필드는 상기 노드 ID의 부모 노드 ID를 저장하며, 상기 트리 필드는 상기 노드 ID를 포함하는 트리 ID를 저장하는 것을 특징으로 하는 최대빈번 서브트리 추출 방법.
  3. 삭제
  4. 제 1항에 있어서,
    상기 정제된 리스트 구조를 생성하는 단계는,
    상기 최소지지도값과 미리 설정된 총 트리 개수를 이용하여 최소 트리 개수를 산출하는 단계;
    상기 링크드리스트 구조에서 각 리스트에 포함된 엘리먼트의 수가 상기 최소 트리 개수 미만인 제거 대상 리스트를 추출하여 해쉬 테이블을 생성하는 단계;
    상기 링크드리스트 구조에서 상기 제거 대상 리스트를 제거하여 여과된 리스트 구조를 생성하는 단계;
    상기 여과된 리스트에서 저장된 레이블에 상응하는 부모 노드 ID들의 레이블이 상기 해쉬 테이블에 포함되는지 여부를 판단하는 단계; 및
    상기 해쉬 테이블에 포함되는 경우, 상기 부모 노드 ID의 조상 노드들을 탐색하여 상기 해쉬 테이블에 포함되지 않은 조상 노드가 존재하는 경우, 상기 부모 노드 ID를 조상 노드 ID로 변경하여 상기 정제된 리스트 구조를 생성하는 단계를 포함하는 것을 특징으로 하는 최대빈번 서브트리 추출 방법.
  5. 제 4항에 있어서,
    상기 부모 노드 ID의 조상 노드들을 탐색한 결과 상기 부모 노드 ID의 모든 조상 노드들이 상기 해쉬 테이블에 포함되는 경우, 미리 설정된 널값으로 변경하여 상기 정제된 리스트 구조를 생성하는 단계를 더 포함하는 것을 특징으로 하는 최대빈번 서브트리 추출 방법.
  6. 제 4항에 있어서,
    상기 해쉬 테이블은 키필드, 값필드 및 인덱스 필드를 포함하되,
    상기 키필드에는 상기 제거 대상 리스트들의 레이블 그룹에 대한 정보가 저 장되고,
    상기 인덱스 필드에는 상기 제거 대상 리스트에 저장된 레이블이 저장되며,
    상기 값필드에는 상기 저장된 레이블이 할당된 노드의 부모 노드 ID가 저장되는 제1 필드 및 상기 부모 노드 ID를 포함하는 트리 ID가 저장되는 제2 필드를 포함하는 것을 특징으로 하는 최대빈번 서브트리 추출 방법.
  7. 제 1항에 있어서,
    상기 시드 및 상기 레이블 헤더 테이블을 이용하여 시드 트리를 생성하는 단계는,
    상기 정제된 리스트에 저장된 레이블에 상응하는 부모 노드 ID에 해당하는 레이블에 연결된 부모 노드 시드를 설정하는 단계;
    상기 저장된 레이블에 연결된 현재 레이블 시드의 제1 주소 필드가 미리 설정된 널값인지 여부를 판단하는 단계; 및
    상기 제1 주소 필드가 상기 미리 설정된 널값인 경우, 상기 부모 노드 시드의 주소를 상기 현재 레이블 시드의 상기 제1 주소 필드에 저장하고, 미리 설정된 값만큼 증가된 발생빈도를 상기 빈도필드에 저장하는 단계를 포함하는 것을 특징으로 하는 최대빈번 서브트리 추출 방법.
  8. 제 7항에 있어서,
    상기 제1 주소 필드가 상기 미리 설정된 널값이 아닌 경우, 상기 현재 레이블 시드의 상기 제1 주소 필드와 상기 부모 노드 시드의 주소가 동일한지 여부를 판단하는 단계; 및
    상기 제1 주소 필드와 상기 부모 노드 시드의 주소가 동일하지 않은 경우, 상기 현재 레이블 시드에 연결되는 후임자 시드를 생성하고, 상기 미리 설정된 값만큼 증가된 후임자 시드의 발생빈도를 빈도필드에 저장하는 단계를 더 포함하는 것을 특징으로 하는 최대빈번 서브트리 추출 방법.
  9. 제 8항에 있어서,
    상기 제1 주소 필드와 상기 부모 노드 시드의 주소가 동일한 경우,
    미리 설정된 값만큼 증가된 부모 노드 시드의 발생빈도를 빈도필드에 저장하는 단계를 더 포함하는 것을 특징으로 하는 최대빈번 서브트리 추출 방법.
  10. 제 9항에 있어서,
    상기 프루닝의 수행은 상기 시드 트리에 저장되어 있는 시드들 중 상기 부모 노드 시드의 발생빈도가 상기 최소지지도값 이상인 시드들만 추출하는 과정인 것을 특징으로 하는 서브트리 추출 방법.
  11. 하나 이상의 트리(tree)들이 저장된 저장부;
    상기 트리들을 이용하여 링크드리스트 구조를 생성하는 리스트 생성부;
    미리 설정된 최소지지도값 및 총 트리 개수를 이용하여 최소 트리 개수를 산출하여 상기 최소 트리 개수 미만인 엘리먼트를 갖는 리스트를 제거하여 정제된 리스트 구조를 생성하는 리스트 정제부; 및
    상기 정제된 리스트 구조에서 각각의 리스트에 저장된 레이블에 대응하는 시드(seed)를 생성하고, 상기 시드 및 상기 저장된 레이블을 이용하여 레이블 헤더 테이블을 생성하며, 상기 시드 및 상기 레이블 헤더 테이블을 이용하여 시드 트리를 생성하고, 생성된 시드 트리에 대해 프루닝(pruning)을 수행하여 최대빈번 서브트리를 추출하는 최대빈번 서브트리 추출부를 포함하되,
    상기 시드는 상기 시드에 대응되는 레이블이 할당된 노드의 부모 노드를 지시하는 주소가 저장되는 제1 주소 필드, 발생빈도가 저장되는 빈도필드 및 후임자 시드의 주소가 저장되는 제2 주소 필드를 포함하는 것을 특징으로 하는 디지털 처리 장치.
  12. 제 11항에 있어서,
    상기 링크드리스트 구조는 헤더 부분과 바디 부분을 포함하되,
    상기 헤더 부분은 트리의 레이블이 저장되는 레이블 필드 및 해당 레이블이 할당된 노드 ID가 저장되는 노드 필드를 포함하며,
    상기 바디 부분은 부모 노드 필드 및 트리 필드가 포함된 엘리먼트들을 포함하고,
    상기 부모 노드 필드는 상기 노드 ID의 부모 노드 ID를 저장하며, 상기 트리 필드는 상기 노드 ID를 포함하는 트리 ID를 저장하는 것을 특징으로 하는 디지털 처리 장치.
  13. 삭제
  14. 제 11항에 있어서,
    상기 리스트 정제부는 상기 링크드리스트 구조에서 각 리스트에 포함된 엘리먼트의 수가 상기 최소 트리 개수 미만인 리스트를 제거 대상 리스트로 추출하여 해쉬 테이블을 생성하며, 상기 링크드리스트 구조에서 상기 제거 대상 리스트를 제거하여 여과된 리스트 구조를 생성하는 것을 특징으로 하는 디지털 처리 장치.
  15. 제 14항에 있어서,
    상기 해쉬 테이블은 키필드, 값필드 및 인덱스 필드를 포함하되,
    상기 키필드에는 상기 제거 대상 리스트들의 레이블 그룹에 대한 정보가 저장되고,
    상기 인덱스 필드에는 상기 제거 대상 리스트에 저장된 레이블이 저장되며,
    상기 값필드에는 상기 저장된 레이블이 할당된 노드의 부모 노드 ID가 저장되는 제1 필드 및 상기 부모 노드 ID를 포함하는 트리 ID가 저장되는 제2 필드를 포함하는 것을 특징으로 하는 디지털 처리 장치.
  16. 제 14항에 있어서,
    상기 리스트 정제부는 상기 여과된 리스트 구조에서 각 리스트에 저장된 레이블에 상응하는 부모 노드 ID의 레이블이 상기 해쉬 테이블에 포함되는 경우, 상기 부모 노드 ID의 조상 노드들을 탐색하여 상기 조상 노드들이 상기 해쉬 테이블에 포함되지 않는 조상 노드가 존재하는 경우, 상기 부모 노드 ID를 조상 노드 ID로 변경하여 상기 정제된 리스트 구조를 생성하는 것을 특징으로 하는 디지털 처리 장치.
  17. 제 16항에 있어서,
    상기 조상 노드들이 상기 해쉬 테이블에 포함되지 않는 조상 노드가 존재하 지 않는 경우, 상기 부모 노드 ID를 미리 설정된 널값으로 변경하여 상기 정제된 리스트 구조를 생성하는 것을 특징으로 하는 디지털 처리 장치.
  18. 제 14항에 있어서,
    상기 최대빈번 서브트리 추출부는 상기 정제된 리스트 구조에서 각 리스트에 저장된 레이블에 상응하는 부모 노드 ID에 할당된 레이블에 매핑된 부모 노드 시드를 설정하고, 상기 정제된 리스트 구조에서 각 리스트에 저장된 레이블에 매핑된 현재 레이블 시드의 제1 주소 필드가 미리 설정된 널값인지 여부를 판단하여 널값인 경우, 상기 부모 노드 시드의 주소를 상기 현재 레이블 시드의 제1 주소 필드에 저장하며, 미리 설정된 값만큼 증가된 발생빈도를 상기 현재 레이블 시드의 빈도필드에 저장하는 것을 특징으로 하는 디지털 처리 장치.
  19. 제 17항에 있어서,
    상기 최대빈번 서브트리 추출부는 현재 레이블 시드의 제1 주소 필드가 미리 설정된 널값인지 여부를 판단하여 널값이 아닌 경우, 상기 현재 레이블 시드의 상기 제1 주소 필드에 저장된 주소와 상기 부모 노드 시드의 주소가 동일한지 여부를 판단하여 동일하지 않으면 상기 현재 레이블 시드에 연결되는 후임자 시드를 생성하고, 미리 설정된 값만큼 증가된 발생빈도를 상기 후임자 시드의 빈도필드에 저장 하는 것을 특징으로 하는 디지털 처리 장치.
  20. 제 19항에 있어서,
    상기 최대빈번 서브트리 추출부는 상기 현재 레이블 시드의 상기 제1 주소 필드와 상기 부모 노드 시드의 주소가 동일한 경우, 미리 설정된 값만큼 증가된 발생빈도를 상기 부모 노드 시드의 빈도필드에 저장하는 것을 특징으로 하는 디지털 처리 장치.
  21. 제 20항에 있어서,
    상기 최대빈번 서브트리 추출부는 상기 시드 트리에서 상기 부모 노드 시드의 발생빈도가 상기 최소 트리 개수 이상인 시드들을 최대빈번 서브트리로써 추출하는 것을 특징으로 하는 디지털 처리 장치.
  22. 최대빈번 서브트리를 추출하는 방법을 수행하기 위해 디지털 처리 장치에 의해 실행될 수 있는 명령어들의 프로그램이 유형적으로 구현되어 있으며, 상기 디지털 처리 장치에 의해 판독될 수 있는 프로그램을 기록한 기록매체에 있어서,
    미리 저장된 트리들을 이용하여 링크드리스트 구조를 생성하는 단계;
    미리 설정된 최소지지도값 및 총 트리 개수를 이용하여 최소 트리 개수를 산출하여 상기 최소 트리 개수 미만인 엘리먼트를 갖는 리스트를 제거하여 정제된 리스트 구조를 생성하는 단계;
    상기 정제된 리스트 구조에서 각각의 리스트에 저장된 레이블에 대응하는 시드(seed)를 생성하고, 상기 생성된 시드의 주소값과 상기 저장된 레이블이 하나의 레코드로써 매핑된 레이블 헤더 테이블을 생성하는 단계; 및
    상기 시드 및 상기 레이블 헤더 테이블을 이용하여 시드 트리를 생성하고, 생성된 시드 트리에 대해 프루닝(pruning)을 수행하여 최대빈번 서브트리를 추출하는 단계를 수행하는 프로그램을 기록한 기록 매체.
  23. 제 22항에 있어서,
    상기 링크드리스트 구조는 헤더 부분과 바디 부분을 포함하되,
    상기 헤더 부분은 트리의 레이블이 저장되는 레이블 필드 및 해당 레이블이 할당된 노드 ID가 저장되는 노드 필드를 포함하며,
    상기 바디 부분은 부모 노드 필드 및 트리 필드가 포함된 엘리먼트들을 포함하고,
    상기 부모 노드 필드는 상기 노드 ID의 부모 노드 ID를 저장하며, 상기 트리 필드는 상기 노드 ID를 포함하는 트리 ID를 저장하는 것을 특징으로 프로그램을 기록한 기록 매체.
  24. 제 22항에 있어서,
    상기 시드는 상기 시드에 대응되는 레이블이 할당된 노드의 부모 노드를 지시하는 주소가 저장되는 제1 주소 필드, 발생빈도가 저장되는 빈도필드 및 후임자 시드의 주소가 저장되는 제2 주소 필드를 포함하는 것을 특징으로 하는 프로그램을 기록한 기록 매체.
  25. 제 22항에 있어서,
    상기 정제된 리스트 구조를 생성하는 단계는,
    상기 최소지지도값과 미리 설정된 총 트리 개수를 이용하여 최소 트리 개수를 산출하는 단계;
    상기 링크드리스트 구조에서 각 리스트에 포함된 엘리먼트의 수가 상기 최소 트리 개수 미만인 제거 대상 리스트를 추출하여 해쉬 테이블을 생성하는 단계;
    상기 링크드리스트 구조에서 상기 제거 대상 리스트를 제거하여 여과된 리스트 구조를 생성하는 단계;
    상기 여과된 리스트에서 저장된 레이블에 상응하는 부모 노드 ID들의 레이블이 상기 해쉬 테이블에 포함되는지 여부를 판단하는 단계; 및
    상기 해쉬 테이블에 포함되는 경우, 상기 부모 노드 ID의 조상 노드들을 탐색하여 상기 해쉬 테이블에 포함되지 않은 조상 노드가 존재하는 경우, 상기 부모 노드 ID를 조상 노드 ID로 변경하여 상기 정제된 리스트 구조를 생성하는 단계를 수행하는 것을 특징으로 하는 프로그램을 기록한 기록 매체.
  26. 제 25항에 있어서,
    상기 부모 노드 ID의 조상 노드들을 탐색한 결과 상기 부모 노드 ID의 모든 조상 노드들이 상기 해쉬 테이블에 포함되는 경우, 미리 설정된 널값으로 변경하여 상기 정제된 리스트 구조를 생성하는 단계를 더 수행하는 것을 특징으로 하는 프로그램을 기록한 기록 매체.
  27. 제 25항에 있어서,
    상기 해쉬 테이블은 키필드, 값필드 및 인덱스 필드를 포함하되,
    상기 키필드에는 상기 제거 대상 리스트들의 레이블 그룹에 대한 정보가 저장되고,
    상기 인덱스 필드에는 상기 제거 대상 리스트에 저장된 레이블이 저장되며,
    상기 값필드에는 상기 저장된 레이블이 할당된 노드의 부모 노드 ID가 저장되는 제1 필드 및 상기 부모 노드 ID를 포함하는 트리 ID가 저장되는 제2 필드를 포함하는 것을 특징으로 하는 프로그램을 기록한 기록 매체.
  28. 제 24항에 있어서,
    상기 시드 및 상기 레이블 헤더 테이블을 이용하여 시드 트리를 생성하는 단계는,
    상기 정제된 리스트에 저장된 레이블에 상응하는 부모 노드 ID에 해당하는 레이블에 연결된 부모 노드 시드를 설정하는 단계;
    상기 저장된 레이블에 연결된 현재 레이블 시드의 제1 주소 필드가 미리 설정된 널값인지 여부를 판단하는 단계; 및
    상기 제1 주소 필드가 상기 미리 설정된 널값인 경우, 상기 부모 노드 시드의 주소를 상기 현재 레이블 시드의 상기 제1 주소 필드에 저장하고, 미리 설정된 값만큼 증가된 발생빈도를 상기 빈도필드에 저장하는 단계를 수행하는 것을 특징으로 하는 프로그램을 기록한 기록 매체.
  29. 제 28항에 있어서,
    상기 제1 주소 필드가 상기 미리 설정된 널값이 아닌 경우, 상기 현재 레이블 시드의 상기 제1 주소 필드와 상기 부모 노드 시드의 주소가 동일한지 여부를 판단하는 단계; 및
    상기 제1 주소 필드와 상기 부모 노드 시드의 주소가 동일하지 않은 경우, 상기 현재 레이블 시드에 연결되는 후임자 시드를 생성하고, 상기 미리 설정된 값만큼 증가된 후임자 시드의 발생빈도를 빈도필드에 저장하는 단계를 더 수행하는 것을 특징으로 하는 프로그램을 기록한 기록 매체.
  30. 제 29항에 있어서,
    상기 제1 주소 필드와 상기 부모 노드 시드의 주소가 동일한 경우,
    미리 설정된 값만큼 증가된 부모 노드 시드의 발생빈도를 빈도필드에 저장하는 단계를 더 수행하는 것을 특징으로 하는 프로그램을 기록한 기록 매체.
  31. 제 30항에 있어서,
    상기 프루닝의 수행은 상기 시드 트리에 저장되어 있는 시드들 중 상기 부모 노드 시드의 발생빈도가 상기 최소지지도값 이상인 시드들만 추출하는 과정인 것을 특징으로 하는 프로그램을 기록한 기록 매체.
KR1020070054839A 2007-06-05 2007-06-05 리스트 기반 최대빈번 서브트리 추출 방법 및 장치 KR100908301B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020070054839A KR100908301B1 (ko) 2007-06-05 2007-06-05 리스트 기반 최대빈번 서브트리 추출 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070054839A KR100908301B1 (ko) 2007-06-05 2007-06-05 리스트 기반 최대빈번 서브트리 추출 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20080107045A KR20080107045A (ko) 2008-12-10
KR100908301B1 true KR100908301B1 (ko) 2009-07-17

Family

ID=40367486

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070054839A KR100908301B1 (ko) 2007-06-05 2007-06-05 리스트 기반 최대빈번 서브트리 추출 방법 및 장치

Country Status (1)

Country Link
KR (1) KR100908301B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102081722B1 (ko) * 2013-04-04 2020-02-26 삼성전자주식회사 병렬 처리를 이용한 닫힌 빈발 패턴 마이닝 방법 및 장치

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020042944A (ko) * 2000-12-01 2002-06-08 김한준 지능형 문서 관리 장치 및 그 방법
KR20030083904A (ko) * 2002-04-23 2003-11-01 엘지전자 주식회사 Xml 문서의 구조정보 처리방법
KR20040000194A (ko) * 2002-06-24 2004-01-03 오동익 문서구조정보 추출방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020042944A (ko) * 2000-12-01 2002-06-08 김한준 지능형 문서 관리 장치 및 그 방법
KR20030083904A (ko) * 2002-04-23 2003-11-01 엘지전자 주식회사 Xml 문서의 구조정보 처리방법
KR20040000194A (ko) * 2002-06-24 2004-01-03 오동익 문서구조정보 추출방법

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
WISE 2006 공개일 2006.11.23*

Also Published As

Publication number Publication date
KR20080107045A (ko) 2008-12-10

Similar Documents

Publication Publication Date Title
CN104317801B (zh) 一种面向大数据的数据清洗系统及方法
US7523288B2 (en) Dynamic fragment mapping
JP3438781B2 (ja) データベース分割方法、プログラムを記録したプログラム記憶装置および記録媒体
KR101617696B1 (ko) 데이터 정규표현식의 마이닝 방법 및 장치
JP4215425B2 (ja) 文章管理システム、その管理方法及びそのプログラム
CN113434557B (zh) 一种标签数据的范围查询方法、装置、设备及存储介质
CN109408589A (zh) 数据同步方法及装置
Haj Rachid et al. A practical and scalable tool to find overlaps between sequences
Jin et al. prague: A practical framework for blending visual subgraph query formulation and query processing
CN114840487A (zh) 分布式文件系统的元数据管理方法和装置
Chu et al. Automatic data extraction of websites using data path matching and alignment
Mallick et al. Incremental mining of sequential patterns: Progress and challenges
Jin et al. Prague: towards blending practical visual subgraph query formulation and query processing
KR100908301B1 (ko) 리스트 기반 최대빈번 서브트리 추출 방법 및 장치
JP2018085056A (ja) 算出装置、算出方法、及び算出プログラム
CN111309677A (zh) 一种分布式文件系统的文件管理方法及装置
US11113314B2 (en) Similarity calculating device and method, and recording medium
CN108376054B (zh) 一种对标识数据进行索引的处理方法及装置
CN103473228B (zh) 相关关键词的显示方法及装置
JP2013016112A (ja) チャンク生成装置、チャンク読み取り装置、チャンク生成方法及びプログラム
CN110826007B (zh) 栏目更新日期确定方法、装置、设备及可读存储介质
CN108205460A (zh) 宿主机可用资源的生成方法和装置
KR101299555B1 (ko) 해시 함수 기반의 인덱스를 이용한 텍스트 검색 장치 및 방법
JP2010267081A (ja) 情報検索方法及び装置及びプログラム
CN112800067A (zh) 范围查询方法、装置、计算机可读存储介质及电子设备

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130530

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140617

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee