KR101700108B1 - 네트워크 클러스터링 방법 및 장치 - Google Patents

네트워크 클러스터링 방법 및 장치 Download PDF

Info

Publication number
KR101700108B1
KR101700108B1 KR1020160101611A KR20160101611A KR101700108B1 KR 101700108 B1 KR101700108 B1 KR 101700108B1 KR 1020160101611 A KR1020160101611 A KR 1020160101611A KR 20160101611 A KR20160101611 A KR 20160101611A KR 101700108 B1 KR101700108 B1 KR 101700108B1
Authority
KR
South Korea
Prior art keywords
network
node
compression
clustering
neighboring
Prior art date
Application number
KR1020160101611A
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 KR1020160101611A priority Critical patent/KR101700108B1/ko
Application granted granted Critical
Publication of KR101700108B1 publication Critical patent/KR101700108B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/46Cluster building
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/12Shortest path evaluation
    • H04L45/124Shortest path evaluation using a combination of metrics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/12Shortest path evaluation
    • H04L45/127Shortest path evaluation based on intermediate node capabilities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/04Protocols for data compression, e.g. ROHC

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

복수의 노드와 가중치가 부여된 간선을 포함하는 대용량 네트워크를 압축하고 클러스터링하는 방법 및 장치가 제공된다.
상기 네트워크를 압축하는 방법은, 원본 네트워크를 구성하는 노드 중 압축 대상 노드를 선정하는 제1 단계, 상기 압축 대상 노드와 인접한 이웃 노드 중에서 압축 후보 노드를 선정하되, 상기 이웃 노드는 기 교체된 슈퍼 노드를 포함하는 제2 단계, 상기 압축 대상 노드 및 상기 압축 후보 노드를 하나의 슈퍼 노드로 교체하는 제3 단계 및 상기 제1 내지 제3 단계를 반복 수행하여, 상기 슈퍼 노드를 하나 이상 포함하는 압축 네트워크를 구성하는 단계를 포함할 수 있다.
또한, 상기 클러스터링하는 방법은, 원본 네트워크를 압축하여 압축 네트워크를 구성하되, 상기 압축하는 것은 상기 원본 네트워크를 구성하는 압축 대상 노드와 상기 압축 대상 노드와 인접한 이웃 노드 중에서 선정된 압축 후보 노드를 하나의 슈퍼 노드로 교체하는 것을 포함하고, 상기 이웃 노드는 기 교체된 슈퍼 노드를 포함하는 단계, 상기 압축 네트워크를 제1 클러스터링하는 단계, 상기 제1 클러스터링된 네트워크를 압축 해제하여 중간 네트워크를 구성하는 단계 및 상기 중간 네트워크를 제2 클러스터링하고, 상기 제2 클러스터링된 네트워크를 클러스터링 결과 네트워크로 구성하는 단계를 포함할 수 있다.

Description

