KR101872241B1 - 정보를 압축하는 방법, 장치 및 컴퓨터 프로그램 - Google Patents

정보를 압축하는 방법, 장치 및 컴퓨터 프로그램 Download PDF

Info

Publication number
KR101872241B1
KR101872241B1 KR1020170037494A KR20170037494A KR101872241B1 KR 101872241 B1 KR101872241 B1 KR 101872241B1 KR 1020170037494 A KR1020170037494 A KR 1020170037494A KR 20170037494 A KR20170037494 A KR 20170037494A KR 101872241 B1 KR101872241 B1 KR 101872241B1
Authority
KR
South Korea
Prior art keywords
node
value
sector
bitmap
group
Prior art date
Application number
KR1020170037494A
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 KR1020170037494A priority Critical patent/KR101872241B1/ko
Application granted granted Critical
Publication of KR101872241B1 publication Critical patent/KR101872241B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3066Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction by means of a mask or a bit-map
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6011Encoder aspects
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6017Methods or arrangements to increase the throughput

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

본 발명은 적어도 하나 이상의 노드 및 연결선을 포함하는 방향 그래프에 대한 비트맵 인덱스를 생성하는 서버에서, 상기 비트맵 인덱스를 생성하는 방법에 대한 것으로, 상기 방향 그래프에서 인접된 노드에 대한 정보를 각각의 노드 별로 표현하는 비트맵 매트릭스를 작성하는 a 단계; 상기 비트맵 매트릭스를 임의의 구간으로 분할하고 분할된 구간에 그룹 식별자를 부여하는 b 단계; 상기 노드의 그룹 별로 값이 0인 섹터는 제거하고, 값이 1인 섹터만 추출하여, 해당 노드의 해당 그룹에 대한 십진 값을 계산하는 c 단계; 상기 노드의 각각의 그룹에 대한 상기 십진 값으로 해당 노드에 대한 비트 벡터를 생성하고, 모든 노드의 상기 비트 벡터를 결합하여 비트맵 인덱스를 생성하는 d 단계를 포함하는 것을 특징으로 한다.

Description