네트워크 클러스터링 방법 및 장치 {Method and Apparatus for Network Clustering}
본 발명은 네트워크 클러스터링 방법 및 장치에 관한 것이다. 보다 자세하게는, 복수의 노드와 가중치가 부여된 간선을 포함하는 대용량 네트워크를 압축하고 클러스터링하는 방법 및 장치에 관한 것이다.
빅데이터 시대가 도래함에 따라 소셜 네트워크(Social Network), 웹 그래프(Web Graph), PPI(Protein-Protein Interaction)와 같은 생물학적 네트워크(Biological Network) 데이터 등의 대용량 네트워크 데이터가 기하급수적으로 증가하고 있으며, 이에 따라 네트워크 클러스터링(Network Clustering) 기술이 빅데이터 분석의 핵심 기술 중 하나로 주목 받고 있다.
그러나, 종래의 네트워크 클러스터링 기술은 다음과 같은 2 가지 문제점으로 인해 실세계의 대용량 네트워크 분석에 이용되기 어렵다.
첫 번째로, 종래의 네트워크 클러스터링 기술은 클러스터 크기의 균일성 문제를 해결하지 못하고 있다. 즉, 종래의 네트워크 클러스터링 기술은 크기가 작은 클러스터를 다수 생성하거나('Fragmentation Problem') 반대로 대부분의 노드를 포함하는 너무 큰 클러스터를 생성하기 때문에, 클러스터링의 정확도가 떨어지고 양질의 클러스터링 결과를 제공할 수 없다.
두 번째로, 종래의 네트워크 클러스터링 기술은 대용량 네트워크를 분석을 위해 필수적으로 요구되는 성능 및 공간 측면에서의 확장성(Scalability)을 제공하지 못한다.
성능 측면에서의 확장성 문제는 주로 네트워크 클러스터링 기술에 요구되는 행렬 연산에서 기인한다. 즉, 종래의 네트워크 클러스터링 기술은 인접 행렬로 표현된 네트워크를 클러스터링 하기 위해 인접 행렬의 곱셈과 같이 높은 시간 복잡도(O(N3), N은 행렬의 행 또는 열의 길이)를 갖는 연산을 수행하기 때문에, N 의 크기가 매우 큰 대용량 네트워크에 적용하는 경우 성능 문제를 야기한다.
공간 측면에서의 확장성 문제는 대용량 네트워크 크기 및 인접 행렬의 표현 방식에서 기인한다. 스탠포드 대학교의 SNAP(Stanford Network Analysis Project) 프로젝트에서 공개한 실세계의 대용량 그래프의 데이터셋(http://snap.stanford.edu/data/index.html 참조)을 도시하는 도 1을 참고하면, 실세계의 대용량 네트워크는 적게는 수만 개에서 많게는 수십, 수백 만개의 노드와 간선을 포함하는 것을 알 수 있다. 상기의 대용량 네트워크를 통상의 인접 행렬 방식으로 표현하는 경우 노드의 개수를 N 이라고 할 때 O(N2)의 메모리 공간이 요구되므로, 통상의 인접 행렬을 이용하는 종래의 네트워크 클러스터링 기술은 N 의 크기가 매우 큰 대용량 네트워크에 적용될 수 없다.
요약하면, 종래의 클러스터링 기술은 클러스터 크기의 불균일성 문제와 대용량 네트워크 및 클러스터링 알고리즘에 근본적으로 내재된 성능 및 공간적 측면에서의 확장성 문제로 인해 실세계의 대용량 네트워크에 현실적으로 이용되기 어렵다. 따라서, 균일한 크기의 클러스터를 생성하면서도 확장성을 보장하는 네트워크 클러스터링 기법이 요구된다.
S. V. Dongen, "Graph Clustering by Flow Simulation", PhD thesis, University of Utrecht, 2000.
본 발명이 해결하고자 하는 기술적 과제는 복수의 노드 및 가중치가 부여된 간선을 포함하는 대용량 네트워크를 클러스터링하는 방법 및 장치를 제공하는 것이다.
본 발명이 해결하고자 하는 다른 기술적 과제는 상기 클러스터링을 효율적으로 수행하기 위해 대용량 네트워크를 압축하는 방법 및 장치를 제공하는 것이다.
본 발명이 해결하고자 하는 또 다른 기술적 과제는 상기 클러스터링을 효율적으로 수행하기 위해 병렬 처리 개념이 도입된 클러스터링 방법 및 장치를 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 해결하기 위한 본 발명의 일 실시예에 따른 네트워크 압축 방법은 원본 네트워크를 구성하는 노드 중 압축 대상 노드를 선정하는 제1 단계, 상기 압축 대상 노드와 인접한 이웃 노드 중에서 압축 후보 노드를 선정하되, 상기 이웃 노드는 기 교체된 슈퍼 노드를 포함하는 제2 단계, 상기 압축 대상 노드 및 상기 압축 후보 노드를 하나의 슈퍼 노드로 교체하는 제3 단계 및 상기 제1 내지 제3 단계를 반복 수행하여, 상기 슈퍼 노드를 하나 이상 포함하는 압축 네트워크를 구성하는 단계를 포함할 수 있다.
일 실시예에서, 상기 제2 단계는, 상기 압축 대상 노드와 인접한 이웃 노드 중에서 상기 압축 대상 노드와 상기 이웃 노드를 연결하는 간선의 가중치가 가장 높은 노드를 후보 노드로 선정하는 단계 및 상기 가중치가 동일한 복수의 후보 노드가 존재하는 경우, 선정된 후보 노드 중에서 상기 후보 노드와 상기 후보 노드의 이웃 노드를 연결하는 간선의 가중치의 합이 가장 작은 노드를 상기 압축 후보 노드로 선정하는 단계를 포함할 수 있다.
일 실시예에서, 상기 제3 단계는, 상기 원본 네트워크를 구성하는 노드 중에서 상기 압축 대상 노드 및 상기 압축 후보 노드와 공통으로 연결된 이웃 노드를 선정하는 단계 및 상기 압축 대상 노드, 상기 압축 후보 노드 및 상기 선정된 이웃 노드를 하나의 슈퍼 노드로 교체하는 단계를 포함할 수 있다.
일 실시예에서, 상기 제3 단계는, 상기 원본 네트워크를 구성하는 노드 중에서 상기 압축 대상 노드 또는 상기 압축 후보 노드와 연결된 이웃 노드를 선정하는 단계 및 상기 압축 대상 노드, 상기 압축 후보 노드 및 상기 선정된 이웃 노드를 하나의 슈퍼 노드로 교체하는 단계를 포함하되, 상기 이웃 노드는 상기 압축 대상 노드 또는 상기 압축 후보 노드에 대한 간선만 존재하는 고립된 노드를 포함할 수 있다.
상기 기술적 과제를 해결하기 위한 본 발명의 다른 실시예에 따른 네트워크 클러스터링 방법은 원본 네트워크를 압축하여 압축 네트워크를 구성하되, 상기 압축하는 것은 상기 원본 네트워크를 구성하는 압축 대상 노드와 상기 압축 대상 노드와 인접한 이웃 노드 중에서 선정된 압축 후보 노드를 하나의 슈퍼 노드로 교체하는 것을 포함하고, 상기 이웃 노드는 기 교체된 슈퍼 노드를 포함하는 단계, 상기 압축 네트워크를 제1 클러스터링하는 단계, 상기 제1 클러스터링된 네트워크를 압축 해제하여 중간 네트워크를 구성하는 단계 및 상기 중간 네트워크를 제2 클러스터링하고, 상기 제2 클러스터링된 네트워크를 클러스터링 결과 네트워크로 구성하는 단계를 포함할 수 있다.
상기 기술적 과제를 해결하기 위한 본 발명의 또 다른 실시예에 따른 병렬 처리 방법은 하나 이상의 노드와 간선을 포함하는 네트워크를 CSC(Compressed Sparse Column) 형식의 행렬로 표현하는 단계, 상기 CSC 형식에 포함되는 열 포인터 값을 이용하여 상기 행렬을 열 단위로 분할하는 단계, 상기 열 단위로 분할된 행렬을 입력 값으로 하는 연산을 실행하는 제1 태스크(Task) 및 제2 태스크를 생성하는 단계 및 제1 프로세서 및 제2 프로세서를 포함하는 복수의 프로세서에 의해 상기 태스크를 병렬 처리(Parallel Processing)하는 단계를 포함하되, 상기 병렬 처리하는 단계는 상기 제1 프로세서가 상기 제1 태스크를 처리하고, 상기 제2 프로세서가 동시에 상기 제2 태스크를 처리하는 단계를 포함할 수 있다.
또한, 상기 연산은, 상기 네트워크를 구성하는 노드가 연결된 이웃 노드를 경유하여 다른 노드로 갈 수 있는 확률을 산출하는 연산, 상기 확률 값의 차이를 증폭시키는 연산, 또는 행렬의 열 단위로 기 설정된 값 이하의 확률 값을 삭제하는 연산 중 적어도 하나 이상의 연산을 포함할 수 있다.
상기 기술적 과제를 해결하기 위한 본 발명의 또 다른 실시예에 따른 네트워크 압축 장치는, 하나 이상의 프로세서, 네트워크 인터페이스, 상기 프로세서에 의하여 수행되는 컴퓨터 프로그램을 로드(Load)하는 메모리 및 대용량 네트워크 데이터 및 상기 컴퓨터 프로그램을 저장하는 스토리지를 포함하되, 상기 컴퓨터 프로그램은, 원본 네트워크를 구성하는 노드 중 압축 대상 노드를 선정하는 제1 오퍼레이션; 상기 압축 대상 노드와 인접한 이웃 노드 중에서 압축 후보 노드를 선정하되, 상기 이웃 노드는 기 교체된 슈퍼 노드를 포함하는 제2 오퍼레이션, 상기 압축 대상 노드 및 상기 압축 후보 노드를 하나의 슈퍼 노드로 교체하는 제3 오퍼레이션 및 상기 제1 내지 제3 단계를 반복 수행하여, 상기 슈퍼 노드를 하나 이상 포함하는 압축 네트워크를 구성하는 오퍼레이션을 포함할 수 있다.
상기 기술적 과제를 해결하기 위한 본 발명의 또 다른 실시예에 따른 네트워크 클러스터링 장치는, 하나 이상의 프로세서, 네트워크 인터페이스, 상기 프로세서에 의하여 수행되는 컴퓨터 프로그램을 로드(Load)하는 메모리 및 대용량 네트워크 데이터 및 상기 컴퓨터 프로그램을 저장하는 스토리지를 포함하되, 상기 컴퓨터 프로그램은, 원본 네트워크를 압축하여 압축 네트워크를 구성하되, 상기 압축하는 것은 상기 원본 네트워크를 구성하는 압축 대상 노드와 상기 압축 대상 노드와 인접한 이웃 노드 중에서 선정된 압축 후보 노드를 하나의 슈퍼 노드로 교체하는 것을 포함하고, 상기 이웃 노드는 기 교체된 슈퍼 노드를 포함하는 오퍼레이션, 상기 압축 네트워크를 제1 클러스터링하는 오퍼레이션, 상기 제1 클러스터링된 네트워크를 압축 해제하여 중간 네트워크를 구성하는 오퍼레이션 및 상기 중간 네트워크를 제2 클러스터링하고, 상기 제2 클러스터링된 네트워크를 클러스터링 결과 네트워크로 구성하는 오퍼레이션을 포함할 수 있다.
상기 기술적 과제를 해결하기 위한 본 발명의 또 다른 실시예에 따른 병렬 처리 시스템은 제1 프로세서 및 제2 프로세서를 포함하는 복수의 프로세서, 네트워크 인터페이스, 상기 프로세서에 의하여 수행되는 컴퓨터 프로그램을 로드(Load)하는 메모리 및 상기 컴퓨터 프로그램을 저장하는 스토리지를 포함하되, 상기 컴퓨터 프로그램은, 하나 이상의 노드와 간선을 포함하는 네트워크를 CSC(Compressed Sparse Column) 형식의 행렬로 표현하는 오퍼레이션, 상기 CSC 형식에 포함되는 열 포인터 값을 이용하여 상기 행렬을 열 단위로 분할하는 오퍼레이션, 상기 열 단위로 분할된 행렬을 입력 값으로 하는 연산을 실행하는 제1 태스크(Task) 및 제2 태스크를 생성하는 오퍼레이션 및 상기 복수의 프로세서에 의해 상기 제1 태스크 및 상기 제2 태스크를 병렬 처리(Parallel Processing)하는 오퍼레이션을 포함하되, 상기 병렬 처리하는 오퍼레이션은 상기 제1 프로세서가 상기 제1 태스크를 처리하고, 상기 제2 프로세서가 동시에 상기 제2 태스크를 처리하는 오퍼레이션을 포함할 수 있다.
상술한 본 발명에 따르면, 중간 네트워크에 대해 클러스터링을 수행하기 전에 압축 네트워크에 대하여 소정의 클러스터링을 수행함으로써 대용량 네트워크의 클러스터링 성능을 향상시킬 수 있다.
또한, 네트워크 상의 인접한 두 노드와 소정의 조건을 만족하는 주변 노드를 포함하여 압축함으로써 압축 성능을 향상시키고, 네트워크 구조에 따라 클러스터링의 정확도 또한 향상시킬 수 있다.
또한, 행렬 연산으로 수행되는 클러스터링 단계를 열 단위로 병렬 처리함으로써 대용량 네트워크에 대한 클러스터링 성능 측면에서의 확장성을 제공할 수 있다.
또한, 네트워크를 표현하는 통상적인 인접 행렬 대신 희소 행렬을 표현하는 방식을 적용함으로써 대용량 네트워크의 메모리 공간을 최소화하고 공간 측면에서 확장성을 제공할 수 있다.
본 발명의 효과들은 이상에서 언급한 효과들로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
도 1은 실세계의 대용량 네트워크의 데이터셋의 예시도이다.
도 2는 네트워크 클러스터링의 개념을 설명하기 위한 도면이다.
도 3a 내지 도 3c는 대용량 네트워크 구조로 표현될 수 데이터의 예시도이다.
도 4는 본 발명의 일 실시예에 따른 네트워크 클러스터링 기능이 구비된 컴퓨팅 장치의 하드웨어 구성도이다.
도 5는 본 발명의 다른 실시예에 따른 네트워크 클러스터링 기능이 구비된 컴퓨팅 장치의 기능블록도이다.
도 6은 본 발명의 또 다른 실시예에 따른 네트워크 클러스터링 방법의 순서도이다.
도 7a 내지 도 7c는 네트워크 압축의 개념을 설명하기 위한 도면이다.
도 8 내지 도 12는 도 6에 도시된 네트워크 압축 단계를 설명하기 위한 도면이다.
도 13은 도 6에 도시된 네트워크 압축 단계에 대한 의사코드의 예시도이다.
도 14는 도 6에 도시된 제1 클러스터링 단계에 대한 상세 순서도이다.
도 15 내지 도 17은 도 14에 도시된 제1 클러스터링하는 단계의 세부 단계를 설명하기 위한 도면이다.
도 18은 도 6에 도시된 네트워크 압축 해제 단계를 설명하기 위한 도면이다.
도 19는 도 6에 도시된 제2 클러스터링하는 단계에 대한 상세 순서도이다.
도 20a 내지 도 20c는 본 발명의 몇몇 실시예에서 이용될 수 있는 병렬 처리 개념 및 희소 행렬 표현 방식을 설명하기 위한 도면이다.
도 21은 본 발명의 몇몇 실시예에서 이용될 수 있는 병렬화된 클러스터링 방법에 대한 의사코드의 예시도이다.
도 22a 내지 도 22d는 본 발명에 따라 네트워크 클러스터링이 수행되는 예제를 설명하기 위한 도면이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명한다. 본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 게시되는 실시예에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시 예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 공통으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다. 본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다.
명세서에서 사용되는 "포함한다 (comprises)" 및/또는 "포함하는 (comprising)"은 언급된 구성 요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성 요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.
먼저, 본 발명에 대해 구체적으로 설명하기에 앞서 이해의 편의를 제공하기 위해 네트워크 클러스터링의 개념 및 활용예에 대하여 도 2 및 도 3을 참조하여 간략하게 설명한다.
도 2를 참조하면, 복잡하고 무질서한 형태의 네트워크가 점차 단순화되면서 특정한 노드의 그룹이 형성되는 것을 볼 수 있다. 네트워크 클러스터링을 통해 형성된 노드의 그룹은 클러스터(Cluster)로 명명되며, 상기 클러스터는 일반적으로 가치 있는 정보를 담고 있기 때문에 네트워크 클러스터링 기술은 대용량 네트워크 형태를 가지는 빅데이터의 분석에 주로 이용된다. 네트워크 클러스터링은 이와 같이 복수의 노드와 간선으로 구성된 네트워크로부터 관련성이 높은 노드의 그룹을 발견하는 작업 또는 관련성 높은 노드를 하나의 그룹으로 묶어 복잡한 네트워크를 단순화하는 작업으로 이해될 수 있다.
참고로, 상기 관련성은 네트워크 구조의 특성 상 간선의 개수 또는 간선의 가중치와 비례할 수 있다. 즉, 많은 간선을 포함하거나, 가중치가 큰 간선을 포함하는 노드의 그룹은 관련성이 높은 노드의 그룹인 클러스터를 형성할 수 있으며, 역으로 네트워크 클러스터링은 간선의 개수 및 가중치를 고려하여 수행될 수 있다.
한편, 네트워크는 간선에 가중치(Weight)가 부여된 그래프를 의미한다. 단, 간선에 가중치가 부여되지 않은 그래프도 모든 간선에 동일한 가중치가 부여된 그래프로 볼 수 있으므로, 본 명세서에서 이용되는 네트워크는 간선에 가중치가 부여되지 않은 그래프의 개념을 포함함에 유의해야 한다. 또한, 상기 그래프는 방향 그래프 및 무방향 그래프를 모두 포함하는 개념이나, 다른 언급이 없는 한 무방향 그래프를 전제로 설명한다.
다음으로, 도 3a 내지 도 3c에 도시된 대용량 네트워크의 예시도를 참고하여 네트워크 클러스터링의 활용예에 대하여 설명한다.
먼저, 도 3a는 사용자와 사용자 사이의 관계망인 소셜 네트워크를 도시한다. 도 3a에 도시된 소셜 네트워크 데이터는 네트워크 연결구조 및 연결 강도 등을 바탕으로 클러스터링을 수행함으로써 소셜 네트워크 상에서 입소문의 중심이나 허브 역할을 하는 사용자인 인플루언서(Influencer)를 찾는데 활용될 수 있다. 또한, 형성된 클러스터의 크기를 이용하여 인플루언서의 영향력을 측정할 수도 있다. 네트워크 클러스터링을 통해 발견된 인플루언서는 특히 마케팅 분야에서 중요하게 이용될 수 있다.
다음으로, 도 3b는 복수의 라우터, 스위치 및 단말로 구성되는 인터넷 토폴로지(Topology)를 도시한다. 인터넷 토폴로지는 각 라우터, 스위치 및 단말이 노드가 되고 링크가 간선이 되어 대용량 네트워크를 구성할 수 있다. 또한, 각 링크에 대한 트래픽이 간선의 가중치로 주어지는 경우, 네트워크 클러스터링 기술은 주어진 인터넷 토폴로지의 트래픽 분석을 하는데 이용될 수 있다.
마지막으로, 도 3c는 단백질 간의 상호 작용을 나타내는 PPI(Protein-Protein Interaction) 네트워크를 도시한다. 생물학적 네트워크 중 하나인 PPI 네트워크에 클러스터링 기술을 적용함으로써 특정 기능을 발현하는 단백질 그룹을 발견하는데 이용될 수 있다. 예를 들어, 네트워크 클러스터링 기술은 특정 질병을 일으키는 단백질을 발견하는데 이용될 수 있다. 또는 복잡한 구조를 갖는 물질의 단백질 구조를 파악하기 위해 네트워크 클러스터링 기술이 이용될 수 있다.
도 3a 내지 도 3c에 도시된 대용량 네트워크의 외에도 네트워크는 일반화된 자료구조이기 때문에 연결 관계를 갖는 모든 데이터는 네트워크 구조로 표현될 수 있다. 예를 들어, 소프트웨어의 흐름도, 화학 구조식 등과 같은 데이터도 네트워크 형태로 표현될 수 있다. 따라서, 네트워크 클러스터링 기술의 적용 예는 매우 다양할 수 있으며 그 중요도 또한 매우 높다고 볼 수 있다.
이하, 상술한 네트워크 클러스터링을 수행하는 본 발명에 대하여 첨부된 도면에 따라 보다 상세히 설명한다.
먼저, 도 4 및 도 5를 참조하여 본 발명의 일 실시예에 따른 네트워크 클러스터링 장치(400)의 세부 구성 및 동작에 대하여 설명한다.
도 4는 본 발명의 일 실시예에 따른 네트워크 클러스터링 장치(400)의 하드웨어 구성도이다.
도 4를 참조하면, 네트워크 클러스터링 장치(400)는 하나 이상의 프로세서(410), 네트워크 인터페이스(470), 프로세서(410)에 의하여 수행되는 컴퓨터 프로그램을 로드(load)하는 메모리(430)와, 네트워크 클러스터링 소프트웨어(491) 및 대용량 네트워크 데이터(493)를 저장하는 스토리지(490)를 포함할 수 있다. 다만, 도 4에는 본 발명의 실시예와 관련 있는 구성요소들만이 도시되어 있다. 따라서, 본 발명이 속한 기술분야의 통상의 기술자라면 도 4에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음을 알 수 있다.
프로세서(410)는 네트워크 클러스터링 장치(400)의 각 구성의 전반적인 동작을 제어한다. 프로세서(410)는 CPU(Central Processing Unit), MPU(Micro Processor Unit), MCU(Micro Controller Unit), 또는 본 발명의 기술 분야에 잘 알려진 임의의 형태의 프로세서를 포함하여 구성될 수 있다. 또한, 프로세서(410)는 본 발명의 실시예들에 따른 방법을 실행하기 위한 적어도 하나의 애플리케이션 또는 프로그램에 대한 연산을 수행할 수 있다.
네트워크 인터페이스(470)는 네트워크 클러스터링 장치(400)의 유무선 인터넷 통신을 지원한다. 또한, 네트워크 인터페이스(470)는 인터넷 통신 외의 다양한 통신 방식을 지원할 수도 있다. 이를 위해, 네트워크 인터페이스(470)는 본 발명의 기술 분야에 잘 알려진 통신 모듈을 포함하여 구성될 수 있다.
메모리(430)는 각종 데이터, 명령 및/또는 정보를 저장한다. 메모리(430)는 본 발명의 실시예들에 따른 네트워크 클러스터링 방법을 실행하기 위하여 스토리지(490)로부터 하나 이상의 프로그램(491)을 로드할 수 있다. 도 4에서 메모리(430)의 예시로 RAM이 도시되었다.
스토리지(490)는 상기 하나 이상의 프로그램(491) 및 대용량 네트워크 데이터(493)를 비임시적으로 저장할 수 있다. 도 4에서 상기 하나 이상의 프로그램(491)의 예시로 네트워크 클러스터링 소프트웨어(493)가 도시되었다.
스토리지(490)는 ROM(Read Only Memory), EPROM(Erasable Programmable ROM), EEPROM(Electrically Erasable Programmable ROM), 플래시 메모리 등과 같은 비휘발성 메모리, 하드 디스크, 착탈형 디스크, 또는 본 발명이 속하는 기술 분야에서 잘 알려진 임의의 형태의 컴퓨터로 읽을 수 있는 기록 매체를 포함하여 구성될 수 있다.
네트워크 클러스터링 소프트웨어(491)는 메모리(430)에 로드되어, 하나 이상의 프로세서(410)에 의해, 원본 네트워크를 압축하여 압축 네트워크를 구성하되, 상기 압축하는 것은 상기 원본 네트워크를 구성하는 압축 대상 노드와 상기 압축 대상 노드와 인접한 이웃 노드 중에서 선정된 압축 후보 노드를 하나의 슈퍼 노드로 교체하는 것을 포함하고, 상기 이웃 노드는 기 교체된 슈퍼 노드를 포함하는 오퍼레이션(431), 상기 압축 네트워크를 제1 클러스터링하는 오퍼레이션(433), 상기 제1 클러스터링된 네트워크를 압축 해제하여 중간 네트워크를 구성하는 오퍼레이션(435) 및 상기 중간 네트워크를 제2 클러스터링하고, 상기 제2 클러스터링된 네트워크를 클러스터링 결과 네트워크로 구성하는 오퍼레이션(437)을 수행할 수 있다.
상기 슈퍼 노드는 인접한 복수의 노드의 매핑 정보를 갖고 있는 가상의 노드(Virtual Node)를 의미할 수 있고, 상기 원본 네트워크는 압축이 수행되기 전의 네트워크를 의미할 수 있으며, 상기 압축 네트워크는 하나 이상의 슈퍼 노드를 포함하여 구성될 수 있는 네트워크를 의미할 수 있다. 또한, 상기 중간 네트워크는 압축이 해제된 네트워크로 슈퍼 노드를 포함하지 않고, 상기 원본 네트워크와 동일한 크기를 갖는 네트워크를 의미할 수 있다. 단, 상기 중간 네트워크는 구현 방식에 따라 원본 네트워크와 간선의 연결 관계가 달라 질 수 있다.
한편, 본 발명의 다른 실시예에 따르면 상기 압축 네트워크를 구성하는 기능을 수행하는 네트워크 압축 장치가 실시될 수 있다. 또한, 상기 네트워크 압축 장치는, 하나 이상의 프로세서, 네트워크 인터페이스, 상기 프로세서에 의하여 수행되는 컴퓨터 프로그램을 로드(Load)하는 메모리 및 대용량 네트워크 데이터 및 상기 컴퓨터 프로그램을 저장하는 스토리지를 포함하되, 상기 컴퓨터 프로그램은, 원본 네트워크를 구성하는 노드 중 압축 대상 노드를 선정하는 제1 오퍼레이션, 상기 압축 대상 노드와 인접한 이웃 노드 중에서 압축 후보 노드를 선정하되, 상기 이웃 노드는 기 교체된 슈퍼 노드를 포함하는 제2 오퍼레이션, 상기 압축 대상 노드 및 상기 압축 후보 노드를 하나의 슈퍼 노드로 교체하는 제3 오퍼레이션 및 상기 제1 내지 제3 단계를 반복 수행하여, 상기 슈퍼 노드를 하나 이상 포함하는 압축 네트워크를 구성하는 오퍼레이션을 포함할 수 있다.
또한, 상기 제3 오퍼레이션은 상기 원본 네트워크를 구성하는 노드 중에서 상기 압축 대상 노드 및 상기 압축 후보 노드와 공통으로 연결된 이웃 노드를 선정하는 오퍼레이션 및 상기 압축 대상 노드, 상기 압축 후보 노드 및 상기 선정된 이웃 노드를 하나의 슈퍼 노드로 교체하는 오퍼레이션을 포함할 수 있다.
또한, 상기 제3 오퍼레이션은, 상기 원본 네트워크를 구성하는 노드 중에서 상기 압축 대상 노드 또는 상기 압축 후보 노드와 연결된 이웃 노드를 선정하는 오퍼레이션 및 상기 압축 대상 노드, 상기 압축 후보 노드 및 상기 선정된 이웃 노드를 하나의 슈퍼 노드로 교체하는 오퍼레이션을 포함할 수도 있으며, 여기서 상기 이웃 노드는 상기 압축 대상 노드 또는 상기 압축 후보 노드에 대한 간선만 존재하는 고립된 노드일 수 있다.
다음으로, 도 5는 본 발명의 다른 실시예에 따른 네트워크 클러스터링 장치(400)의 기능블록도이다.
도 5를 참조하면, 네트워크 클러스터링 장치(400)는 네트워크 압축부(510), 네트워크 클러스터링부(550) 및 네트워크 압축 해제부(530)를 포함할 수 있다. 다만, 도 5에는 본 발명의 실시예와 관련 있는 구성요소들만이 도시되어 있다. 따라서, 본 발명이 속한 기술분야의 통상의 기술자라면 도 5에 도시된 구성요소들 외에 다른 범용적인 구성 요소들이 더 포함될 수 있음을 알 수 있다.
또한, 네트워크 클러스터링 장치(400)의 각 기능은 도 4에 도시된 네트워크 클러스터링 장치(400)의 프로세서(410)에 의해 수행될 수 있다.
각 구성 요소를 살펴보면, 네트워크 압축부(510)는 제공된 원본 네트워크를 압축하여 압축 네트워크를 구성하는 기능을 수행할 수 있다. 상기 압축(Coarsening)은 인접한 복수의 노드를 하나의 슈퍼 노드로 매핑함으로써 네트워크의 노드 및 간선의 개수를 줄이는 것을 의미한다. 네트워크 압축부(510)는 기 설정된 조건을 만족할 때까지 여러 단계에 걸쳐 압축을 수행할 수 있고, 압축 네트워크를 클러스터링하기 위해 네트워크 클러스터링부(550)로 압축 네트워크를 제공할 수 있다. 네트워크 압축부(510)가 수행하는 네트워크 압축 방법에 대한 상세한 설명은 도 7 내지 도 13을 참고하여 후술한다.
네트워크 압축 해제부(530)는 압축 네트워크의 압축을 해제하여 원본 네트워크 크기의 중간 네트워크를 구성하는 기능을 수행할 수 있다. 네트워크 압축 해제부(530)가 수행하는 네트워크 압축 해제 방법은 네트워크 압축부(510)가 압축 수행 시 보관한 정보를 이용하여 수행될 수 있으며 이에 대한 상세한 설명은 도 18을 참고하여 후술한다.
마지막으로, 네트워크 클러스터링부는(550)는 네트워크 압축부(510) 또는 네트워크 압축 해제부(530)로부터 제공받은 압축 네트워크 또는 중간 네트워크를 클러스터링하는 기능을 수행한다. 네트워크 클러스터링부(550)는 기 설정된 조건을 만족할 때까지 여러 단계에 걸쳐 반복하여 클러스터링을 수행할 수 있고, 하나 이상의 클러스터를 포함하는 클러스터링 결과 네트워크를 구성하여 제공할 수 있다. 네트워크 클러스터링부(500)가 수행하는 네트워크 클러스터링 방법에 대한 상세한 설명은 도 14 내지 도 17을 참조하여 후술한다.
참고로, 네트워크 클러스터링 장치(400)는 원본 네트워크의 크기를 고려하여 네트워크 압축 및 압축 해제 기능을 수행하지 않고 원본 네트워크에 대하여 바로 클러스터링을 수행할 수도 있다. 일정 크기 이상의 네트워크가 아닌 경우 후술할 병렬 처리 기법만을 이용하여 클러스터링을 수행하더라도 소정의 확장성을 제공할 수 있기 때문이다. 상기 병렬 처리에 관한 사항은 도 20a 내지 도 20c를 참고하여 후술한다.
한편, 도 5에 도시되지는 않았으나 네트워크 클러스터링 장치(400)는 네트워크 생성부를 추가로 포함할 수 있다. 네트워크 생성부는 제공된 데이터셋이 네트워크 형식이 아닌 경우, 제공된 데이터셋을 이용하여 원본 네트워크를 생성하는 기능을 수행할 수 있다. 예를 들어, 복수의 웹 페이지를 포함하는 웹 서비스와 해당 웹 페이지를 클릭한 사용자의 방문 횟수 등의 데이터셋이 제공된 경우, 네트워크 생성부는 각 웹 페이지에 해당하는 노드를 생성하고 웹 페이지 간 링크(Link)를 이용하여 간선을 생성하며, 웹 페이지의 링크를 클릭한 사용자의 방문 횟수를 간선의 가중치로 하여 원본 네트워크를 생성할 수 있다.
지금까지 설명한 도 5의 각 구성 요소는 소프트웨어(Software) 또는, FPGA(Field Programmable Gate Array)나 ASIC(Application-Specific Integrated Circuit)과 같은 하드웨어(Hardware)를 의미할 수 있다. 그렇지만, 상기 구성 요소들은 소프트웨어 또는 하드웨어에 한정되는 의미는 아니며, 어드레싱(Addressing)할 수 있는 저장 매체에 있도록 구성될 수도 있고, 하나 또는 그 이상의 프로세서들을 실행시키도록 구성될 수도 있다. 상기 구성 요소들 안에서 제공되는 기능은 더 세분화된 구성 요소에 의하여 구현될 수 있으며, 복수의 구성 요소들을 합하여 특정한 기능을 수행하는 하나의 구성 요소로 구현될 수도 있다.
이하, 도 6 내지 도 22를 참고하여 본 발명의 또 다른 실시예에 따른 네트워크 클러스터링 방법에 대하여 상세히 설명한다. 이후, 설명의 편의를 위해, 상기 네트워크 클러스터링 방법에 포함되는 각 동작의 주체는 그 기재가 생략될 수도 있으며, 참조 도면에 가중치가 부여되지 않은 네트워크가 도시된 경우 동일한 가중치가 부여된 것을 전제로 설명함에 유의한다.
도 6은 본 발명에 따른 네트워크 클러스터링 방법의 순서도이다.
도 6을 참조하면, 네트워크 클러스터링 장치(400)의 네트워크 압축부(510)는 제공된 원본 네트워크를 압축하여 압축 네트워크를 구성한다(S610). 상기 압축 네트워크를 구성하기 위하여 네트워크 압축부(510)는 기 설정된 조건을 만족할 때까지 원본 네트워크 또는 기 압축 네트워크에 대해 반복하여 압축을 수행할 수 있다. 예를 들어, 네트워크 압축부(510)는 기 설정된 횟수만큼 원본 네트워크에 대해 반복하여 압축을 수행하거나, 압축 네트워크가 원본 네트워크의 크기의 절반 또는 그 이하가 되는 등의 압축률 조건을 만족할 때까지 반복하여 압축을 수행할 수 있다. 또한, 네트워크 압축부(510)는 상기 압축 네트워크의 노드의 개수 또는 간선의 개수가 기 설정된 값보다 작아질 때까지 반복하여 압축을 수행할 수도 있다.
네트워크 압축부(510)는 노드와 슈퍼 노드의 매핑 정보와 같이 네트워크 압축 해제에 필요한 정보의 일부 또는 전부를 보관할 수 있다. 또한, 상기의 정보를 네트워크 압축 해제 단계(S650)를 수행하는 네트워크 압축 해제부(530)에 제공할 수 있다.
다음으로, 네트워크 클러스터링부(550)는 압축 네트워크에 대하여 클러스터링(이하 '제1 클러스터링')을 수행한다(S630). 압축 네트워크는 원본 네트워크에 비해 노드 및 간선의 수가 훨씬 적으므로, 네트워크 클러스터링부(550)는 빠르게 제1 클러스터링을 수행할 수 있다.
제1 클러스터링이 수행된 다음 네트워크 압축 해제부(530)는 제1 클러스터링된 네트워크의 압축을 해제하여 원본 네트워크의 크기로 중간 네트워크를 구성한다(S650). 네트워크 압축 해제부(530)는 네트워크 압축 단계(S610)에서 보관된 정보를 기반으로 압축 해제를 수행할 수 있다. 따라서, 네트워크 압축 단계(S610)에서 네트워크 압축부(510)가 슈퍼 노드 매핑 정보 등을 포함한 모든 정보를 보관하는 경우 중간 네트워크는 원본 네트워크와 동일하게 구성될 수 있으나, 일부 정보만을 보관하는 경우 중간 네트워크는 원본 네트워크와 간선의 연결 관계가 달라질 수 있다. 참고로, 네트워크 클러스터링 장치(400)가 대용량 네트워크에 대한 확장성을 제공하기 위해서는 압축 단계에서 일부 정보만을 보관하는 것이 바람직할 수 있다.
다음으로, 네트워크 클러스터링부(550)는 중간 네트워크에 대하여 클러스터링(이하 '제2 클러스터링')을 수행한다(S670). 네트워크 클러스터링부(550)가 제2 클러스터링을 수행하는 이유는 압축 네트워크에 대하여 제1 클러스터링만을 수행하는 경우 클러스터링의 정확도가 떨어질 수 있기 때문이다. 즉, 압축 네트워크에 대하여 수행되는 제1 클러스터링 단계(S630)는 빠르게 수행될 수 있으나, 상기 제1 클러스터링 단계가 반복될수록 클러스터링 결과의 정확도는 저하될 수 있다. 따라서, 네트워크 클러스터링부(550)는 제1 클러스터링 단계(S630)를 일정 횟수로 제한하여 수행하고, 중간 네트워크에 대한 제2 클러스터링 단계(S670)를 주된 클러스터링 단계로 수행함으로써 상기 클러스터링 결과의 정확도를 보정할 수 있다.
네트워크 클러스터링부(550)가 전체 클러스터링 단계를 제1 클러스터링 단계(S630) 및 제2 클러스터링 단계(S670)로 나누어 수행하는 것은 다음과 같은 성능 향상 효과를 창출할 수 있다. 제1 클러스터링 단계는 상술한 바와 같이 크기가 작은 압축 네트워크에 대해 수행되기 때문에 성능이 향상될 수 있고, 제2 클러스터링 단계는 클러스터링이 일부 수행된 네트워크인 중간 네트워크를 이용함으로써 원본 네트워크를 클러스터링하는 것보다 더 적은 횟수의 클러스터링 단계만으로 결과 네트워크를 구성할 수 있기 때문에 성능이 향상될 수 있다. 즉, 네트워크 클러스터링부(550)는 전체 클러스터링 단계를 상기 제1 클러스터링 및 상기 제2 클러스터링으로 나누어 수행함으로써 성능 측면에서 대용량 네트워크에 대한 소정의 확장성을 제공할 수 있다.
한편, 원본 네트워크의 크기, 요구되는 클러스터링의 정확도 등의 요인을 고려하여 네트워크 클러스터링 장치(400)는 전체 클러스터링 단계를 2 단계로 나누어 수행하지 않고 원본 네트워크에 대하여 바로 클러스터링을 수행하거나, 압축 네트워크에 대해서만 클러스터링을 수행할 수도 있으며, 이는 구현 방식의 차이에 불과할 수 있다.
지금까지 도 6을 참고하여 네트워크 클러스터링 장치(400)가 대용량 네트워크에 대하여 클러스터링을 하는 방법에 대하여 설명하였다. 상술한 네트워크 클러스터링 방법에 따르면, 네트워크 클러스터링 장치(400)는 전체 클러스터링 단계를 2 단계로 나누어 수행함으로써 성능 측면에서 보다 효율적으로 클러스터링을 수행할 수 있다.
이하도 7 내지 도 13을 참조하여도 6에 도시된 네트워크 압축 단계(S610)를 상세히 설명한다
도 7a 내지 도 7c는 네트워크 압축부(510)가 수행하는 네트워크 압축의 개념을 설명하기 위한 도면이다. 보다 자세하게는, 도 7a는 압축이 수행되기 전의 원본 네트워크를 도시하고, 도 7b는 압축 수행 과정 중의 네트워크를 도시하며, 도 7c는 압축 네트워크를 도시한다.
도 7a 내지 도 7c를 참조하여 압축 과정을 살펴보면, 네트워크 압축부(510)는 원본 네트워크를 구성하는 6개의 노드를 인접한 노드 별로 하나의 슈퍼 노드로 대응할 수 있다. 자세히 말하면, 네트워크 압축부(510)는 인접한 노드(1, 4)를 슈퍼 노드(A)로 대응할 수 있고, 인접한 노드(2, 3)를 슈퍼 노드(B)로 대응할 수 있다. 또한, 네트워크 압축부(510)는 인접한 노드(5, 6)를 슈퍼 노드(C)로 대응할 수 있다. 상기 슈퍼 노드는 전술한 바와 같이 인접한 노드의 매핑 정보를 담고 있는 가상의 노드를 의미할 수 있다.
네트워크 압축부(510)는 슈퍼 노드를 이용하여 원본 네트워크를 도 7c에 도새된 압축 네트워크로 구성할 수 있다. 즉, 네트워크 압축부(510)는 6개의 노드와 7개의 간선으로 구성되는 원본 네트워크의 노드를 대응되는 슈퍼 노드로 교체함으로써 3 개의 슈퍼 노드와 2 개의 간선만을 갖는 압축 네트워크로 구성할 수 있다.
다음으로 도 8 및 도 9를 참조하여 도 6에 도시된 네트워크 압축 단계(S610)에 대하여 상세히 설명한다.
도 8을 참조하면, 네트워크 압축부(510)는 원본 네트워크를 구성하는 노드 중에서 슈퍼 노드에 교체되지 않은 '압축 대상 노드'를 임의로 선정할 수 있다(S810). 즉, 압축 대상 노드는 현재 압축 단계에서 압축이 수행되지 않은 노드 중에서 임의로 선택되는 노드를 의미할 수 있다. 압축 대상 노드 선정 시 슈퍼 노드를 제외하는 이유는 네트워크 구조에 관계없이 균일하게 압축을 수행하기 위해서이다. 단, 구현 방식에 따라 네트워크 압축부(510)는 슈퍼 노드를 포함하여 압축 대상 노드를 선정할 수도 있다.
압축 대상 노드를 선정한 후, 네트워크 압축부(510)는 압축 대상 노드와 인접한 이웃 노드 중에서 기 설정된 기준에 따라 '압축 후보 노드'를 선정하고, 압축 대상 노드와 압축 후보 노드를 하나의 슈퍼 노드로 교체함으로써 원본 네트워크를 압축할 수 있다(S830, S850).
네트워크 압축부(510)는 상술한 압축 대상 노드 선정 단계(S810), 압축 후보 노드 선정 단계(S830) 및 슈퍼 노드 교체 단계(S850)를 원본 네트워크를 구성하는 각 노드에 대하여 반복하여 수행함으로써 상기 슈퍼 노드를 하나 이상 포함하는 압축 네트워크를 구성할 수 있다.
또한, 상기 3 단계(S810, S830, S850)를 '노드 단위 압축 단계'라고 하고, 원본 네트워크를 구성하는 각 노드에 대하여 상기 노드 단위 압축 단계를 반복하여 수행하는 것이 '네트워크 단위 압축 단계'라고 할 때, 네트워크 압축부(510)는 전술한 바와 같이 기 설정된 조건을 만족할 때까지 상기 노드 단위 압축 단계 또는 상기 네트워크 단위 압축 단계를 반복하여 수행할 수 있다. 상기 조건은 노드 단위 압축 단계 또는 네트워크 단위 압축 단계의 반복 횟수, 압축률, 압축 네트워크를 구성하는 노드의 개수 등으로 다양하게 설정될 수 있다.
지금까지 네트워크 압축부(510)가 수행하는 전반적인 네트워크 압축 방법에 대하여 설명하였다. 다음으로, 도 9를 참조하여 압축 후보 노드를 선정하는 단계(S830)의 세부 단계에 대하여 상세히 설명한다.
네트워크 압축부(510)는 압축 대상 노드와 인접한 이웃 노드의 가중치와 차수를 기준으로 압축 후보 노드를 선정할 수 있다. 네트워크에서 간선에 부여된 가중치와 간선의 개수를 의미하는 노드의 차수가 노드 사이의 연결 관계의 유무 및 연결성의 강약을 판단하는 기준이 될 수 있기 때문이다.
도 9를 참조하여 부연 설명하면, 네트워크 압축부(510)는 먼저 압축 대상 노드와 인접한 이웃 노드 중에서 간선의 가중치가 가장 높은 노드(NW)를 압축 후보 노드로 선정할 수 있다(S910, S920, S930). 간선의 가중치가 가장 높은 노드가 복수 개 존재하는 경우, 네트워크 압축부(510)는 추가로 노드의 차수를 고려하여 간선의 가중치가 가장 높은 이웃 노드 중에서 노드의 차수가 가장 낮은 노드(ND)를 압축 후보 노드로 선정할 수 있다(S940, S950, S960). 노드의 차수가 낮은 노드는 상대적으로 압축 대상 노드와 연결성이 강하고 압축 대상 노드 외의 다른 노드와는 연결성이 약한 노드라는 것을 의미하기 때문이다. 만약, 노드의 차수가 가장 낮은 이웃 노드도 복수 개 존재하는 경우, 네트워크 압축부(510)는 노드의 차수가 가장 낮은 복수의 이웃 노드 중에서 임의의 노드(NR)를 압축 후보 노드로 선정할 수 있다(S950, S970).
참고로, 네트워크 압축부(510)는 압축 대상 노드와 연결성이 강하고 압축 대상 노드 외의 다른 노드와 연결성이 약한 노드를 압축 후보 노드로 선정하기 위해 압축 대상 노드의 이웃 노드가 갖는 간선의 가중치를 추가로 고려할 수도 있다. 예를 들어, 네트워크 압축부(510)는 간선의 가중치가 가장 높은 이웃 노드가 복수 개 존재하는 경우, 복수의 이웃 노드 중에서 상기 이웃 노드가 갖는 간선의 가중치의 합이 가장 작은 노드를 압축 후보 노드로 선정할 수 있다.
또한, 네트워크 압축부(510)는 간선의 가중치가 기 설정된 값 이상인 이웃 노드 중에서 상기 이웃 노드가 갖는 간선의 가중치의 합이 가장 작은 노드를 압축 후보 노드로 선정하거나 압축 대상 노드가 갖는 간선의 가중치와 상기 간선으로 연결된 이웃 노드가 갖는 간선의 가중치 합의 차이가 가장 큰 이웃 노드를 압축 후보 노드로 설정할 수 도 있다.
한편, 네트워크 압축부(510)가 압축 후보 노드 선정 시 고려하는 압축 대상 노드의 이웃 노드는 기 교체된 슈퍼 노드를 포함할 수 있다. 즉, 네트워크 압축부(510)는 압축 대상 노드와 인접한 이웃 노드 중에 기 교체된 슈퍼 노드가 존재하고 상기 슈퍼 노드가 기 설정된 선정 기준을 만족하는 경우 상기 슈퍼 노드를 압축 후보 노드로 선정할 수 있다. 이와 같이 네트워크 압축부(510)가 슈퍼 노드를 포함하여 압축 후보 노드를 선정하는 경우, 네트워크 구조에 따라 연결성이 강한 노드의 그룹이 하나의 슈퍼 노드로 매핑될 수 있기 때문에 클러스터링의 정확도가 향상되고, 압축 성능 또한 향상될 수 있는데 이와 같은 경우를 도 10a 내지 도 10c에 도시된 예를 참조하여 설명한다. 도 10a 내지 도 10c에서 타원 또는 원 형태의 도형으로 묶인 노드는 동일한 슈퍼 노드로 매핑된 노드를 의미한다.
먼저 도 10a를 참조하면, 도 10a는 제공된 원본 네트워크가 이상적으로 압축된 경우를 도시한다. 상기 원본 네트워크는 6 개의 노드(1 내지 6)로 구성되어 있고, 원본 네트워크 상의 노드(1 내지 3)와 노드(4 내지 6)는 단절점을 포함하지 않는 최대 부분 그래프인 이중결합 요소(Bi-connected Component)를 구성하므로 강한 연결성을 가지고 있음을 알 수 있다. 이에 반해, 원본 네트워크 상의 노드(3, 4)를 연결하는 간선은 브릿지(Bridge) 역할을 하는 간선이므로 노드(3, 4)는 상대적으로 연결성이 약한 것을 알 수 있다. 따라서, 노드(1 내지 3)와 노드(4 내지 6)를 각각 하나의 슈퍼 노드(1001, 1003)로 교체하는 경우 상기 원본 네트워크는 이상적으로 압축되었다고 볼 수 있다.
도 10b는 슈퍼 노드를 제외하고 압축 후보 노드를 선정하는 경우를 도시한다. 먼저 도 10b의 상단에 도시된 바와 같이, 네트워크 압축부(510)는 네트워크를 구성하는 노드(1, 2)를 슈퍼 노드(1011)로 매핑한다. 다음으로, 네트워크 압축부(510)는 임의의 노드(3)를 압축 대상 노드로 선정하고, 압축 대상 노드(3)와 인접한 이웃 노드 중에서 슈퍼 노드(1011)를 제외하고 노드(4)를 압축 후보 노드로 선정한다. 따라서, 네트워크 압축부(510)는 이상적인 경우와는 달리 연결성이 약한 노드(3, 4)를 하나의 슈퍼 노드(1013)로 매핑하게 된다.
도 10c는 슈퍼 노드를 포함하여 압축 후보 노드를 선정하는 경우를 도시한다. 먼저 도 10c의 왼편에 도시된 바와 같이, 네트워크 압축부(510)는 원본 네트워크를 구성하는 노드(1, 2)를 슈퍼 노드(1021)로 매핑한다. 다음으로, 네트워크 압축부(510)는 임의의 노드(3)를 압축 대상 노드로 선정하고, 압축 대상 노드(3)와 인접한 노드인 슈퍼 노드(1031)와 노드(4) 중에서 슈퍼 노드(1031)를 압축 후보 노드로 선정한다. 참고로, 압축 대상 노드(3)와 슈퍼 노드(1021) 사이의 간선의 가중치는 슈퍼 노드로 매핑된 노드(1, 2)와 압축 대상 노드(3) 사이의 간선의 가중치의 합과 같기 때문에 일반적인 경우 네트워크 압축부(510)가 슈퍼 노드(1021)를 압축 후보 노드로 선정할 가능성이 높을 수 있다.
다음으로, 네트워크 압축부(510)는 노드(4, 5)를 슈퍼 노드(1023)로 매핑하고, 노드(6) 및 슈퍼 노드(1023)를 각각 압축 대상 노드와 압축 후보 노드로 선정함으로써 도 10a에 도시된 이상적인 경우와 같이 네트워크를 압축할 수 있다.
도 10b와 도 10c에 도시된 경우를 비교하면, 도 10b에 도시된 경우는 6 개의 노드(1 내지 6)가 3 개의 슈퍼 노드(1011, 1013, 1015)로 매핑되었으므로 50 퍼센트의 압축률을 보이는 반면, 도 10c에 도시된 경우는 6 개의 노드(1 내지 6)가 2 개의 슈퍼 노드(1031, 1033)로 매핑되어 약 67 퍼센트의 압축률을 보여준다. 따라서, 슈퍼 노드를 포함하여 압축 후보 노드를 선정하는 경우, 네트워크의 구조에 따라 네트워크 압축의 성능이 향상될 수 있다.
또한, 도 10c에 도시된 경우는 연결성이 강한 노드(1 내지 3, 4 내지 6)가 각각 슈퍼 노드(1031, 1033)로 교체된 상태로 제1 클러스터링이 수행되어 상기 연결성이 강한 노드의 그룹이 유지되므로 전체 클러스터링 결과의 정확도 또한 10b에 도시된 경우에 비해 향상될 수 있다.
지금까지, 도 10a 내지 도 10c를 참조하여 슈퍼 노드를 포함하여 압축 후보 노드를 선정함으로써 압축 성능이 개선되는 예에 대하여 설명하였다. 다음으로, 도 11 내지 도 12를 참조하여 본 발명에 따라 네트워크 압축의 성능이 개선될 수 있는 또 다른 방법을 설명한다.
네트워크 압축부(510)는 압축 대상 노드와 압축 후보 노드를 슈퍼 노드로 매핑할 때 주변의 '고립된 노드' 또는 '압축 대상 노드 및 압축 후보 노드와 공통으로 연결된 이웃 노드'를 포함하여 슈퍼 노드로 교체함으로써 압축 성능을 보다 향상시킬 수 있다. 고립된 노드를 추가로 선정하는 것은 상기 고립된 노드가 압축 과정에서 압축 대상 노드로 선정되더라도 결국 인접한 슈퍼 노드와 압축이 수행될 것이기 때문이며. 압축 대상 노드 및 압축 후보 노드와 공통으로 연결된 이웃 노드를 추가로 선정하는 것은 상기 공통으로 연결된 이웃 노드 또한 압축 과정에서 인접한 상기 슈퍼 노드 압축이 수행될 가능성이 크기 때문이다. 따라서, 이와 같은 관찰을 기반으로 네트워크 압축부(510)는 이후에 수행될 수 있는 노드 단위 압축 단계를 미리 수행함으로써 네트워크의 단위 압축 단계의 압축 성능을 향상시킬 수 있다.
도 11a를 참조하여 고립된 노드를 추가로 선정하는 방법의 순서도를 살펴보면, 네트워크 압축부(510)는 기 설정된 기준에 따라 압축 대상 노드와 압축 후보 노드를 선정하고(S810, S830) 압축 대상 노드 또는 압축 후보 노드와 연결된 이웃 노드 중 고립된 노드를 추가로 선정할 수 있다(S1110). 또한, 네트워크 압축부(510)는 압축 대상 노드, 압축 후보 노드 및 선정된 고립된 노드를 하나의 슈퍼 노드로 교체할 수 있다(S1110, S1130). 상기 고립된 노드는 압축 후보 노드 또는 압축 대상 노드와 인접한 이웃 노드 중에서, 압축 대상 노드 또는 압축 후보 노드 외 다른 노드와 간선을 갖지 않는 노드를 의미한다. 여기서 상기 다른 노드는 슈퍼 노드를 포함하거나, 제외할 수 있으며 이는 구현 방식의 차이에 불과할 수 있다.
다음으로 도 11b를 참조하여 공통으로 이웃된 노드를 추가로 선정하는 방법의 순서도를 살펴보면, 네트워크 압축부(510)는 도 11a에 도시된 바와 동일하게 압축 대상 노드 및 압축 후보 노드를 선정한 다음(S810, S830), 압축 대상 노드 및 압축 후보 노드와 공통으로 연결된 이웃 노드를 추가로 선정할 수 있다(S1150). 그리고 네트워크 압축부(510)는 압축 대상 노드, 압축 후보 노드 및 선정된 이웃 노드를 하나의 슈퍼 노드로 교체할 수도 있다(S1170).
또한, 네트워크 압축부(510)는 상술한 2 가지 방법을 자유롭게 조합하여 추가 노드를 선정할 수 있다. 예를 들어, 네트워크 압축부(510)는 '압축 대상 노드 및 압축 후보 노드와 공통으로 연결된 이웃 노드 중에서 고립된 노드'를 추가로 선정할 수도 있다.
보다 이해의 편의를 제공하기 위해 도 12a 및 도 12b를 참조하여 상술한 2 가지 방법에 따라 압축을 수행하는 예를 설명한다.
먼저 도 12a를 참조하여 고립된 노드를 추가로 선정하는 방법의 예를 살펴보면, 네트워크 압축부(510)는 6 개의 노드(1 내지 6)로 구성된 원본 네트워크를 압축하기 위해 압축 대상 노드(4)와 압축 후보 노드(5)를 선정하고 하나의 슈퍼 노드(1201)로 매핑할 수 있다. 또한, 네트워크 압축부(510)는 압축 대상 노드(4) 또는 압축 후보 노드(5)와 인접한 이웃 노드(2, 3, 6) 중에 고립된 노드가 있는지 판정하고 고립된 노드를 추가로 선정할 수 있다. 자세히 말하면, 이웃 노드(2, 3, 6) 중에서 노드(3, 6)는 압축 대상 노드(4) 또는 압축 후보 노드(5) 외 다른 노드 사이의 간선이 존재하고, 노드(2)는 압축 대상 노드(4) 또는 압축 후보 노드(5) 외 다른 노드 사이의 간선이 존재하지 않으므로 네트워크 압축부(510)는 노드(2)를 고립된 노드로 판정하고 압축 대상 노드(4)와 압축 후보 노드(6) 및 노드(2)를 하나의 슈퍼 노드(1203)로 교체할 수 있다.
다음으로 도 12b를 참조하여 공통으로 이웃된 노드를 추가로 선정하는 방법의 예를 살펴보면, 네트워크 압축부(510)는 원본 네트워크를 압축하기 위해 압축 대상 노드(3)와 압축 후보 노드(5)를 선정하고 하나의 슈퍼 노드(1211)로 매핑할 수 있다. 또한, 네트워크 압축부(510)는 압축 대상 노드(3) 및 압축 후보 노드(5)와 공통으로 연결된 이웃 노드(1, 6)를 추가로 선정하고 압축 대상 노드(3), 압축 후보 노드(5) 및 추가로 선정된 노드(1, 6)를 하나의 슈퍼 노드(1213)로 교체할 수 있다.
한편, 네트워크 압축부(510)는 상술한 2 가지 방법을 조합하여 압축 대상 노드(3) 및 압축 후보 노드(5)와 공통으로 연결된 이웃 노드(1, 6) 중에서 고립된 노드(1, 6)를 추가로 선정하여 하나의 슈퍼 노드(1213)로 교체할 수도 있다.
지금까지 네트워크 압축부(510)가 압축 대상 노드와 압축 후보 노드 주변의 '고립된 노드' 또는 '압축 대상 노드 및 압축 후보 노드와 공통으로 연결된 이웃 노드'를 포함하여 하나의 슈퍼 노드로 교체하는 방법에 대하여 알아보았다. 상술한 압축 방법에 따르면, 노드 단위 압축 단계에서 연결성이 강하거나 고립된 주변의 노드를 포함하여 하나의 슈퍼 노드로 교체함으로써 노드 단위 압축 단계 또는 네트워크 단위 압축 단계의 성능을 향상시킬 수 있다.
다음으로, 도 13을 참조하여 본 발명에 따른 네트워크 압축 방법을 구현한 의사코드에 대하여 설명한다.
도 13은 상술한 네트워크 압축 단계(S610)를 구현한 의사코드(Pseudo-code)의 예시도이다. 단, 도 13에 도시된 의사 코드는 본 발명에 따른 네트워크 압축 방법을 구체화한 하나의 구현 예에 불과하며, 상술한 네트워크 압축 방법은 다양한 방식으로 구현될 수 있음에 유의해야 한다.
도 13을 참고하면, 네트워크 압축 방법은 원본 네트워크(G)를 입력 값으로 하여 압축 네트워크(GC)를 출력하도록 구현될 수 있다. 상세 코드를 살펴보면, 의사코드의 3 번째 줄 내지 4 번째 줄은 원본 네트워크를 구성하는 노드 중 압축 대상 노드(u)를 반복하여 선정하는 단계(S810)를 구현한다. 참고로, 'FOREACH'는 반복문을 의미하는 키워드로 상기 반복문에서'DO' 이하의 구문이 반복해서 수행될 수 있다.
의사코드의 5 번째 줄 내지 6 번째 줄은 간선의 가중치 및 노드의 차수 기준으로 압축 후보 노드(v)를 선정하는 단계(S830)를 구현한다. 또한, 의사코드의 8 번째 줄 내지 10 번째 줄은 압축 대상 노드(u)와 압축 후보 노드(v)가 슈퍼 노드로 교체되는 단계(S850)를 구현하고, 의사코드의 11 번째 줄 내지 16 번째 줄은 압축 대상 노드(u) 및 압축 후보 노드(v)와 공통으로 연결된 노드를 추가로 선정하여 슈퍼 노드로 교체하는 단계(S1150, S1170)를 구현한다.
지금까지 도 7 내지 도 13을 참고하여 본 발명에 따른 네트워크 압축 단계(S610)에 대하여 상세히 설명하였다. 상술한 네트워크 압축 방법에 따르면 슈퍼 노드를 포함하여 압축 후보 노드를 선정하거나, 압축 대상 노드와 압축 후보 노드의 주변 노드 중 소정의 조건을 만족하는 노드를 포함하여 압축함으로써 압축 성능을 향상시킬 수 있다. 또한, 슈퍼 노드를 포함하여 압축 후보 노드를 선정하는 경우 네트워크 구조에 따라 클러스터링의 정확도 또한 향상될 수 있다.
다음으로, 네트워크를 클러스터링하는 단계에 대하여 설명한다. 상술한 바와 같이 네트워크를 클러스터링하는 단계는 제1 클러스터링하는 단계와 제2 클러스터링하는 단계로 나누어 수행될 수 있다. 또한, 제1 클러스터링하는 단계 및 제2 클러스터링하는 단계의 클러스터링 대상 네트워크는 압축 네트워크와 중간 네트워크로 서로 다르지만 클러스터링을 수행하는 세부 단계의 기능은 동일할 수 있다.
상기 세부 단계는 네트워크를 구성하는 노드가 이웃 노드를 경유하여 다른 노드로 갈 수 있는 확률을 산출하는 단계(확장 단계), 산출된 확률 값의 차이를 증폭하는 단계(증폭 단계), 증폭된 확률 값에서 기 설정된 값 이하의 확률 값을 삭제하는 단계(소거 단계)를 포함할 수 있다. 또한, 제1 클러스터링하는 단계 및 제2 클러스터링하는 단계는 3 단계로 구성된 세부 단계를 반복적으로 수행하는 단계를 포함할 수 있다. 상기 세부 단계 수행 시 네트워크는 인접 행렬을 이용하여 표현될 수 있고, 상기 세부 단계는 대수적으로 행렬 연산을 통해 수행될 수 있다.
참고로, 상기 노드가 이웃 노드를 경유하여 다른 노드로 갈 수 있는 확률은 간선의 가중치 및 간선의 개수에 의해 산출될 수 있는 값이므로 연결성의 강도에 비례하는 값으로 이해될 수 있고, 상기 확률 값의 차이를 증폭하는 단계는 강한 연결성을 가진 부분을 더 강하게 하고 약한 연결성을 가진 부분을 더 약하게 함으로써 네트워크가 빠르게 클러스터링되도록 하는 단계로 이해될 수 있다.
네트워크 클러스터링 단계 중 먼저 압축 네트워크를 제1 클러스터링하는 단계(S630)에 대하여 도 14 내지 도 17을 참조하여 상세히 설명하고, 제2 클러스터링하는 단계는 네트워크 압축 해제 방법을 설명한 뒤 도 19를 참조하여 후술한다.
도 14는 네트워크 클러스터링부(550)가 압축 네트워크를 제1 클러스터링하는 단계(S630)의 상세 순서도이다.
도 14를 참조하면, 네트워크 클러스터링부(550)는 압축 네트워크를 가리키는 인접 행렬(MC)을 이용하여, 슈퍼 노드가 이웃 슈퍼 노드를 경유하여 다른 슈퍼 노드로 갈 수 있는 확률을 산출한다(S1410). 이웃 슈퍼 노드를 경유하여 다른 슈퍼 노드로 갈 수 있는 확률은 대수적으로 인접 행렬의 곱셈을 이용하여 계산될 수 있다. 이해의 편의를 제공하기 위해 본 단계를 도 15a 내지 도 15c를 참고하여 부연 설명한다.
도 15a를 참조하면, 왼편에 도시된 바와 같이 3 개의 슈퍼 노드(1, 2, 3) 또는 노드로 구성된 네트워크가 주어진 경우, 상기 네트워크에서 각 노드가 다른 노드로 이웃 노드를 경유하지 않고 이동할 확률을 오른편과 같이 도시할 수 있다. 예를 들어, 노드(2)의 경우, 노드(1) 또는 노드(3)로 이동할 수 있으므로, 각 노드(1, 3)로 이동할 확률은 간선의 가중치를 고려 시 각각 '1/3', '2/3'로 계산될 수 있다.
도 15b는 도 15a에 도시된 개념을 나타내는 인접 행렬을 도시한다. 도 15b를 참조하면, 인접 행렬(1501)은 도 15a의 왼편에 도시된 네트워크를 나타내는 행렬이다. 인접 행렬은 그래프 또는 네트워크의 표현 방법의 하나로 행렬의 행 번호 및 열 번호는 각 네트워크의 노드 번호를 의미하고 행렬의 각 항목의 값은 노드를 연결하는 간선의 유무 및 간선의 가중치 값을 나타낸다.
인접 행렬(1503)은 도 15a의 오른편에 도시된 이동 확률을 나타내는 행렬이다. 인접 행렬(1503)에서 i 번째 행과 j 번째 열에 위치한 행렬 값은 각각 노드(j)가 노드(i)로 이동할 확률 값을 의미한다. 예를 들어 노드(2)가 노드(1) 또는 노드(3)로 이동할 확률은 도 15a에 도시된 바와 같이 각각 '1/3'과 '2/3'이므로 인접 행렬(1503)에서 1 행 2 열 및 3 행 2 열에 위치한 항목의 값은 '1/3'과 '2/3'이 된다. 이와 같은 확률 값은 대수적으로 인접 행렬에 대한 정규화(Normalization) 연산을 수행함으로써 얻어질 수 있고, 상기 정규화 연산은 인접 행렬의 각 열에 위치한 항목 값의 합이 1 이 되도록 변환하는 연산을 의미할 수 있다. 즉, 정규화는 수학식 1과 같이 열 별로 인접 행렬의 각 열에 위치한 항목의 값을 열에 위치한 항목의 값의 합으로 나누는 연산을 의미할 수 있다.
Figure 112016077531307-pat00001
다음으로 도 15c는 네트워크에서 노드가 인접한 이웃 노드를 경유하여 다른 노드로 갈 확률을 나타내는 인접 행렬을 도시한다. 도 15c를 참조하면, 네트워크 상의 노드가 인접한 이웃 노드를 경유하여 다른 노드로 갈 확률은 대수적으로 인접 행렬의 곱을 통해 산출될 수 있다. 자세히 말하면, 네트워크의 임의의 노드가 다른 노드로 갈 수 있는 확률을 나타내는 인접 행렬(1503)이 주어졌을 때, 상기 네트워크에서 임의의 노드가 인접한 노드를 거쳐 다른 노드로 갈 수 있는 확률을 나타내는 인접 행렬(1505)은 주어진 인접 행렬(1503)의 행렬 곱을 통해 얻어질 수 있다. 예를 들어, 노드(1)가 임의의 노드를 거쳐서 다시 노드(1)로 돌아올 확률은 노드(1)가 노드(2)로 갈 확률과 노드(2)가 노드(1)로 갈 확률의 곱이므로 상기 확률은 '1/3'(1 * 1/3 = 1/3)이 될 수 있다. 따라서, 인접 행렬(1505)에서 1 행 1 열에 위치한 항목의 값은 '1/3'이 될 수 있고, 이는 행렬 곱을 통해 산출되는 값과 동일하다. 또한, 노드(2)가 임의의 노드를 거쳐서 다시 노드(2)로 돌아올 확률은 노드(1)를 거쳐서 돌아올 확률과 노드(3)를 거쳐서 돌아올 확률의 합이므로 '1'(1/3 + 2/3 = 1)이 될 수 있고, 인접 행렬(1505)의 2 행 2 열에 위치한 값은 '1'이 된다.
다시 도 14로 돌아가면, 네트워크 클러스터링부(550)는 상술한 바와 같이 다른 인접 행렬의 곱을 통해 이웃 슈퍼 노드를 거쳐 다른 슈퍼 노드로 갈 수 있는 확률을 산출하고 상기 확률을 나타내는 인접 행렬(MCE)을 생성한다(S1410). 다음으로, 네트워크 클러스터링부(550)는 인접 행렬(MCE)을 이용하여, 인접 행렬(MCE)의 열 별로 확률 값의 차이를 증폭하여 인접 행렬(MCI)을 생성한다. 인접 행렬의 값을 증폭하는 과정은 대수적으로 아래의 수학식 2를 이용하여 수행될 수 있다. 즉, 네트워크 클러스터링부(550)는 인접 행렬(MCR)의 각 항목의 확률 값의 차이를 'r'을 파라미터(Parameter)로 하는 지수 승을 통해 증폭할 수 있다. 또한, 네트워크 클러스터링부(550)는 증폭된 행렬의 값에 대해 다시 한번 정규화를 수행할 수 있다. 수학식 2는 정규화 과정을 포함하는 식으로 분모는 정규화 연산을 의미하고 분자는 증폭하는 연산을 의미한다.
Figure 112016077531307-pat00002
이해의 편의를 제공하기 위해 도 16을 참조하여 네트워크 클러스터링부(550)가 확률 값의 차이를 증폭하는 과정을 예로 설명한다.
도 16을 참조하면, 증폭 파라미터(r)가 2로 설정된 경우, 네트워크 클러스터링부(550)는 인접 행렬(MCR , 1505)의 각 행렬의 항목 값을 제곱 승하여 인접 행렬(MCI, 1603)을 생성한다. 또한, 네트워크 클러스터링부(550)는 정규화 연산을 추가로 수행하여 인접 행렬(1603)을 생성할 수 있다.
다시 도 14로 돌아가면, 네트워크 클러스터링부(550)는 확률 값의 차이를 증폭한 인접 행렬(MCI)을 생성한 다음, 인접 행렬(MCI)에서 기 설정된 값 이하의 확률 값을 삭제한 인접 행렬(MCP)을 생성한다(S1450). 본 단계를 수행하는 이유는 인접 행렬(MCI)에서 '0'이 아닌 값을 갖는 항목의 수를 빨리 줄여 메모리 활용을 최소화하고 행렬에 대한 연산 비용 절감 효과를 얻기 위해서이다. 즉, 본 단계는 대용량 네트워크의 클러스터링을 위한 확장성을 제공하기 위한 방법의 하나로 이해될 수 있다.
참고로, 네트워크 클러스터링부(550)는 인접 행렬(MCI)에 기 설정된 값 이하의 값을 갖는 인접 행렬의 항목이 복수 개 있는 경우 그 중에서 가장 작은 값을 갖는 항목을 삭제할 수 있고, 구현 방식에 따라 기 설정된 값 이하의 값을 갖는 모든 항목을 삭제할 수도 있다 또한, 가장 작은 값을 갖는 항목이 복수 개 있는 경우, 네트워크 클러스터링부(550)는 가장 작은 값을 갖는 항목 중에서 임의의 항목을 선택하여 삭제할 수도 있다. 또한, 네트워크 클러스터링부(550)는 상기 삭제 연산을 수행한 다음 인접 행렬(MCP)에 대해 정규화 연산을 다시 수행할 수도 있다.
도 17은 기 설정된 값 이하의 확률 값을 삭제하는 단계(S1450)에 대한 예를 살펴보면, 네트워크 클러스터링부(550)는 이전 단계(S1430)에서 생성된 인접 행렬(1603)에 대하여 기 설정된 값 이하의 값 중에서 가장 작은 값을 갖는 항목을 삭제하여 인접 행렬(MCP, 1701)을 생성할 수 있다. 도 17에 도시된 인접 행렬(1603)에서 밑줄이 도시된 항목이 삭제되는 항목을 의미한다. 네트워크 클러스터링부(550)는 추가로 정규화 연산을 수행하는 경우 인접 행렬(1703)을 생성할 수 있다.
다시 도 14로 돌아가면, 네트워크 클러스터링부(550)는 확률을 산출하는 단계(S1410), 확률 값의 차이 증폭 단계(S1430) 및 기 설정된 값 이하의 확률 값을 삭제하는 단계(S1450)를 수행하여 생성된 인접 행렬(MCP)이 기 설정된 조건을 만족하는지 검사하고(S1470) 만족하지 않는 경우, 상술한 세부 단계(S1410, S1430, S1450)를 반복하여 수행할 수 있다. 예를 들어, 네트워크 클러스터링부(550)는 인접 행렬(MCP)의 확률 값이 일정한 값으로 수렴되는 것을 조건으로 하거나, 상기 3 개의 세부 단계를 하나의 '클러스터링 단계'라고 할 때 클러스터링 단계의 반복 횟수를 조건으로 하여 상기 조건이 만족할 때까지 상술한 클러스터링 단계(S1410, S1430, S1450)를 반복하여 수행할 수 있다.
단, 네트워크 클러스터링부(550)는 상기 클러스터링 단계를 반복하여 수행하는 경우, 인접 행렬(MCP)과 압축 네트워크를 가리키는 인접 행렬(MC)을 이용하여 인접한 이웃 노드를 경유하여 다른 노드로 갈 확률을 나타내는 인접 행렬(MCE)을 생성할 수 있다(S1410). 대수적으로는 행렬의 곱으로 수행되는 단계(S1410)에서 인접 행렬(MCP)과 인접 행렬(MCP)을 곱하는 것이 아니라 인접 행렬(MCP)과 인접 행렬(MC)의 행렬 곱을 이용하여 다른 노드로 갈 확률을 구할 수 있다. 인접 행렬(MCP)과 인접 행렬(MC)의 행렬 곱을 이용하는 이유는 인접한 노드를 거쳐서 다른 노드로 갈 확률을 단계적으로 산출함으로써 지나치게 작은 클러스터가 생성되는 문제(Fragmentation Problem)를 방지하기 위해서이다.
지금까지 도 15 내지 도 17을 참조하여 네트워크 클러스터링부(550)가 제1 클러스터링하는 단계(S630)에 대하여 설명하였다. 상술한 네트워크 클러스터링 방법에 따르면, 클러스터링 단계마다 가장 작은 값을 삭제함으로써 메모리 활용을 최소화하고 연산 비용을 절감함으로써 효율적으로 클러스터링을 수행할 수 있고, 압축 네트워크를 가리키는 행렬을 상기 확률을 산출하는 단계(S1410)에 계속하여 이용함으로써 지나치게 작은 클러스터가 다수 생성되는 문제를 방지할 수 있다.
다음으로, 도 18을 참조하여 네트워크 압축 해제부(530)가 압축 네트워크의 압축을 해제하는 단계(S650)에 대하여 설명한다.
도 18은 네트워크 압축 해제부(530)가 압축 네트워크의 압축을 해제하여 중간 네트워크를 구성하는 방법의 예시도이다. 도 18의 왼편에 도시된 네트워크는 원본 네트워크를 가리키고, 가운데 도시된 네트워크는 압축 네트워크를 가리키며, 오른편에 도시된 네트워크는 중간 네트워크를 가리킨다.
도 18을 참조하면, 네트워크 압축부(510)는 원본 네트워크를 구성하는 노드(1, 4), 노드(2, 3)를 각각 슈퍼 노드(1801, 1803)로 교체함으로써 가운데에 도시된 바와 같은 압축 네트워크를 구성한다. 상기 압축 단계에서 네트워크 압축부(510)는 슈퍼 노드와 상기 슈퍼 노드에 포함되는 노드의 매핑 정보는 보관하지만 그 이외의 정보는 보관하지 않는다고 가정한다. 예를 들어, 네트워크 압축부(510)는 대용량 네트워크의 확장성을 제공하기 위해 슈퍼 노드(1801)로 매핑되는 노드(1, 4)와 간선의 가중치 정보만을 보관하고, 각 슈퍼 노드로 매핑되는 노드(1, 4)와 노드(2, 3) 사이의 간선 및 가중치 정보는 보관하지 않을 수 있다. 단, 가운데에 도시된 압축 네트워크에서 슈퍼 노드(1801)와 슈퍼 노드(1803) 사이의 간선 및 가중치 정보는 압축 네트워크를 가리키는 행렬에 포함되어 있다.
네트워크 압축 해제부(530)는 상기 보관된 정보를 기반으로 압축 네트워크를 원본 네트워크의 크기의 중간 네트워크로 구성하기 위해 먼저 슈퍼 노드에 매핑된 노드 정보를 이용하여 중간 네트워크의 노드(1, 2, 3, 4)를 구성한다. 다음으로, 네트워크 압축 해제부(530)는 간선으로 연결된 슈퍼 노드(1801, 1803)에 대하여 한 쪽의 슈퍼 노드(1801)에 포함되는 노드(1)와 연결된 슈퍼 노드(1802)에 포함된 각 노드(2, 3) 사이에 2 개의 간선({1, 2}, {1, 3})만을 연결함으로써 중간 네트워크를 구성할 수 있다. 노드(1, 4)와 노드(2, 3) 사이에 존재할 수 있는 모든 간선({1, 2}, {1, 3}, {2, 4}, {3, 4})을 연결하지 않는 이유는 중간 네트워크의 간선의 개수가 지나치게 증가하여 확장성이 떨어질 수 있고, 상술한 방법이 클러스터링 결과에 큰 영향을 미치지 않기 때문이며, 오히려 중간 네트워크가 원본 네트워크의 구성과 상이해질 수도 있기 때문이다.
지금까지 도 18을 참조하여 네트워크 압축 해제부(530)가 압축 네트워크를 압축 해제하는 단계(S650)에 대하여 설명하였다. 다음으로, 도 19를 참조하여 네트워크 클러스터링부(550)가 중간 네트워크를 제2 클러스터링하는 단계(S670)에 대하여 설명한다.
상술한 바와 같이 제2 클러스터링 단계(S670)의 세부 단계(S1910, S1930, S1950)는 제1 클러스터링 단계(S630)의 세부 단계(S1410, S1430, S1450)와 기능이 동일하다. 따라서, 세부 단계에 대한 설명은 생략하고 두 단계의 차이점 위주로 설명한다.
네트워크 클러스터링부(550)는 중간 네트워크와 원본 네트워크를 이용하여 이웃 노드를 경유하여 다른 노드로 갈 수 있는 확률을 산출한다(S1910). 즉, 네트워크 클러스터링부(550)는 대수적으로 중간 네트워크를 가리키는 인접 행렬(MF)과 원본 네트워크를 가리키는 인접행렬(MO)의 행렬 곱을 통해 다른 노드로 갈 수 있는 확률을 나타내는 행렬(MFE)을 생성한다. 원본 네트워크를 이용하는 이유는 제1 클러스터링 단계에서 압축 네트워크(MC)를 이용한 것과 같이 다른 노드로 갈 확률을 단계적으로 산출하여 지나치게 작은 클러스터가 생성되는 문제(Fragmentation Problem)를 방지하기 위함이다. 이후 수행되는 단계의 설명은 제1 클러스터링 단계(S630)의 설명을 참조한다.
네트워크 클러스터링부(550)는 확률을 산출하는 단계(S1910), 확률 값의 차이를 증폭하는 단계(S1930) 및 기 설정된 값 이하의 확률 값을 삭제하는 단계(S1950)를 수행하여 생성된 인접 행렬(MFP)이 기 설정된 조건을 만족하는지 검사하고(S1970) 만족하지 않는 경우, 상술한 세부 단계(S1910, S1930, S1950)를 반복하여 수행할 수 있다. 예를 들어, 네트워크 클러스터링부(550)는 인접 행렬(MFP)의 확률 값이 일정한 값으로 수렴되는 것을 조건으로 하거나, 클러스터링 단계의 반복 횟수를 조건으로 하여 상기 조건이 만족할 때까지 상술한 클러스터링 단계(S1910, S1930, S1950)를 반복하여 수행할 수 있다.
단, 네트워크 클러스터링부(550)는 상기 클러스터링 단계(S1910, S1930, S1950)를 반복하여 수행하는 경우, 인접 행렬(MFP)과 원본 네트워크를 가리키는 인접 행렬(MO)을 이용하여 인접한 노드를 경유하여 다른 노드로 갈 확률을 나타내는 인접 행렬(MFE)을 생성할 수 있다(S1910). 이는 상술한 바와 같이 작은 클러스터가 다수 생성되는 문제(Fragmentation Problem)를 방지하기 위함이다
기 설정된 조건을 만족하여 상기 제2 클러스터링 단계가 종료되는 경우 네트워크 클러스터링부(550)는 최종적으로 생성된 인접 행렬(MFP)에서 각 행의 0 이 아닌 값을 갖는 노드의 그룹을 하나의 클러스터로 형성한 클러스터링 결과 네트워크를 구성할 수 있다(S1990).
지금까지 도 19를 참조하여 네트워크 클러스터링부(550)가 제2 클러스터링을 수행하는 단계에 대하여 알아보았다. 다음으로, 본 발명에 따른 네트워크 클러스터링 장치(400)가 상기 클러스터링 단계를 병렬 처리하는 방법과 희소 행렬(Sparse Matrix)의 표현 기법을 적용하는 방법에 대하여 도 20 및 도 21을 참조하여 설명한다.
상술한 바와 같이 네트워크 클러스터링부(550)가 수행하는 클러스터링 방법은 대수적으로 인접 행렬의 연산을 통해 구현될 수 있다. 또한, 제1 클러스터링하는 단계 및 제2 클러스터링하는 단계의 세부 단계인 확률을 산출하는 단계(S1410, S1910), 확률 값의 차이를 증폭하는 단계(S1430, S1930), 기 설정된 값 이하의 확률 값을 삭제하는 단계(S1450, S1950)는 각각 인접 행렬의 열 단위로 수행되는 연산으로 구현될 수 있으므로 병렬적으로 수행될 수 있다. 부연하여 설명하면, 확률을 산출하는 단계(S1410, S1910)는 인접 행렬을 열 단위로 곱셈함으로써 구현될 수 있고, 확률 값의 차이를 증폭하는 단계(S1430, S1930)는 인접 행렬의 열 단위로 각 항목을 지수 승하고 정규화함으로써 구현될 수 있으며, 기 설정된 값 이하의 확률 값을 삭제하는 단계(S1450, S1950) 또한 인접 행렬의 열 단위로 항목을 삭제하고 정규화함으로써 구현될 수 있다. 따라서, 네트워크 클러스터링부(550)가 수행하는 클러스터링 방법은 인접 행렬의 연산을 병렬화함으로써 성능 측면에서 대용량 네트워크에 대한 확장성을 제공할 수 있다.
또한, 상기 병렬 처리 개념은 병렬 컴퓨팅(Parallel Computing) 개념이 도입된 하드웨어 기반(Hardware Infrastructure)에서 구현되는 경우 성능 측면에서의 확장성 문제가 더욱 개선될 수 있다. 예를 들어, 본 발명에 따른 네트워크 클러스터링 방법이 그리드 컴퓨팅(Grid Computing) 구조의 하드웨어 기반으로 동작하는 경우, 대용량 네트워크를 가리키는 인접 행렬의 열 단위로 수행될 수 있는 연산을 그리드 컴퓨팅을 구성하는 각 컴퓨팅 장치에 할당하여 수행함으로써 성능을 개선할 수 있다. 또는, 본 발명에 따른 네트워크 클러스터링 방법이 멀티코어(Multi-core) 기반의 컴퓨팅 장치에서 동작하는 경우 인접 행렬의 열 단위로 수행될 수 있는 연산을 각 프로세서에 할당함으로써 성능을 개선할 수 있으며, 단일코어 기반의 컴퓨팅 장치에서 동작하는 경우에도 인접 행렬의 열 단위로 수행될 수 있는 연산을 각 프로세스(Process) 또는 스레드(Thread)에 할당함으로써 병렬 처리를 통한 성능 향상 효과를 얻을 수 있다.
한편, 대용량 네트워크에 대한 확장성 문제를 해결하기 위해서는 성능 문제 외에도 메모리 측면에서의 확장성 문제도 해결되어야 한다. 따라서, 메모리 공간을 최소화하기 위해 본 발명에 몇몇 실시예에서 이용될 수 있는 희소 행렬(Sparse Matrix)의 표현 방식을 적용하는 방법에 대하여 설명한다.
도 20a에 도시된 인접 행렬 표현을 살펴보면, 대용량 네트워크가 인접 행렬 형태로 표현되는 경우 노드의 개수를 N 이라고 할 때 O(N2)의 메모리 공간이 요구된다. 이와 같은 경우, 행렬의 열 단위로 병렬 처리함으로써(T1, T2, T3, T4는 각각 하나의 태스크 의미) 성능 측면에서의 확장성이 제공되더라도 메모리 공간이 여전히 문제가 된다.
실세계의 대용량 그래프는 간선이 매우 편향된 분포(Skewed Distribution)를 갖는다. 즉, 대다수의 간선은 일부 노드에 집중되어 있기 때문에 실세계의 대용량 그래프를 인접 행렬 형식으로 표현하는 경우 0 이 아닌 항목의 개수가 적은 희소 행렬이 주로 나타날 수 있다. 따라서, 본 발명에 따른 네트워크 클러스터링 방법은 대용량 네트워크의 메모리 공간을 최소화하기 위해 희소 행렬의 표현 방식을 적용한다.
도 20b 및 도 20c는 각각 희소 행렬의 표현 방식인 COO(COOrdinate-list)와 CSC(Compressed Sparse Column) 형식을 설명하기 위한 도면이다. 자세히 말하면, 도 20b는 도 20a에 도시된 인접 행렬을 COO 형식으로 변환한 도면 도 20c는 도 20a에 도시된 인접 행렬을 CSC 형식으로 변환한 도면이다.
먼저 도 20b를 참조하면, 상기 COO 형식은 (행 번호, 열 번호, 값)으로 구성된 3 원소 쌍을 항목으로 하는 배열을 이용하는 방식이다. COO 형식으로 네트워크를 표현할 때 첫 번째 원소 쌍은 인접 행렬의 행의 수, 열의 수 및 0 이 아닌 항목의 개수를 의미하고, 두 번째 원소 쌍은 0 이 아닌 항목이 위치하는 행 번호, 열 번호 및 상기 항목의 값을 의미한다.
예를 들어, 도 20a에 도시된 인접 행렬은 '4 by 4' 행렬이고 0 이 아닌 항목의 개수가 '7' 개이므로, COO 형식으로 변환 시 첫 번째 원소 쌍은 (4, 4, 7)이 되고, 도 20a에 도시된 인접 행렬에서 1 행 1 열에 위치한 값이 '9'이므로 COO 형식으로 변환한 원소 쌍은 (1, 1, 9)가 된다. COO 형식의 보다 자세한 설명은 위키피디아(https://en.wikipedia.org/wiki/Sparse_matrix)를 참조한다.
도 20b에 도시된 바와 같이 COO 형식을 열 단위로 병렬 처리하는 경우 3 원소 쌍 배열을 열 번호 우선으로 정렬하고, 각 열 단위의 원소 쌍을 입력 값으로 하는 연산에 대한 태스크(T1, T2, T3, T4)를 생성한 뒤 각 태스크를 스레드 또는 프로세스에 할당하여 병렬적으로 처리할 수 있다. 참고로, COO 형식을 이용하는 경우 행렬의 곱셈 연산은 전치 행렬(Transposed Matrix)을 이용하여 보다 효율적으로 수행될 수 있다.
또한, 상기 연산은 상술한 바와 같이 클러스터링 단계에서 수행되는 확률을 산출하는 단계(S1410, S1910), 확률 값의 차이를 증폭하는 단계(S1430, S1930), 기 설정된 값 이하의 확률 값을 삭제하는 단계(S1450, S1950) 등이 될 수 있다.
COO 형식의 공간 복잡도는 0 이 아닌 항목의 수를 K 라고 할 때 O(K)가 되기 때문에 공간 복잡도가 O(N2)인 인접 행렬을 이용하는 것에 비해 메모리 공간을 크게 절약할 수 있다. 또한, 기 설정된 값 이하의 확률 값을 삭제하는 단계(S1450, S1950)를 통해 0 이 아닌 항목을 소거할수록 K 의 값이 작아지므로 상기 메모리 공간의 활용이 극대화될 수 있다.
다음으로, 도 20c를 참조하면, CSC 형식은 인접 행렬의 값을 나타내는 배열, 행 번호를 나타내는 배열 및 열 포인터를 나타내는 배열 3 개의 배열을 이용하여 인접 행렬을 표현한다. 상기 인접 행렬의 값은 열 우선으로 정렬되어 배열에 위치하고, 상기 행 번호는 인접 행렬의 값이 위치하는 행 번호를 나타내고, 상기 열 포인터는 값을 나타내는 배열에서 해당 열이 시작되는 배열의 인덱스를 가리킨다. CSC 형식은 열 포인터를 활용하여 행렬의 열 단위로 데이터를 쉽게 분할할 수 있기 때문에, 열 단위로 수행 될 수 있는 연산을 병렬 처리하는데 적합한 형식이다.
도 20c에 도시된 CSC 형식을 자세히 살펴보면, 도 20a에 도시된 인접 행렬에서 '9'는 1 행 1 열에 위치하고, 같은 열에서 '9' 다음의 값인 '10'은 1 행 4 열에 위치하기 때문에 CSC 형식의 값을 나타내는 배열에는 '9', '10'이 순서대로 위치한다. 또한, 행 번호를 나타내는 배열에는 대응되는 행 번호인 '1', '4'가 순서대로 위치하게 된다.
열 포인터를 나타내는 배열을 살펴보면, 1 열의 시작 값이 배열의 '0' 번 인덱스에 위치하므로 열 포인터의 첫 번째 값은 '0' 이 된다. 다음으로, 2 열의 시작 값인 '7'은 값을 나타내는 배열에서 '2' 번 인덱스에 위치하므로, 열 포인터 배열의 두 번째 값은 '2'가 된다. 이하, CSC 형식의 보다 자세한 설명은 위키피디아(https://en.wikipedia.org/wiki/Sparse_matrix)를 참조한다.
도 20c에 도시된 바와 같이 CSC 형식을 열 단위로 병렬 처리하는 경우, 상기 CSC 형식에 포함되는 열 포인터 값을 이용하여 상기 행렬을 열 단위로 분할하고, 상기 열 단위로 분할된 데이터를 입력 값으로 하는 연산에 대한 태스크(T1, T2, T3, T4)를 생성한 뒤 각 태스크를 스레드 또는 프로세스에 할당하여 병렬 처리를 수행할 수 있다.
또한, 상기 연산은 상술한 바와 같이 클러스터링 단계에서 수행되는 확률을 산출하는 단계(S1410, S1910), 확률 값의 차이를 증폭하는 단계(S1430, S1930), 기 설정된 값 이하의 확률 값을 삭제하는 단계(S1450, S1950) 등이 될 수 있다.
참고로, CSC 형식에서 0 이 아닌 항목의 수를 K 라고 하고 인접 행렬의 열의 크기를 C 라고 할 때 공간 복잡도는 O(K+C) 가 된다. 따라서, 실세계의 대용량 그래프를 CSC 형식으로 표현하는 경우 통상의 인접 행렬 형식에 비해 메모리 공간을 크게 절약할 수 있다. 또한, C 의 값은 보통 K 보다 작고, 빅오(Big-O) 표기법에 나타나지 않으나 CSC 형식의 공간 복잡도의 상수 인자가 COO 형식보다 작기 때문에 일반적으로 CSC 형식은 COO 형식에 비해 메모리 공간을 더 절약할 수 있다. 참고로, 기 설정된 값 이하의 확률 값을 삭제하는 단계(S1450, S1950)를 통해 0 이 아닌 항목을 소거할수록 K 의 값이 작아지므로 상기 메모리의 활용은 더욱 극대화될 수 있다.
도 21은 인접 행렬을 열 단위로 병렬 처리하여 수행되는 네트워크 클러스터링 방법에 대한 의사코드의 예를 도시한다. 단, 도 21에 도시된 의사 코드는 본 발명에 따라 병렬 처리 개념이 도입된 네트워크 클러스터링 방법을 구체화한 하나의 구현 예에 불과하며, 상기 네트워크 클러스터링의 병렬 처리 개념은 다양한 방식으로 구현될 수 있음에 유의해야 한다.
도 21을 참고하면, 의사코드의 4 번째 줄 내지 9 번째 줄은 네트워크의 노드가 이웃 노드를 경유하여 다른 노드로 갈 수 있는 확률을 산출하는 단계(S1410, S1910)를 구현한다. 의사코드의 10 번째 줄에서 'Inflate' 및 'Prune' 함수는 확률 값의 차이를 증폭하는 단계(S1430, S1930) 및 기 설정된 값 이하의 확률 값을 삭제하는 단계(S1450, S1950)를 수행하는 함수를 의미한다. 또한, 의사코드의 2 번째 줄 내지 11 번째 줄에서 변수 'j'는 CSC 형식으로 표현되는 행렬의 열 번호를 의미하며, 2 번째 줄의 'FOREACH' 키워드에 의해 반복 수행되는 부분은 스레드, 프로세스 등에 할당되어 병렬적으로 수행될 수 있다.
의사코드의 13 번째 줄 내지 16 번째 줄은 CSC 형식의 클러스터링 결과 행렬을 초기화하는 단계를 구현하고, 의사코드의 17 번째 줄 내지 24 번째 줄은 초기화된 CSC 형식의 행렬에 값을 결과 값을 할당하는 단계를 구현한다. 참고로, 상기 결과 값을 할당하는 단계에서 'FOREACH'에 의해 반복되는 부분 또한 CSC 형식의 행렬의 열 단위로 복수의 스레드, 프로세스 등에 할당되어 병렬적으로 수행될 수 있다.
한편, 본 발명의 실시예에 따르면 상기 CSC 형식의 병렬 처리를 수행하는 병렬 처리 시스템이 실시될 수 있다. 또한, 상기 병렬 처리 시스템은, 제1 프로세서 및 제2 프로세서를 포함하는 복수의 프로세서, 네트워크 인터페이스, 상기 프로세서에 의하여 수행되는 컴퓨터 프로그램을 로드(Load)하는 메모리 및 상기 컴퓨터 프로그램을 저장하는 스토리지를 포함할 수 있다. 상기 컴퓨터 프로그램은, 하나 이상의 노드와 간선을 포함하는 네트워크를 CSC(Compressed Sparse Column) 형식의 행렬로 표현하는 오퍼레이션, 상기 CSC 형식에 포함되는 열 포인터 값을 이용하여 상기 행렬을 열 단위로 분할하는 오퍼레이션, 상기 열 단위로 분할된 행렬을 입력 값으로 하는 연산을 실행하는 제1 태스크(Task) 및 제2 태스크를 생성하는 오퍼레이션 및 상기 복수의 프로세서에 의해 상기 제1 태스크 및 상기 제2 태스크를 병렬 처리(Parallel Processing)하는 오퍼레이션을 포함하되, 상기 병렬 처리하는 오퍼레이션은 상기 제1 프로세서가 상기 제1 태스크를 처리하고, 상기 제2 프로세서가 동시에 상기 제2 태스크를 처리하는 오퍼레이션을 포함할 수 있다.
지금까지 도 20 및 도 21을 참조하여 병렬 처리 개념 및 희소 행렬의 표현 방식을 적용한 네트워크 클러스터링 방법에 대하여 설명하였다. 상술한 네트워크 클러스터링 방법에 따르면 병렬 처리 개념을 이용하여 성능 향상 효과를 제공함과 동시에 희소 행렬의 표현 기법을 적용하여 메모리 공간을 최소화함으로써 성능 및 메모리 공간 측면에서 대용량 네트워크에 대한 확장성을 제공할 수 있다.
마지막으로, 도 22a 내지 도 22d를 참조하여 지금까지 설명한 네트워크 클러스터링 방법이 수행되는 예제를 설명한다. 본 예제에서 네트워크는 설명의 편의를 위해 COO 또는 CSC 형식이 아닌 통상의 인접 행렬 방식을 이용하여 표현되었으며, 모든 간선의 가중치는 '1'로 동일하다고 가정한다.
도 22a를 참조하면, 도 22a의 상단에 도시된 네트워크는 본 발명에 따라 클러스터링이 수행될 원본 네트워크이고, 하단에 도시된 인접 행렬(MO)은 원본 네트워크를 가리키는 인접 행렬이다. 참고로 본 발명에 따른 클러스터링 방법에서 원본 네트워크를 가리키는 인접 행렬(MO)은 계산의 편의를 위해 인접 행렬(MO)에 대각선의 값이 1이고 그 외의 값이 모두 0인 대각 행렬(Diagonal Matrix)이 더해진 행렬이 될 수도 있다.
다음으로 도 22b는 노드의 개수가 '1/3'이 될 것을 조건으로 압축이 수행된 압축 네트워크와 상기 압축 네트워크를 가리키는 인접 행렬(MC)을 도시한다. 또한, 오른편에 도시된 인접행렬에서 1 열은 슈퍼 노드(2203), 2 열은 슈퍼 노드(2201) 그리고 3 열은 슈퍼 노드(2205)에 각각 대응된다.
도 22b를 참조하면, 압축 네트워크에서 노드(1, 7, 8), 노드(2, 3, 9) 및 노드(4, 5, 6)는 각각 하나의 슈퍼 노드로 교체된 것을 알 수 있다. 예를 들어, 노드(1)가 압축 대상 노드로 선정되고 노드(7)가 압축 후보 노드로 선정된 뒤, 고립된 노드인 노드(8)를 포함하여 하나의 슈퍼 노드(2203)로 교체된 것일 수 있다.
압축 네트워크에서 슈퍼 노드 사이의 간선에 부여된 가중치는 각 노드의 가중치의 합이 될 수 있으므로 슈퍼 노드(2203)와 슈퍼 노드(2201) 사이의 가중치는 슈퍼 노드(2203)로 교체된 노드(1)와 슈퍼 노드(2201)로 교체된 노드(2), 노드(3) 및 노드(9) 사이에 존재하는 간선의 가중치의 합인 '3'이 될 수 있다. 따라서, 오른편의 인접 행렬에서 1 행 2 열 및 2 행 1열의 값은 3'이 된다.
다음으로, 도 22c는 제1 클러스터링하는 단계(S630) 수행 전의 인접 행렬과 수행한 결과 행렬(MCP)을 도시한다. 즉, 왼편의 인접 행렬은 압축 네트워크를 가리키는 인접 행렬(MC)을 확률 값을 구하기 위해 정규화한 행렬이고, 오른편의 인접 행렬(MCP)은 클러스터링 단계의 반복 횟수를 '3'으로 수행한 결과 행렬이다. 왼편의 인접 행렬(MC)로부터 클러스터링 단계(S1410, S1430, S1450)를 3 회 수행하면 오른편의 인접 행렬(MCP)을 얻을 수 있으며, 자세한 연산 과정은 행렬 연산에 불과하므로 생략한다.
다음으로, 도 22d는 압축 네트워크를 압축 해제하여 얻은 중간 네트워크를 가리키는 인접 행렬(MF)을 도시한다.
도 22d를 참고하면, 인접 행렬(MCP)에서 2 행 3 열의 값이 '0.36'이고 2 행에 대응되는 슈퍼 노드(2201)와 3 열에 대응되는 슈퍼 노드(2205) 사이에 간선을 추가하여 중간 네트워크를 구성할 수 있다. 상술한 바와 같이, 상기 중간 네트워크는 슈퍼 노드(2201) 또는 슈퍼 노드(2205)의 어느 한 노드와 다른 슈퍼 노드에 매핑된 모든 노드에 대한 간선을 연결함으로써 구성될 수 있다. 상기 예에서는 슈퍼 노드(2201)의 노드(2)와 슈퍼 노드(2205)의 노드(4, 5, 6) 사이에 간선이 연결되었기 때문에, 오른편에 도시된 인접 행렬(MF)에서 2 행 4 열, 2 행 5 열 및 2 행 6 열의 값은 '0.36'이 된다. 이와 같은 방식으로 인접 행렬(MCP)에서 0 아닌 모든 항목에 대하여 압축 해제를 수행하면, 오른편에 도시된 인접 행렬(MF)을 얻을 수 있다.
마지막으로, 도 22e는 인접 행렬(MFP)의 각 항목의 값이 수렴할 것을 조건으로 제2 클러스터링하는 단계를 수행한 결과 네트워크를 도시한다. 상단에 도시된 네트워크는 클러스터(2213, 2223, 2233)가 형성된 결과 네트워크를 도시하고, 하단의 인접 행렬은 제 2 클러스터링을 수행한 결과 행렬(MF)을 도시한다.
도 22e를 참고하면, 중간 네트워크를 가리키는 인접 행렬(MF)에 대하여 클러스터링 단계(S1910, S1930, S1950)를 반복하여 수행하는 경우 하단에 도시된 인접 행렬(MFP)을 얻을 수 있다. 상기 클러스터링 단계에서 자세한 연산 과정은 행렬 연산에 불과하므로 생략한다.
상술한 바와 같이 인접 행렬(MFP)에서 행 단위로 0 이 아닌 항목에 대응되는 노드의 그룹이 하나의 클러스터가 될 수 있다. 하단에 도시된 인접 행렬(MF)에서 1 행(2211)의 0 이 아닌 항목에 대응되는 노드의 그룹은 노드(1), 노드(7) 및 노드(8)이므로 상기 노드(1, 7, 8)가 결과 네트워크에서 하나의 클러스터(2213)를 형성할 수 있다. 이와 동일하게, 2 행(2221)의 0 이 아닌 항목에 대응되는 노드의 그룹인 노드(2), 노드(3) 및 노드(9)는 결과 네트워크에서 또 하나의 클러스터(2223)를 형성할 수 있다. 즉, 본 발명에 따른 클러스터링 방법을 수행하는 경우 도 22a의 왼편에 도시된 원본 네트워크로부터 3 개의 클러스터가 형성된 결과 네트워크를 얻을 수 있다.
지금까지 도 22a 내지 도 22d를 참조하여 지금까지 설명한 본 발명에 따른 네트워크 클러스터링 방법이 수행되는 예제를 설명하였다. 단, 상기 예제는 본 발명에 대한 이해의 편의를 제공하기 위한 예시에 불과함에 유의해야 한다.
지금까지 도 6 내지 도 22를 참조하여 설명된 본 발명의 개념은 컴퓨터가 읽을 수 있는 매체 상에 컴퓨터가 읽을 수 있는 코드로 구현될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록 매체는, 예를 들어 이동형 기록 매체(CD, DVD, 블루레이 디스크, USB 저장 장치, 이동식 하드 디스크)이거나, 고정식 기록 매체(ROM, RAM, 컴퓨터 구비 형 하드 디스크)일 수 있다. 상기 컴퓨터로 읽을 수 있는 기록 매체에 기록 된 상기 컴퓨터 프로그램은 인터넷 등의 네트워크를 통하여 다른 컴퓨팅 장치에 전송되어 상기 다른 컴퓨팅 장치에 설치될 수 있고, 이로써 상기 다른 컴퓨팅 장치에서 사용될 수 있다.
도면에서 동작들이 특정한 순서로 도시되어 있지만, 반드시 동작들이 도시된 특정한 순서로 또는 순차적 순서로 실행되어야만 하거나 또는 모든 도시 된 동작들이 실행되어야만 원하는 결과를 얻을 수 있는 것으로 이해되어서는 안 된다. 특정 상황에서는, 멀티 태스킹 및 병렬 처리가 유리할 수도 있다. 더욱이, 위에 설명한 실시예들에서 다양한 구성들의 분리는 그러한 분리가 반드시 필요한 것으로 이해되어서는 안 되고, 설명된 프로그램 컴포넌트들 및 시스템들은 일반적으로 단일 소프트웨어 제품으로 함께 통합되거나 다수의 소프트웨어 제품으로 패키지 될 수 있음을 이해하여야 한다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였지만, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.

Claims (15)

  1. 네트워크 압축 장치가, 원본 네트워크를 구성하는 노드 중 압축 대상 노드를 선정하는 제1 단계;
    상기 네트워크 압축 장치가, 상기 압축 대상 노드와 인접한 이웃 노드 중에서 압축 후보 노드를 선정하되, 상기 이웃 노드는 기 교체된 슈퍼 노드를 포함하는 제2 단계;
    상기 네트워크 압축 장치가, 상기 압축 대상 노드 및 상기 압축 후보 노드를 하나의 슈퍼 노드로 교체하는 제3 단계; 및
    상기 네트워크 압축 장치가, 상기 제1 내지 제3 단계를 반복 수행하여, 상기 슈퍼 노드를 하나 이상 포함하는 압축 네트워크를 구성하는 단계를 포함하는,
    네트워크 압축 방법.
  2. 제1 항에 있어서,
    상기 제2 단계는,
    상기 압축 대상 노드와 인접한 이웃 노드 중에서 상기 압축 대상 노드와 상기 이웃 노드를 연결하는 간선의 가중치가 가장 높은 이웃 노드를 선정하는 단계; 및
    상기 선정 결과, 복수의 이웃 노드가 선정된 경우 선정된 이웃 노드 중에서 상기 선정된 이웃 노드가 갖는 간선의 가중치의 합이 가장 작은 이웃 노드를 상기 압축 후보 노드로 선정하는 단계를 포함하는,
    네트워크 압축 방법.
  3. 제1 항에 있어서,
    상기 제3 단계는,
    상기 원본 네트워크를 구성하는 노드 중에서 상기 압축 대상 노드 및 상기 압축 후보 노드와 공통으로 연결된 이웃 노드를 선정하는 단계; 및
    상기 압축 대상 노드, 상기 압축 후보 노드 및 상기 선정된 이웃 노드를 하나의 슈퍼 노드로 교체하는 단계를 포함하는,
    네트워크 압축 방법.
  4. 제1 항에 있어서,
    상기 제3 단계는,
    상기 원본 네트워크를 구성하는 노드 중에서 상기 압축 대상 노드 또는 상기 압축 후보 노드와 연결된 이웃 노드를 선정하는 단계; 및
    상기 압축 대상 노드, 상기 압축 후보 노드 및 상기 선정된 이웃 노드를 하나의 슈퍼 노드로 교체하는 단계를 포함하되,
    상기 이웃 노드는 상기 압축 대상 노드 또는 상기 압축 후보 노드에 대한 간선만 존재하는 고립된 노드인,
    네트워크 압축 방법.
  5. 네트워크 클러스터링 장치가, 원본 네트워크를 압축하여 압축 네트워크를 구성하되, 상기 압축하는 것은 상기 원본 네트워크를 구성하는 압축 대상 노드와 상기 압축 대상 노드와 인접한 이웃 노드 중에서 선정된 압축 후보 노드를 하나의 슈퍼 노드로 교체하는 것을 포함하고, 상기 이웃 노드는 기 교체된 슈퍼 노드를 포함하는 단계;
    상기 네트워크 클러스터링 장치가, 상기 압축 네트워크를 제1 클러스터링하는 단계;
    상기 네트워크 클러스터링 장치가, 상기 제1 클러스터링된 네트워크를 압축 해제하여 중간 네트워크를 구성하는 단계; 및
    상기 네트워크 클러스터링 장치가, 상기 중간 네트워크를 제2 클러스터링하고, 상기 제2 클러스터링 된 네트워크를 클러스터링 결과 네트워크로 구성하는 단계를 포함하는,
    네트워크 클러스터링 방법.
  6. 제5 항에 있어서,
    상기 제1 클러스터링하는 단계는,
    상기 압축 네트워크를 가리키는 인접 행렬을 이용하여, 상기 압축 네트워크를 구성하는 슈퍼 노드가 연결된 이웃 슈퍼 노드를 경유하여 다른 슈퍼 노드로 갈 수 있는 확률을 산출하는 단계;
    상기 산출된 확률 값을 나타내는 인접 행렬을 이용하여, 상기 확률 값의 차이를 증폭시키는 단계; 및
    상기 증폭시킨 확률 값을 나타내는 인접 행렬에서 열 단위로 기 설정된 값 이하의 확률 값을 삭제하는 단계를 포함하는,
    네트워크 클러스터링 방법.
  7. 제6 항에 있어서,
    상기 제1 클러스터링하는 단계는,
    기 설정된 조건을 만족할 때까지 상기 제1 클러스터링을 반복하여 수행하는 단계를 포함하되,
    상기 제1 클러스터링을 반복하여 수행하는 단계는,
    상기 열 단위로 기 설정된 값 이하의 확률 값을 삭제한 인접 행렬 및 상기 압축 네트워크를 가리키는 인접행렬을 이용하여, 상기 확률을 산출하는 단계, 상기 증폭시키는 단계 및 상기 삭제하는 단계를 수행하는 것인,
    네트워크 클러스터링 방법.
  8. 제5 항에 있어서,
    상기 제2 클러스터링하는 단계는,
    상기 중간 네트워크를 가리키는 인접 행렬 및 상기 원본 네트워크를 가리키는 인접 행렬을 이용하여, 상기 중간 네트워크를 구성하는 노드가 연결된 이웃 노드를 경유하여 다른 노드로 갈 수 있는 확률을 산출하는 단계;
    상기 산출된 확률 값을 나타내는 인접 행렬을 이용하여, 상기 확률 값의 차이를 증폭시키는 단계; 및
    상기 증폭시킨 확률 값을 나타내는 인접 행렬에서 열 단위로 기 설정된 값 이하의 확률 값을 삭제하는 단계를 포함하는,
    네트워크 클러스터링 방법.
  9. 제8 항에 있어서,
    상기 제2 클러스터링하는 단계는,
    기 설정된 조건을 만족할 때까지 상기 제2 클러스터링을 반복하여 수행하는 단계를 포함하되,
    상기 제2 클러스터링을 반복하여 수행하는 단계는,
    상기 열 단위로 기 설정된 값 이하의 확률 값을 삭제한 인접 행렬 및 상기 원본 네트워크를 가리키는 인접행렬을 이용하여, 상기 확률을 산출하는 단계, 상기 증폭시키는 단계 및 상기 삭제하는 단계를 수행하는 것인,
    네트워크 클러스터링 방법.
  10. 병렬 처리 시스템이, 하나 이상의 노드와 간선을 포함하는 네트워크를 CSC(Compressed Sparse Column) 형식의 행렬로 표현하는 단계;
    상기 병렬 처리 시스템이, 상기 CSC 형식에 포함되는 열 포인터 값을 이용하여 상기 행렬을 열 단위로 분할하는 단계;
    상기 병렬 처리 시스템이, 상기 열 단위로 분할된 행렬을 입력 값으로 하는 연산을 실행하는 제1 태스크(Task) 및 제2 태스크를 생성하는 단계; 및
    상기 병렬 처리 시스템이, 제1 프로세서 및 제2 프로세서를 포함하는 복수의 프로세서에 의해 상기 제1 태스크 및 상기 제2 태스크를 병렬 처리(Parallel Processing)하는 단계를 포함하되,
    상기 병렬 처리하는 단계는 상기 제1 프로세서가 상기 제1 태스크를 처리하고, 상기 제2 프로세서가 동시에 상기 제2 태스크를 처리하는 단계를 포함하는,
    병렬 처리 방법.
  11. 제10 항에 있어서,
    상기 연산은,
    상기 네트워크를 구성하는 노드가 연결된 이웃 노드를 경유하여 다른 노드로 갈 수 있는 확률을 산출하는 연산, 상기 확률 값의 차이를 증폭시키는 연산, 또는 행렬의 열 단위로 기 설정된 값 이하의 확률 값을 삭제하는 연산 중 적어도 어느 하나 이상의 연산을 포함하는,
    병렬 처리 방법.
  12. 하나 이상의 프로세서;
    네트워크 인터페이스;
    상기 프로세서에 의하여 수행되는 컴퓨터 프로그램을 로드(Load)하는 메모리; 및
    대용량 네트워크 데이터 및 상기 컴퓨터 프로그램을 저장하는 스토리지를 포함하되,
    상기 컴퓨터 프로그램은,
    원본 네트워크를 구성하는 노드 중 압축 대상 노드를 선정하는 제1 오퍼레이션;
    상기 압축 대상 노드와 인접한 이웃 노드 중에서 압축 후보 노드를 선정하되, 상기 이웃 노드는 기 교체된 슈퍼 노드를 포함하는 제2 오퍼레이션;
    상기 압축 대상 노드 및 상기 압축 후보 노드를 하나의 슈퍼 노드로 교체하는 제3 오퍼레이션; 및
    상기 제1 내지 제3 오퍼레이션을 반복 수행하여, 상기 슈퍼 노드를 하나 이상 포함하는 압축 네트워크를 구성하는 오퍼레이션을 포함하는,
    네트워크 압축 장치.
  13. 제12 항에 있어서,
    상기 제3 오퍼레이션은,
    상기 원본 네트워크를 구성하는 노드 중에서 상기 압축 대상 노드 및 상기 압축 후보 노드와 공통으로 연결된 이웃 노드를 선정하는 오퍼레이션; 및
    상기 압축 대상 노드, 상기 압축 후보 노드 및 상기 선정된 이웃 노드를 하나의 슈퍼 노드로 교체하는 오퍼레이션을 포함하는,
    네트워크 압축 장치.
  14. 제12 항에 있어서,
    상기 제3 오퍼레이션은,
    상기 원본 네트워크를 구성하는 노드 중에서 상기 압축 대상 노드 또는 상기 압축 후보 노드와 연결된 이웃 노드를 선정하는 오퍼레이션; 및
    상기 압축 대상 노드, 상기 압축 후보 노드 및 상기 선정된 이웃 노드를 하나의 슈퍼 노드로 교체하는 오퍼레이션을 포함하되,
    상기 이웃 노드는 상기 압축 대상 노드 또는 상기 압축 후보 노드에 대한 간선만 존재하는 고립된 노드인,
    네트워크 압축 장치.
  15. 하나 이상의 프로세서;
    네트워크 인터페이스;
    상기 프로세서에 의하여 수행되는 컴퓨터 프로그램을 로드(Load)하는 메모리; 및
    대용량 네트워크 데이터 및 상기 컴퓨터 프로그램을 저장하는 스토리지를 포함하되,
    상기 컴퓨터 프로그램은,
    원본 네트워크를 압축하여 압축 네트워크를 구성하되, 상기 압축하는 것은 상기 원본 네트워크를 구성하는 압축 대상 노드와 상기 압축 대상 노드와 인접한 이웃 노드 중에서 선정된 압축 후보 노드를 하나의 슈퍼 노드로 교체하는 것을 포함하고, 상기 이웃 노드는 기 교체된 슈퍼 노드를 포함하는 오퍼레이션;
    상기 압축 네트워크를 제1 클러스터링하는 오퍼레이션;
    상기 제1 클러스터링된 네트워크를 압축 해제하여 중간 네트워크를 구성하는 오퍼레이션; 및
    상기 중간 네트워크를 제2 클러스터링하고, 상기 제2 클러스터링 된 네트워크를 클러스터링 결과 네트워크로 구성하는 오퍼레이션을 포함하는,
    네트워크 클러스터링 장치.
KR1020160101611A 2016-08-10 2016-08-10 네트워크 클러스터링 방법 및 장치 KR101700108B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160101611A KR101700108B1 (ko) 2016-08-10 2016-08-10 네트워크 클러스터링 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160101611A KR101700108B1 (ko) 2016-08-10 2016-08-10 네트워크 클러스터링 방법 및 장치

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020170009500A Division KR101707076B1 (ko) 2017-01-20 2017-01-20 네트워크 클러스터링 방법 및 장치

Publications (1)

Publication Number Publication Date
KR101700108B1 true KR101700108B1 (ko) 2017-01-31

Family

ID=57990762

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160101611A KR101700108B1 (ko) 2016-08-10 2016-08-10 네트워크 클러스터링 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101700108B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110389953A (zh) * 2019-05-24 2019-10-29 中国科学院计算技术研究所 基于压缩图的数据存储方法、存储介质、存储装置和服务器
KR102340895B1 (ko) * 2020-08-28 2021-12-20 고려대학교 산학협력단 양자 근사법을 이용한 네트워크 스케줄링 장치 및 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130066787A (ko) * 2011-12-13 2013-06-21 성균관대학교산학협력단 무선 센서 네트워크에서 균형 체인 토폴로지를 생성하는 방법
US20140149590A1 (en) * 2012-11-26 2014-05-29 Amazon Technologies, Inc. Scaling computing clusters in a distributed computing system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130066787A (ko) * 2011-12-13 2013-06-21 성균관대학교산학협력단 무선 센서 네트워크에서 균형 체인 토폴로지를 생성하는 방법
US20140149590A1 (en) * 2012-11-26 2014-05-29 Amazon Technologies, Inc. Scaling computing clusters in a distributed computing system

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
S. V. Dongen, "Graph Clustering by Flow Simulation", PhD thesis, University of Utrecht, 2000.

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110389953A (zh) * 2019-05-24 2019-10-29 中国科学院计算技术研究所 基于压缩图的数据存储方法、存储介质、存储装置和服务器
CN110389953B (zh) * 2019-05-24 2021-10-29 中国科学院计算技术研究所 基于压缩图的数据存储方法、存储介质、存储装置和服务器
KR102340895B1 (ko) * 2020-08-28 2021-12-20 고려대학교 산학협력단 양자 근사법을 이용한 네트워크 스케줄링 장치 및 방법

Similar Documents

Publication Publication Date Title
Khani et al. Improved approximation algorithms for the min-max tree cover and bounded tree cover problems
EP3029614B1 (en) Parallel development and deployment for machine learning models
Chen et al. Scenario tree reduction methods through clustering nodes
KR101700108B1 (ko) 네트워크 클러스터링 방법 및 장치
US8515882B2 (en) Efficient storage of individuals for optimization simulation
CN112633481A (zh) 一种多跳图卷积神经网络模型及其训练方法
Devarajan et al. An intelligent, adaptive, and flexible data compression framework
Li et al. Dlw-nas: Differentiable light-weight neural architecture search
KR101990735B1 (ko) 사전 그래프 분할 기반 행렬 벡터 곱을 이용한 대규모 그래프 마이닝 방법 및 장치
KR101707076B1 (ko) 네트워크 클러스터링 방법 및 장치
CN111400410B (zh) 知识图谱的查询方法、装置、计算机设备和存储介质
KR20220134035A (ko) 컨볼루션 연산을 위한 프로세싱 인 메모리 방법
Harrison et al. High performance rearrangement and multiplication routines for sparse tensor arithmetic
Li et al. A subdomain synthesis method for global analysis of nonlinear dynamical systems based on cell mapping
CN112651492B (zh) 一种自连接宽度图卷积神经网络模型系统及训练方法
JP7374829B2 (ja) ニューラルネット解析装置、ニューラルネット解析方法及びプログラム
US10318483B2 (en) Control method and control device
JP7074191B2 (ja) 情報処理装置、テンソル圧縮方法、及びプログラム
Gnedin et al. Block characters of the symmetric groups
CN114861057B (zh) 资源发送方法、推荐模型的训练及装置
Jindal et al. Compression using Matrix Folding Algorithm
KR102621139B1 (ko) 프레임 양자화에 기반한 분산 행렬 곱 연산 방법 및 장치
JP5901558B2 (ja) Ppr演算装置、方法、及びプログラム
JP7126208B2 (ja) 集合族簡約化装置、集合族簡約化方法、及び集合族簡約化プログラム
CN114826278B (zh) 基于布尔矩阵分解的图数据压缩方法

Legal Events

Date Code Title Description
A107 Divisional application of patent
GRNT Written decision to grant