정보를 압축하는 방법, 장치 및 컴퓨터 프로그램 {METHOD, APPARATUS AND COMPUTER PROGRAM FOR INFORMATION COMPRESSION}
본 발명은 정보를 압축하는 방법에 대한 것으로, 정보 검색이나 그래프 마이닝 알고리즘에 사용되는 비트 벡터를 효과적으로 압축하는 방법에 대한 것이다.
종래 비트 맵 인덱스는 그래프 표현, 정보 검색과 같은 문자열 매칭 알고리즘을 위한 효율적인 데이터 구조로 사용되고 있으며, 비트 맵 인덱스의 각 행은 비트 벡터로 표현될 수 있다.
비트 맵을 사용하면 시간 복잡도가 있는 그래프의 엣지 노드를 증명하거나, 단일 논리 비트간 AND 연산을 사용하여 그래프에서 임의의 노드의 이웃 노드를 검색할 수 있다. 나아가 정보 검색 또는 문자열 일치 알고리즘에서 다양한 비트맵을 결합하면 전체 성능이 향상될 수 있다.
한편 최근 정보화 기기의 급속한 확대로 데이터 연산 량이 급격히 증가되었으며, 대용량 데이터의 빈번한 처리가 요구되고 있다. 대용량 데이터를 처리하기 위해서는 대용량 데이터를 표현한 그래프에서 인접 노드를 연산하는데 필요한 시간과 메모리를 줄일 수 있는 효율적인 방법이 요구된다.
본 발명은 상기와 같은 문제를 해결하는 것을 목적으로 한다. 보다 구체적으로 본 발명은, 비트 벡터를 효과적으로 압축하는 방법에 대한 것으로, 대용량 데이터를 표현한 그래프에서 인접 노드를 연산하는데 필요한 리소스를 줄이는 것을 목적으로 한다.
본 발명의 실시예를 따르는, 적어도 하나 이상의 노드 및 연결선을 포함하는 방향 그래프에 대한 비트맵 인덱스를 생성하는 서버에서, 상기 비트맵 인덱스를 생성하는 방법은, 상기 방향 그래프에서 인접된 노드에 대한 정보를 각각의 노드 별로 표현하는 비트맵 매트릭스를 작성하는 a 단계; 상기 비트맵 매트릭스를 임의의 구간으로 분할하고 분할된 구간에 그룹 식별자를 부여하는 b 단계; 상기 노드의 그룹 별로 값이 0인 섹터는 제거하고, 값이 1인 섹터만 추출하여, 해당 노드의 해당 그룹에 대한 십진 값을 계산하는 c 단계; 상기 노드의 각각의 그룹에 대한 상기 십진 값으로 해당 노드에 대한 비트 벡터를 생성하고, 모든 노드의 상기 비트 벡터를 결합하여 비트맵 인덱스를 생성하는 d 단계를 포함하는 것을 특징으로 한다.
나아가 본 발명의 실시예를 따르면, 상기 c 단계는, 상기 노드에 대한 임의의 그룹에 값이 1인 섹터가 2 이상 존재하는 경우, 해당 노드의 타입으로 플래그 0을 부여하는 단계; 및 상기 노드에 대한 임의의 그룹에 값이 1인 섹터가 없거나 하나만 존재하는 경우, 해당 노드의 타입으로 플래그 1을 부여하는 단계를 포함할 수 있으며, 상기 플래그 1이 부여된 노드는, 상기 그룹을 고려하지 않고 값이 0인 섹터는 제거하고, 값이 1인 섹터만 추출하여, 상기 값이 1인 십진값으로 변환하는 단계를 포함할 수 있고, 상기 a 단계는, 상기 방향 그래프가 제 1 노드에서 제 2 노드로 인접하여 연결된 경우 1의 값을 부여하고, 인접하여 연결되지 않은 경우 0의 값을 부여하여 상기 비트맵 매트릭스를 생성하는 단계를 포함할 수 있다.
한편, 본 발명의 실시예를 따르는, 적어도 하나 이상의 노드 및 연결선을 포함하는 방향 그래프에 대한 비트맵 인덱스를 생성하는 서버에서, 상기 비트맵 인덱스를 생성하는 방법은, 상기 방향 그래프에서 임의의 노드끼리 인접하는 경우 1의 값을 부여하고, 인접하지 않는 경우 0의 값을 부여하여 상기 방향 그래프를 각각의 노드에 대한 비트값으로 표현한 비트맵 매트릭스를 작성하는 단계; 상기 비트맵 매트릭스를 임의의 구간으로 분할하고 분할된 구간에 그룹 식별자를 부여하는 단계; 및 상기 노드에 대한 임의의 그룹에 값 1인 섹터가 2이상 포함되어 있는 경우, 해당 노드의 타입으로 플래그 0을 부여하고, 상기 노드의 그룹별로 값 1인 섹터가 없거나 하나만 존재하는 경우, 해당 노드의 타입으로 플래그 1을 부여하고, 상기 노드의 그룹별로 값이 0인 섹터는 제거하고 값이 1인 섹터만 추출하여 해당 노드의 인접 노드에 대한 정보를 십진 값으로 표현하는 단계를 포함하는 것을 특징으로 한다.
나아가 본 발명의 실시예를 따르는 적어도 하나 이상의 노드 및 연결선을 포함하는 방향 그래프에 대한 비트맵 인덱스를 생성하는 서버는, 상기 방향 그래프에서 인접된 노드에 대한 정보를 각각의 노드 별로 표현하는 비트맵 매트릭스를 작성하는 비트맵 매트릭스 생성 모듈; 상기 비트맵 매트릭스를 임의의 구간으로 분할하고 분할된 구간에 그룹 식별자를 부여하는 파티셔닝 모듈; 및 상기 비트맵 매트릭스에서 상기 노드의 상기 그룹 별로 값이 0인 섹터는 제거하고, 값이 1인 섹터만 추출하여, 해당 노드의 해당 그룹에 대한 십진 값을 계산하고, 상기 노드의 각각의 그룹에 대한 상기 십진 값으로 상기 노드에 대한 비트 벡터를 생성하고, 모든 노드의 상기 비트 벡터를 결합하여 비트맵 인덱스를 생성하는 비트맵 축소 모듈을 포함하는 것을 특징으로 한다.
이때 본 발명의 실시예를 따르면, 상기 비트맵 축소 모듈은, 상기 노드에 대한 임의의 그룹에 값이 1인 섹터가 2 이상 존재하는 경우, 해당 노드의 타입으로 플래그 0을 부여하고, 상기 노드에 대한 임의의 그룹에 값이 1인 섹터가 없거나 하나만 존재하는 경우, 해당 노드의 타입으로 플래그 1을 부여할 수 있으며, 상기 플래그 1이 부여된 노드는, 상기 그룹을 고려하지 않고 값이 0인 섹터는 제거하고, 값이 1인 섹터만 추출하여, 상기 값이 1인 십진값으로 변환할 수 있으며, 상기 비트맵 매트릭스 생성 모듈은, 상기 방향 그래프가 제 1 노드에서 제 2 노드로 인접하여 연결된 경우 1의 값을 부여하고, 인접하여 연결되지 않은 경우 0의 값을 부여하여 상기 비트맵 매트릭스를 생성할 수 있다.
한편 본 발명의 실시예를 따르는 적어도 하나 이상의 노드 및 연결선을 포함하는 방향 그래프에 대한 비트맵 인덱스를 생성하는 서버에서, 상기 비트맵 인덱스를 생성하는 처리를 수행하기 위하여, 컴퓨터 판독가능한 기록 매체에 저장된 컴퓨터 프로그램은, 상기 방향 그래프에서 인접된 노드에 대한 정보를 각각의 노드 별로 표현하는 비트맵 매트릭스를 작성하는 기능; 상기 비트맵 매트릭스를 임의의 구간으로 분할하고 분할된 구간에 그룹 식별자를 부여하는 기능; 상기 노드의 그룹 별로 값이 0인 섹터는 제거하고, 값이 1인 섹터만 추출하여, 해당 노드의 해당 그룹에 대한 십진 값을 계산하는 기능; 상기 노드의 각각의 그룹에 대한 상기 십진 값으로 해당 노드에 대한 비트 벡터를 생성하고, 모든 노드의 상기 비트 벡터를 결합하여 비트맵 인덱스를 생성하는 기능을 수행하는 것을 특징으로 한다.
본 발명에 따르면, 상이한 벡터들의 비트 간의 정렬을 유지하면서, 전체 비트 벡터의 사이즈를 줄일 수 있는 효과가 있다. 나아가 본 발명의 실시예를 따르면, 비트 오퍼레이션 프로세싱에 소요되는 코스트를 현저하게 감소시킬 수 있는 효과가 있다.
도 1은 방향성 있는 그래프를 구성하는 최소 단위인 콘을 연산하는 방법을 설명하기 위한 도면
도 2는 본 발명의 실시예를 따라 연산된 콘을 표현한 예시 도면
도 3는 본 발명의 실시예를 따라 방향성 있는 그래프를 축소하는 방법을 설명하기 위한 도면
도 4은 본 발명의 실시예를 따라 방향이 포함된 그래프를 비트맵 메트릭스로 표현한 예시 도면
도 5는 본 발명의 실시예를 따라 비트맵 메트릭스를 십진법 값으로 축소하는 방법을 설명하기 위한 도면
도 6는 본 발명의 실시예를 따라 비트맵 메트릭스를 십진법 값으로 축소한 비트 배치 벡터의 예시를 설명하기 위한 도면
도 7은 본 발명의 실시예를 따라 십진법 값으로 표현된 비트맵 벡터를 0인 값을 제외하여 축소하는 예시를 설명하기 위한 도면
도 8은 본 발명의 추가적인 실시예를 따라 십진법 값으로 표현된 비트맵 벡터를 0인 값을 제외하여 축소하는 예시를 설명하기 위한 도면
본 발명은 이하에 기재되는 실시예들의 설명 내용에 한정되는 것은 아니며, 본 발명의 기술적 요지를 벗어나지 않는 범위 내에서 다양한 변형이 가해질 수 있음은 자명하다. 그리고 실시예를 설명함에 있어서 본 발명이 속하는 기술 분야에 널리 알려져 있고 본 발명의 기술적 요지와 직접적으로 관련이 없는 기술 내용에 대해서는 설명을 생략한다.
한편, 첨부된 도면에서 동일한 구성요소는 동일한 부호로 표현된다. 그리고 첨부 도면에 있어서 일부 구성요소는 과장되거나 생략되거나 개략적으로 도시될 수도 있다. 이는 본 발명의 요지와 관련이 없는 불필요한 설명을 생략함으로써 본 발명의 요지를 명확히 설명하기 위함이다.
종래 비트맵 인덱스는 그래프 표현, 정보 검색과 같은 문자열 매칭 알고리즘을 위한 데이터 구조로 사용되어 왔다. 정보 검색을 위한 문자열 매칭 알고리즘은 다수의 비트맵을 압축하여 비트 연산자를 생성하는 방식으로 그 성능을 향상시킬 수 있다.
종래 비트맵 압축률을 높이기 위해 다양한 파티셔닝 기법이 활용되고 있으나, 압축 데이터에 대한 쿼리 처리 및 압축 해제에 따른 오버 헤드로 인하여 비트맵 프로세싱에 많은 리소스가 소요되는 문제가 있었다. 이는 종래의 비트 맵 압축 알고리즘은 압축을 각 비트 벡터 단위로 처리하기 때문이다. 따라서 임의의 그래프 쿼리에서 엣지가 삽입, 삭제 되는 경우 전체 비트 벡터에 대한 처리가 필요하게 된다.
본 발명은 비트 벡터에 대해 최상의 압축을 수행할 수 있는 비트맵 인덱스 압축 프레임워크를 제안하는 것을 목적으로 한다. 본 명세서에서 비트 벡터란 비트맵 인덱스의 각 행을 의미하는 것으로 해석될 수 있다.
예를 들어 도 1과 같은 방향성을 포함하는 그래프에 대한 비트맵 인덱스를 생성하는 방법을 고려할 수 있다.
도 1의 그래프에서 노드 1, 노드 2, 노드 3은 하나의 콘 (cone)을 형성할 수 있다. 상기 콘은 꼭지점 (노드 1) 및 노드 2에서 노드 3 방향의 피봇 엣지 (pivot edge)를 포함할 수 있다. 나아가 도 1의 그래프에서 노드 1, 노드 3, 노드 4는 다른 하나의 콘을 형성할 수 있다. 상기 콘은 꼭지점 (노드 1) 및 노드 3에서 노드 4 방향의 피봇 엣지를 포함할 수 있다. 또한 도 1의 그래프에서 노드 2, 노드 3, 노드 7은 다른 하나의 콘을 형성할 수 있다. 상기 콘은 꼭지점 (노드 2) 및 노드 3에서 노드 7 방향의 피봇 엣지를 포함할 수 있다.
방향을 포함하는 그래프를 위와 같은 방식의 트라이앵글 리스트로 처리하는 경우, 해당 알고리즘에서 가장 많은 리소스를 요구하는 연산은 인접한 노드를 증명하는 일이다.
예를 들어 도 2의 콘에서, 각 노드에 대해 해당 노드를 시점으로 하는 인접 노드의 집합을 adj라고 할 때, 노드 u에 대한 adju는 v와 w를 포함하며, 노드 v에 대한 adjv는 w를 포함할 것이다. 이에 따르면 w는 adju와 adjv의 교집합의 원소에 해당한다. 콘의 꼭지점 노드를 연산하는 처리는 비트 AND 오퍼레이션을 이용하여 수행될 수 있다.
예를 들어 도 1의 그래프에서 노드 1과 인접한 노드는 노드 2, 노드 3 및 노드 4이며, 인접한 노드에 대한 비트값을 1로, 인접하지 않은 노드에 대한 비트값을 0으로 부여한 경우, 전체 그래프에서 노드 1에 대한 비트값은 (0,1,1,1,0,0,0,0,0,0,0,0)로 부여될 수 있다. 나아가 노드 2와 인접한 노드는 노드 3, 노드 7이며, 이 경우 전체 그래프에서 노드 2에 대한 비트값은 (0,0,1,0,0,0,1,0,0,0,0,0)로 부여될 것이다.
노드 1에 대한 (0,1,1,1,0,0,0,0,0,0,0,0) 과 노드 2에 대한 (0,0,1,0,0,0,1,0,0,0,0,0)을 AND 오퍼레이션을 수행하면, (0,0,1,0,0,0,0,0,0,0,0)가 되며, 이는 노드 1과 노드2에 동시에 인접한 노드는 노드 3인 것으로 해석될 수 있다. 이 경우, 도 2의 그래프에서 노드 u와 노드 v를 각각 노드 1과 노드 2로 하면, 각 노드의 비트값에 대한 AND 오퍼레이션을 통해 콘을 이루는 마지막 노드 w를 노드 3으로 증명할 수 있다.
본 발명은 그래프를 각 노드의 비트값으로 변환한 비트 벡터로 표현하고, 상기 비트 벡터에 대해 최상의 압축을 수행할 수 있는 프레임워크를 제안하는 것을 목적으로 한다. 본 발명의 실시예를 따르는 비트 벡터 압축 방법은 첨부된 도 3를 참고하여 후술된다.
도 3는 본 발명의 실시예를 따라 방향성 있는 그래프를 축소하는 방법을 설명하기 위한 도면이다.
도 3의 단계 310에서 비트맵 인덱스를 생성하는 서버는 임의의 그래프에 대한 비트맵 매트릭스를 작성할 수 있다. 상기 비트맵 매트릭스는 각 노드끼리 인접하는 경우 1, 인접하지 않는 경우 0의 값으로 표현될 수 있다.
이에 따르면, 도 1의 방향성 있는 그래프는 도 4와 같이 표현될 것이다. 도 4는 도 1의 그래프에서 노드 1의 인접 노드는 노드 2,3,4이며, 노드 2의 인접 노드는 노드 3, 7, 노드 3의 인접노드는 노드 4, 7, 노드 4의 인접 노드는 노드 5, 10인 것을 표현하고 있는 비트맵 매트릭스의 예시이다.
다시 도 3에 대한 설명으로 복귀하면, 도 3의 단계 320에서 비트맵 인덱스를 생성하는 서버는 비트맵 매트릭스를 임의의 구간으로 분할하고 분할된 구간에 대한 그룹 id를 부여할 수 있다.
이에 따르면 도 4의 비트맵 매트릭스는 도 5와 같이 분할될 수 있다. 도 5는 도 4에 예시된 비트맵 매트릭스를 각 노드에 대한 비트 벡터를 3개 단위로 분할하여 그룹핑한 예시를 도시하고 있다.
도 5의 예시에 따르면, 도 1의 그래프 및 도 4의 비트맵 매트릭스는 노드 1,2,3 (510) 노드 4,5,6 (520) 노드 7,8,9 (530) 노드 10,11, 12 (540) 단위로 그루핑하여 생성한 비트 배치 벡터 (Bit Batch Vector)로 표현될 수 있다. 각 그룹에는 그룹 아이디가 부여될 수 있다. 도 5의 550은 해당 그룹에 부여된 그룹 아이디를 예시하고 있다.
도 5의 예는 각 노드에 대해 값을 3개씩 분할하여 그루핑한 것을 예시하고 있지만, 본 발명은 이에 한정하여 해석될 수 없다. 즉, 본 발명의 실시예를 따르면 비트맵 매트릭스는 임의의 기준에 따라 분할되면 족하다.
다시 도 3에 대한 설명으로 복귀하면, 도 3의 단계 340에서 비트맵 인덱스를 생성하는 서버는 해당 노드의 그룹 별로 비트값이 1인 섹터만 추출하여 십진법 값으로 변환하여 표현할 수 있다.
예를 들어 도 5의 비트 배치 벡터에서 각 그룹은 3개 단위의 비트 값을 가지고 있으므로, 해당 그룹의 첫 번째 비트값을
Figure 112018013978023-pat00009
, 두 번째 비트값을
Figure 112018013978023-pat00010
, 세 번째 비트 값을
Figure 112018013978023-pat00011
으로 할당하여 십진법 값으로 변환할 수 있다.
이를 따르면 노드 1의 그룹 0은 (0, 1, 1)의 비트 값을 가지고 있으므로,
Figure 112018013978023-pat00012
으로 변환하여 십진법 값으로 변환할 수 있으며, 이는 3에 해당한다. 나아가 노드 2의 그룹 2은 (1, 0, 0)의 비트 값을 가지고 있으므로
Figure 112018013978023-pat00013
으로 변환하여 십진법 값으로 변환할 수 있으며, 이는 4에 해당한다.
도 6은 도 5의 비트 배치 벡터를 십진법의 값으로 변환하여 압축한 결과를 예시하고 있다. 본 발명의 실시예를 따르면, 도 1의 그래프는 도 6과 같은 십진법 맵으로 축소될 수 있다.
나아가 본 발명의 실시예를 따르면, 도 6의 십진법 맵에서 0 값을 삭제해도 인접 노드에 대한 정보는 손실되지 않기 때문에, 십진법 맵의 0값을 삭제하고 0 값이 아닌 것만 해당 그룹 아이디와 함께 표현될 수 있다.
도 7은 도 6의 십진법 맵에서 값이 0인 섹터를 제외하고 각 노드에 대한 그룹 아이디와 해당 그룹의 십진법 값을 표현한 십진법 축소맵의 예시이다.
도 6의 610에서 노드 1의 그룹 0의 값은 3이고 그룹 1의 값은 4이며, 그룹 2의 값은 0, 그룹 3의 값은 0일 때, 그룹 2와 그룹 3에 대한 섹터는 제외하고 노드 1에 대한 값을 표현해도 노드1의 인접 노드에 대한 정보는 손실되지 않는다. 따라서 본 발명의 실시예를 따르면, 노드 1의 인접 노드에 대한 정보는 도 7의 710과 같이 표현될 수 있다.
도 7에 예시된 맵은 노드 1의 그룹 0과 그룹 1에서 인접한 노드가 존재하며, 그룹 0과 그룹 1에 속하는 인접 노드는 각각 3 및 4의 값으로 표현된다는 정보를 포함하고 있다. (720, 730) 나아가 노드 2의 그룹 0과 그룹 2에서 인접한 노드가 존재하며, 그룹 0과 그룹 2에 속하는 인접 노드는 각각 1 및 4의 값으로 표현된다는 정보를 포함하고 있다. (740) 나아가 노드 3의 그룹 1에서 인접한 노드가 존재하며, 이는 4의 값으로 표현된다는 정보를 포함하고 있다. (750)
이때 도 7의 맵을 이용하여 비트 AND 연산은 아래와 같이 수행할 수 있다.
도 7의 720 은 노드 1의 그룹 0의 값이 3으로 표현되며, 이는 2진법 값으로 변환하면 011에 해당한다. 740은 노드 2의 그룹 0의 값이 1로 표현되며, 이는 2진법 값으로 변환하면 001에 해당한다. 011과 001을 AND 연산을 수행하면 001 값을 얻을 수 있다.
이때, 해당 그룹 0은 노드 1, 2, 3을 그룹핑한 것이며, 001은 그 중 노드 3을 지칭하기 때문에 노드 1과 노드 2와 동시에 인접한 노드는 노드 3인 것을 확인할 수 있다. (도 1, 110, 120, 130)
나아가 도 7의 730은 노드 1의 그룹 1의 값이 4로 표현되며, 이는 2진법 값으로 변환하면 100에 해당한다. 750은 노드 3의 그룹 1의 값이 4로 표현되며 이는 2진법 값으로 변환하면 100에 해당한다. 100과 100을 AND 연산을 수행하면 100 값을 얻을 수 있다.
이때 해당 그룹 1은 노드 4,5,6을 그룹핑한 것이며, 100은 그중 노드 4를 지칭하기 때문에 노드 1과 노드 3과 동시에 인접한 노드는 노드 4인 것을 확인할 수 있다. (도 1, 110, 130, 140)
도 3에 대한 설명으로 복귀하면, 본 발명의 추가적인 실시예를 따르면, 비트맵 매트릭스에서 임의의 노드에 대한 임의의 그룹에 포함되는 1 값이 하나만 존재하는 경우, 비트 배치 벡터는 더욱 축소되어 표현될 수 있다. (단계 330)
예를 들어, 도 5의 예에서, 노드 1의 그룹 0만 제외하면 노드 1의 다른 그룹들은 값 1이 2 이상 포함되어 있지 않다. 그러나 노드 1의 그룹 0의 값은 (0,1,1)에 해당하여 1 값이 2 이상 포함되어 있다.
나아가 노드 2에서 값 1은 그룹 0, 그룹 2에서만 존재하며, 노드 2의 그룹 0은 (0,0,1), 그룹 2는 (1,0,0) 값을 가지기 때문에 값 1이 2이상 포함되어 있지 않다.
본 발명의 실시예를 따르면, 임의의 노드에 대한 임의의 그룹에 값 1이 2이상 포함되어 있지 않는 경우, 그룹을 고려하지 않고 값이 1인 것만 추출하여 십진법 값으로 변환할 수 있다. (단계 360) 이때 해당 노드가 그룹을 고려하지 않고 십진법 값으로 변환된 것을 해석하기 위한 플래그를 부여할 수 있다. (단계 350)
예를 들어 도 5의 비트맵 매트릭스에서 노드 2는 노드 3, 노드 7만 인접하기 때문에 노드 2에 대한 비트 벡터는 노드 3, 노드 7에 대해서만 1로 표현되어 있다. 이 경우, 노드 2에 대한 비트 벡터를 인접하는 노드를 의미하는 십진법 값인 3 및 7로 표현해도 인접 노드에 대한 정보가 손실되지 않는다. 따라서 본 발명의 실시예를 따르면, 노드 2는 (3, 7)의 값으로 표현될 수 있다. 이때 인접 노드에 대한 정보를 직접 표현한 것을 해석하기 위한 플래그로 노드 2에 플래그 벡터 1을 부여할 수 있으며, 이 경우 노드 2는 (1, 3, 7)과 같이 표현될 수 있다.
나아가 도 5의 비트맵 매트릭스에서 노드 3은 노드 4, 노드 7만 인접하기 때문에 노드 3에 대한 비트 벡터는 노드 4, 노드 7에 대한 값만 1로 표현되어 있다. 이 경우, 노드 3에 대한 비트 벡터를, 인접하는 노드를 의미하는 십진법 값인 4, 7로 표현해도 인접 노드에 대한 정보가 손실되지 않는다. 따라서 본 발명의 실시예를 따르면 노드 3은 (4, 7)의 값으로 표현될 수 있다. 이때 인접노드에 대한 정보를 직접 표현한 것을 해석하기 위한 플래그로 노드 3에 플래그 벡터 1을 부여할 수 있으며, 이 경우 노드 3은 (1, 4, 7)과 같이 표현될 수 있다.
그러나 도 5의 비트맵 매트릭스에서 노드 1은 노드 2, 노드 3과 모두 인접하기 때문에 그룹 0에서 값 1이 2이상 포함되고 있다. 이 경우, 노드 1을 노드 2 내지 4와 구별하기 위한 플래그로 노드 1에 플래그 벡터 0을 부여하고, 노드 1은 도 3의 단계 340에서 그룹 별로 값이 1인 섹터만 추출하여, 해당 그룹에 대한 십진법 값으로 변환하여 표현할 수 있다.
도 8은 본 발명의 상기 실시예를 따르는 압축된 비트맵 인덱스를 설명하기 위한 예시이다.
도 8의 820, 830, 840은 플래그로 값 1이 부여되어 있기 때문에 각각 노드 2, 3, 4가 인접 노드를 직접 표현하는 십진법 값으로 표현하고 있음을 의미한다. 나아가 도 8의 810은 플래그로 값 0이 부여되어 있기 때문에 노드 1은 그룹 별로 값이 1인 섹터만 추출하여 그룹에 대한 십진법 값으로 표현된 것을 의미한다.
나아가 825은 노드 2의 인접 노드는 노드 3, 노드 7이며, 835은 노드 3의 인접 노드는 노드 4, 노드 7이며, 845는 노드 4의 인접 노드는 노드 5, 노드 10인 것을 표현하고 있다.
한편 도 8의 810은 플래그로 값 0이 부여되어 있기 때문에 노드 1인 인접 노드를 직접 표현하는 십진법 값으로 표현된 것이 아니라, 그룹 단위의 십진법 값으로 표현되어 있음을 의미한다. 도 8의 812, 814을 참고하면 노드 1의 그룹 0의 값은 3이므로 노드 1의 그룹 0에 대한 비트 값은 (0,1,1)로 해석될 수 있다. 나아가 도 8의 816, 818을 참고하면 노드 1의 그룹 1의 값은 4이므로 노드 1의 그룹 1에 대한 비트값은 (1,0,0)으로 해석될 수 있다.
본 명세서와 도면에 게시된 본 발명의 실시 예들은 본 발명의 기술 내용을 쉽게 설명하고 본 발명의 이해를 돕기 위해 특정 예를 제시한 것뿐이며, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기에 게시된 실시 예들 이외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 자명한 것이다.

Claims (13)

  1. 적어도 하나 이상의 노드 및 연결선을 포함하는 방향 그래프에 대한 비트맵 인덱스를 생성하는 서버에서, 상기 비트맵 인덱스를 생성하는 방법에 있어서,
    제1 노드에 대응되는 행과 제2 노드에 대응되는 열의 조합에 대응되는 섹터에 상기 제1 노드와 상기 제2 노드의 인접 여부에 따른 비트 값을 부여하여 비트맵 매트릭스를 생성하는 a 단계;
    상기 비트맵 매트릭스를 임의의 구간으로 분할하고 분할된 구간에 그룹 식별자를 부여하는 b 단계;
    각 노드에 대한 구간 별 비트 값을 십진 값으로 변환하는 c 단계;
    상기 변환된 십진 값을 조합하여 상기 각 노드 별 비트 벡터를 생성하고, 모든 노드의 상기 비트 벡터를 결합하여 비트맵 인덱스를 생성하는 d 단계를 포함하는 것을 특징으로 하는 비트맵 인덱스 생성 방법.
  2. 제 1항에 있어서,
    상기 c 단계는,
    상기 노드에 대한 임의의 그룹에 값이 1인 섹터가 2 이상 존재하는 경우, 해당 노드의 타입으로 플래그 0을 부여하는 단계; 및
    상기 노드에 대한 임의의 그룹에 값이 1인 섹터가 없거나 하나만 존재하는 경우, 해당 노드의 타입으로 플래그 1을 부여하는 단계를 포함하는 것을 특징으로 하는 비트맵 인덱스 생성 방법.
  3. 제 2항에 있어서,
    상기 플래그 1이 부여된 노드는, 상기 그룹을 고려하지 않고 값이 0인 섹터는 제거하고, 값이 1인 섹터만 추출하여, 상기 값이 1인 섹터에 대응되는 제2 노드의 값으로 변환하는 단계를 포함하는 것을 특징으로 하는 비트맵 인덱스 생성 방법.
  4. 제 1항에 있어서,
    상기 a 단계는,
    상기 각 섹터에 상기 제1 노드와 상기 제2 노드가 서로 인접한 경우 1의 값을 부여하고, 인접하지 않은 경우 0의 값을 부여하여 상기 비트맵 매트릭스를 생성하는 단계인 것을 특징으로 하는 비트맵 인덱스 생성 방법.
  5. 적어도 하나 이상의 노드 및 연결선을 포함하는 방향 그래프에 대한 비트맵 인덱스를 생성하는 서버에 있어서,
    제1 노드에 대응되는 행과 제2 노드에 대응되는 열의 조합에 대응되는 각 섹터에 상기 제1 노드와 상기 제2 노드의 인접 여부에 따른 비트 값을 부여하여 비트맵 매트릭스를 작성하는 비트맵 매트릭스 생성 모듈;
    상기 비트맵 매트릭스를 임의의 구간으로 분할하고 분할된 구간에 그룹 식별자를 부여하는 파티셔닝 모듈; 및
    각 노드에 대한 구간 별 비트 값을 십진 값으로 변환하고, 상기 변환된 십진 값을 조합하여 상기 각 노드 별 비트 벡터를 생성하고, 모든 노드의 상기 비트 벡터를 결합하여 비트맵 인덱스를 생성하는 비트맵 축소 모듈을 포함하는 것을 특징으로 하는 비트맵 인덱스 생성 서버.
  6. 제 5항에 있어서, 상기 비트맵 축소 모듈은,
    상기 노드에 대한 임의의 그룹에 값이 1인 섹터가 2 이상 존재하는 경우, 해당 노드의 타입으로 플래그 0을 부여하고, 상기 노드에 대한 임의의 그룹에 값이 1인 섹터가 없거나 하나만 존재하는 경우, 해당 노드의 타입으로 플래그 1을 부여하는 것을 특징으로 하는 비트맵 인덱스 생성 서버.
  7. 제 6항에 있어서, 상기 비트맵 축소 모듈은,
    상기 플래그 1이 부여된 노드는, 상기 그룹을 고려하지 않고 값이 0인 섹터는 제거하고, 값이 1인 섹터만 추출하여, 상기 값이 1인 섹터에 대응되는 제2 노드의 값으로 변환하는 것을 특징으로 하는 비트맵 인덱스 생성 서버.
  8. 제 5항에 있어서,
    상기 비트맵 매트릭스 생성 모듈은, 상기 각 섹터에 상기 제1 노드와 상기 제2 노드가 서로 인접한 경우 1의 값을 부여하고, 인접하지 않은 경우 0의 값을 부여하여 상기 비트맵 매트릭스를 생성하는 것을 특징으로 하는 비트맵 인덱스 생성 서버.
  9. 적어도 하나 이상의 노드 및 연결선을 포함하는 방향 그래프에 대한 비트맵 인덱스를 생성하는 서버에서, 상기 비트맵 인덱스를 생성하는 처리를 수행하기 위하여, 컴퓨터 판독가능한 기록 매체에 저장된 컴퓨터 프로그램에 있어서,
    제1 노드에 대응되는 행과 제2 노드에 대응되는 열의 조합에 대응되는 각 섹터에 상기 제1 노드와 상기 제2 노드의 인접 여부에 따른 비트 값을 부여하여 비트맵 매트릭스를 생성하는 기능;
    상기 비트맵 매트릭스를 임의의 구간으로 분할하고 분할된 구간에 그룹 식별자를 부여하는 기능;
    각 노드에 대한 구간 별 비트 값을 십진 값으로 변환하는 기능;
    상기 변환된 십진 값을 조합하여 상기 각 노드 별 비트 벡터를 생성하고, 모든 노드의 상기 비트 벡터를 결합하여 비트맵 인덱스를 생성하는 기능을 수행하는 것을 특징으로 하는 컴퓨터 판독가능한 기록 매체에 저장된 컴퓨터 프로그램.
  10. 제 9항에 있어서,
    상기 노드에 대한 임의의 그룹에 값이 1인 섹터가 2 이상 존재하는 경우, 해당 노드의 타입으로 플래그 0을 부여하는 기능; 및
    상기 노드에 대한 임의의 그룹에 값이 1인 섹터가 없거나 하나만 존재하는 경우, 해당 노드의 타입으로 플래그 1을 부여하는 기능을 수행하는 것을 특징으로 하는 컴퓨터 판독가능한 기록 매체에 저장된 컴퓨터 프로그램.
  11. 제 10항에 있어서,
    상기 플래그 1이 부여된 노드는, 상기 그룹을 고려하지 않고 값이 0인 섹터는 제거하고, 값이 1인 섹터만 추출하여, 상기 값이 1인 섹터에 대응되는 제2 노드의 값으로 변환하는 기능을 수행하는 것을 특징으로 하는 컴퓨터 판독가능한 기록 매체에 저장된 컴퓨터 프로그램.
  12. 제 9항에 있어서,
    상기 각 섹터에 상기 제1 노드와 상기 제2 노드가 서로 인접한 경우 1의 값을 부여하고, 인접하지 않은 경우 0의 값을 부여하여 상기 비트맵 매트릭스를 생성하는 기능을 수행하는 것을 특징으로 하는 컴퓨터 판독가능한 기록 매체에 저장된 컴퓨터 프로그램.
  13. 삭제
KR1020170037494A 2017-03-24 2017-03-24 정보를 압축하는 방법, 장치 및 컴퓨터 프로그램 KR101872241B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170037494A KR101872241B1 (ko) 2017-03-24 2017-03-24 정보를 압축하는 방법, 장치 및 컴퓨터 프로그램

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170037494A KR101872241B1 (ko) 2017-03-24 2017-03-24 정보를 압축하는 방법, 장치 및 컴퓨터 프로그램

Publications (1)

Publication Number Publication Date
KR101872241B1 true KR101872241B1 (ko) 2018-06-28

Family

ID=62780268

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170037494A KR101872241B1 (ko) 2017-03-24 2017-03-24 정보를 압축하는 방법, 장치 및 컴퓨터 프로그램

Country Status (1)

Country Link
KR (1) KR101872241B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108932738A (zh) * 2018-07-03 2018-12-04 南开大学 一种基于字典的位片索引压缩方法
US11210343B2 (en) 2019-06-10 2021-12-28 Postech Academy-Industry Foundation Graph data processing method and apparatus thereof

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100062854A (ko) * 2008-12-02 2010-06-10 한국전자통신연구원 비트맵을 이용한 스트림 빈발 패턴 마이닝 방법
KR20150125511A (ko) * 2014-04-30 2015-11-09 한국과학기술원 그래프 압축 처리 방법 및 장치

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100062854A (ko) * 2008-12-02 2010-06-10 한국전자통신연구원 비트맵을 이용한 스트림 빈발 패턴 마이닝 방법
KR20150125511A (ko) * 2014-04-30 2015-11-09 한국과학기술원 그래프 압축 처리 방법 및 장치

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108932738A (zh) * 2018-07-03 2018-12-04 南开大学 一种基于字典的位片索引压缩方法
CN108932738B (zh) * 2018-07-03 2022-08-16 南开大学 一种基于字典的位片索引压缩方法
US11210343B2 (en) 2019-06-10 2021-12-28 Postech Academy-Industry Foundation Graph data processing method and apparatus thereof

Similar Documents

Publication Publication Date Title
JP7359153B2 (ja) 画像処理装置および方法
JP5427640B2 (ja) 決定木生成装置、決定木生成方法、及びプログラム
CN110299187B (zh) 一种基于Hadoop的并行化基因数据压缩方法
CN109582213B (zh) 数据重构方法及装置、数据存储系统
JP6122516B2 (ja) エンコーディング方法及びエンコーダ
KR101872241B1 (ko) 정보를 압축하는 방법, 장치 및 컴퓨터 프로그램
US20190026189A1 (en) Method and device of archiving database and method and device of retrieving archived database
US11210343B2 (en) Graph data processing method and apparatus thereof
CN105243027A (zh) 在存储设备中存储数据的方法和存储控制器
CN105589908A (zh) 用于事务集合的关联规则计算方法
US9137336B1 (en) Data compression techniques
JP6662169B2 (ja) 符号化プログラム、符号化方法、符号化装置、検索プログラム、検索方法および検索装置
JP2014107686A (ja) 画像処理装置
US10581456B2 (en) Data compression device and data decompression device
EP3963853B1 (en) Optimizing storage and retrieval of compressed data
US9646390B2 (en) Parallel image compression
WO2021145105A1 (ja) データ圧縮装置、およびデータ圧縮方法
JP2011065268A (ja) 可変長のデータ断片の開始・終了オフセットを決定する方法及び装置
JP6835285B1 (ja) データ圧縮方法、データ圧縮装置、データ圧縮プログラム、データ伸長方法、データ伸長装置およびデータ伸長プログラム
CN112559462A (zh) 一种数据压缩方法、装置、计算机设备和存储介质
US20150248432A1 (en) Method and system
CN109388615B (zh) 基于Spark的任务处理方法及系统
JP6645013B2 (ja) 符号化プログラム、符号化方法、符号化装置および伸長方法
TW201816610A (zh) 熵編碼之系統層級測試
US20200133583A1 (en) Method, apparatus and computer program product for storing data

Legal Events

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