KR20160095842A - Graph data ditributing method using clustering goodness of fit - Google Patents

Graph data ditributing method using clustering goodness of fit Download PDF

Info

Publication number
KR20160095842A
KR20160095842A KR1020150017295A KR20150017295A KR20160095842A KR 20160095842 A KR20160095842 A KR 20160095842A KR 1020150017295 A KR1020150017295 A KR 1020150017295A KR 20150017295 A KR20150017295 A KR 20150017295A KR 20160095842 A KR20160095842 A KR 20160095842A
Authority
KR
South Korea
Prior art keywords
nodes
node
cluster
clusters
initial
Prior art date
Application number
KR1020150017295A
Other languages
Korean (ko)
Other versions
KR101672621B1 (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 KR1020150017295A priority Critical patent/KR101672621B1/en
Publication of KR20160095842A publication Critical patent/KR20160095842A/en
Application granted granted Critical
Publication of KR101672621B1 publication Critical patent/KR101672621B1/en

Links

Images

Classifications

    • G06F17/30705
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/35Clustering; Classification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • G06F17/30958

Landscapes

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

Abstract

Disclosed is a data distributing method. The graph data distributing method comprises the steps of: choosing a plurality of initial nodes, among a plurality of nodes, to arrange the same in a plurality of clusters; arranging each of the plurality of chosen initial nodes in a corresponding cluster among the plurality of clusters; determining the cluster suitability about each of the plurality of clusters of the nodes to be clustered, among the plurality of nodes except for the plurality of initial nodes; and clustering the nodes to be clustered around a corresponding cluster among the plurality of clusters, according to the determined cluster suitability. The objective of the present invention is to provide the graph data distributing method capable of optimized data clustering in processing graph data by using cluster suitability of adjacent nodes.

Description

클러스터 적합도를 이용한 그래프 데이터 분산 방법{GRAPH DATA DITRIBUTING METHOD USING CLUSTERING GOODNESS OF FIT}{GRAPH DATA DITRIBUTING METHOD USING CLUSTERING GOODNESS OF FIT}

본 발명의 개념에 따른 실시 예는 그래프 데이터 분석 기술에 대한 것으로, 보다 상세하게는 기준이 되는 초기 노드를 선정한 후, 클러스터링하고자하는 노드들 각각에 대한 인접 노드의 클러스터 적합도를 이용하여 클러스터링을 수행하는 고속 그래프 데이터 처리에 최적화된 그래프 데이터 분산 방법에 대한 것이다.An embodiment according to the concept of the present invention relates to a graph data analysis technique. More specifically, after selecting an initial node to be a reference, clustering is performed using cluster fitness of neighbor nodes for each of the nodes to be clustered And a graph data distribution method optimized for high-speed graph data processing.

1936년 쾨니히스베르크의 다리에 관한 오일러의 연구에서 출발한 그래프 이론은 유한개의 정점(vertex 또는 node)과 간선(edge 또는 link)의 결합 양식에 관한 이론이다. 즉, 그래프 이론에서의 그래프란 막대 그래프나 2차 함수의 그래프와 같이 양의 변화를 시각적으로 나타낼 때의 그래프를 의미하는 것이 아니라, 주어진 몇 개의 정점과 그 정점을 끝점으로 하는 몇 개의 변으로 이루어진 도형을 의미하는 것이다. 이때, 상기 정점은 여러 가지 특성을 가질 수 있는 객체를 의미하고, 간선인 변은 이러한 정점들 사이의 관계를 의미한다. 현재, 그래프 이론은 유전자나 화학유기물의 구조, 바이러스 및 백신의 전파, 사람과 사람 사이의 의견이 전파되고 공유되는 소셜 네트워크 등 화학, 생물, 정보공학, 사회학 등 다양한 분야에 응용되고 있다. 특히, 소셜 네트워크 분야는 최근 급진적으로 발전하고 있는데, 페이스북의 이용자는 2013년 기준 약 12억명의 사용자가, 트위터에는 약 2.32억 명의 사용자가 활동 중인 것으로 조사되고 있다. 이와 같이 수 많은 사용자와 더불어 발생하는 데이터의 양 또한 기하급수적으로 증가하고 있으며, 이에 하나의 서버나 물리적인 클러스터 내에서 데이터를 처리하던 방식에서 여러 대의 서버나 클러스터를 이용한 분산 처리 방법으로 변화가 이루어지고 있다. 그러나 그래프 데이터의 경우 각 데이터가 서로 연관 관계가 있기 때문에 종래의 단순 분할 클러스터링 방법은 데이터 처리 속도에 한계가 있었다.The graph theory, starting from Euler's study of the Königsberg in 1936, is a theory of the combination of finite number of vertices or nodes and edges or links. That is, the graph in the graph theory does not mean a graph in which a quantitative change is visually represented as a bar graph or a graph of a quadratic function, but a graph having several vertices and a few edges It means a figure. At this time, the vertex means an object capable of having various characteristics, and the edge is a relation between the vertices. Currently, graph theory is applied to various fields such as chemistry, biology, information engineering, and sociology such as the structure of genes and chemical organic matter, propagation of viruses and vaccines, and social networks where opinions are shared and shared between people and people. In particular, the social networking sector is undergoing radical development in recent years, with about 1.2 billion users in 2013 and about 232 million users on Twitter. In this way, the amount of data that is generated with many users is increasing exponentially. Therefore, the way of processing data in one server or physical cluster has changed from a method of distributed processing using several servers or clusters ought. However, in the case of the graph data, since the respective data are correlated with each other, the conventional simple segmented clustering method has a limitation in data processing speed.

본 발명이 해결하고자 하는 기술적인 과제는 그래프 노드들 각각에 대한 인접 노드의 클러스터 적합도를 이용함으로써 그래프 데이터 처리에 최적화된 데이터 클러스터링을 수행할 수 있는 그래프 데이터 분산 방법을 제공하는 것이다.It is a technical object of the present invention to provide a graph data distribution method capable of performing data clustering optimized for graph data processing by using cluster fitness of neighbor nodes for each graph node.

복수의 노드들 중 복수의 클러스터들 각각에 배치하기 위한 복수의 초기 노드들을 선정하는 단계와 상기 선정한 복수의 초기 노드들 각각을 상기 복수의 클러스터들 중 해당하는 클러스터에 배치하는 단계와 상기 복수의 초기 노드들을 제외한 상기 복수의 노드들 중 클러스터링하고자 하는 노드의 상기 복수의 클러스터들 각각에 대한 클러스터 적합도를 결정하는 단계 및 상기 결정한 클러스터 적합도에 따라 상기 클러스터링하고자 하는 노드를 상기 복수의 클러스터들 중 해당 클러스터에 클러스터링하는 단계를 포함한다.Selecting a plurality of initial nodes to be placed in each of a plurality of clusters among a plurality of nodes, placing each of the selected plurality of initial nodes in a corresponding one of the plurality of clusters, Determining a cluster fitness for each of the plurality of clusters of the plurality of nodes other than the plurality of nodes to which the cluster is to be clustered and determining a cluster fitness for each of the plurality of clusters according to the determined cluster suitability And clustering.

이때, 상기 복수의 초기 노드들을 선정하는 단계는 상기 복수의 노드들 각각에 대한 제1번째 인접 노드들 내지 제N번째 인접 노드들 중에서 리프 노드의 개수를 각각 카운트하는 단계와 상기 각각 카운트한 리프 노드의 개수에 소정의 가중치들 각각을 적용하여 상기 복수의 노드들 각각에 대한 초기 스코어를 계산하는 단계 및 상기 계산한 초기 스코어가 큰 노드의 순서대로 상기 복수의 클러스터 개수만큼 상기 초기 노드들을 선정하는 단계를 포함할 수 있다.The selecting of the plurality of initial nodes may include counting the number of leaf nodes among first to Nth neighbor nodes for each of the plurality of nodes, Calculating an initial score for each of the plurality of nodes by applying predetermined weights to the number of nodes in the cluster, and selecting the initial nodes by the number of the plurality of clusters in the order of the calculated initial score, . ≪ / RTI >

실시 예에 따라, 상기 초기 스코어를 계산하는 단계는 상기 소정의 가중치들 중 제1가중치 내지 제N가중치 각각을 상기 카운트한 제1번째 인접 노드들 중의 리프 노드 개수 내지 상기 카운트한 제N번째 인접 노드들 중의 리프 노드인 개수 각각에 곱하는 방식으로 적용하는 단계 및 상기 제1가중치 내지 상기 제N가중치가 적용된 값들의 총합을 상기 복수의 노드들 각각에 대한 초기 스코어로 계산하는 단계로 이루어질 수 있다. According to an embodiment of the present invention, the step of calculating the initial score may include calculating the initial score from the number of leaf nodes in the first neighboring nodes counted from the first weight to the Nth weight among the predetermined weights, Multiplying each of the leaf nodes in the plurality of nodes by a sum of the first weight and the Nth weight, and calculating an sum of the first weighted value and the Nth weighted value as an initial score for each of the plurality of nodes.

이때, 상기 제1가중치 내지 상기 제N가중치 각각의 크기는 상기 제1가중치로부터 상기 제N가중치에 이르는 순으로 감소할 수 있다.At this time, the sizes of the first to Nth weights may be reduced in order from the first weight to the Nth weight.

상기 클러스터 적합도를 산정하는 단계는 상기 복수의 클러스터들 각각에 포함되어있는 노드들 중에서, 상기 클러스터링하고자하는 노드에 대한 제1번째 인접 노드들 내지 제N번째 인접 노드들의 개수를 각각 카운트하는 단계와 상기 각각 카운트한 인접 노드들의 개수에 소정의 가중치들 각각을 적용하여 상기 복수의 클러스터들 각각에 대한 클러스터링 스코어를 계산하는 단계 및 상기 계산한 클러스터링 스코어의 크기에 따라 상기 복수의 클러스터들 각각에 대한 클러스터 적합도를 결정하는 단계를 포함한다.The step of calculating the cluster fitness may include counting the number of first to Nth neighboring nodes for the node to be clustered among the nodes included in each of the plurality of clusters, Calculating a clustering score for each of the plurality of clusters by applying predetermined weights to the number of neighboring nodes that have been counted, calculating a cluster fitness score for each of the plurality of clusters according to the calculated size of the clustering score, .

이때, 상기 클러스터링 스코어를 계산하는 단계는 상기 소정의 가중치들 중 제1가중치 내지 제N가중치 각각을 상기 카운트한 제1번째 인접 노드들 내지 상기 제N번째 인접 노드들의 개수 각각에 곱하는 방식으로 적용하는 단계 및 상기 제1가중치 내지 상기 제N가중치가 적용된 값들의 총합을 상기 복수의 클러스터들 각각에 대한 클러스터링 스코어로 계산하는 단계를 포함할 수 있다. In this case, the step of calculating the clustering score may be performed by multiplying each of the first to Nth weights among the predetermined weights by the counted first neighbor nodes to the Nth neighbor nodes, And calculating a sum of the values to which the first weight to the Nth weight is applied as a clustering score for each of the plurality of clusters.

실시 예에 따라, 상기 클러스터링 스코어의 크기가 동일한 경우에 상기 복수의 클러스터들 중 클러스터링 된 노드의 개수가 적은 클러스터의 클러스터 적합도를 높게 설정할 수 있다.According to an embodiment, when the size of the clustering score is the same, the cluster suitability of a cluster having a small number of clustered nodes among the plurality of clusters can be set high.

만일 상기 복수의 클러스터들에 클러스터링 된 노드의 개수가 동일한 경우에는, 상기 클러스터링하고자하는 노드를 랜덤으로 상기 복수의 클러스터들 중 어느 하나에 클러스터링할 수 있다. If the number of nodes clustered in the plurality of clusters is the same, the node to be clustered may be randomly clustered in any one of the plurality of clusters.

상기와 같이 본 발명의 일 실시 예에 따른 그래프 데이터 분산 방법은 노드들 각각에 대한 클러스터 적합도를 이용하여 서로 연관된 노드들을 해당 클러스터에 클러스터링할 수 있으므로, 클러스터링 이후 대용량의 그래프 데이터 처리 속도를 획기적으로 향상시킬 수 있는 효과가 있다.As described above, since the graph data distribution method according to the embodiment of the present invention can cluster the nodes associated with each other using the cluster suitability for each of the nodes into the corresponding cluster, the graph data processing speed after the clustering is greatly improved There is an effect that can be made.

본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 일 실시 예에 따른 그래프 데이터 분산 방법을 설명하기 위한 그래프의 예시도이다.
도 2는 본 발명의 일 실시 예에 따른 클러스터 적합도를 이용하여 도 1에 도시된 그래프 데이터를 분산하는 방법을 설명하기 위한 순서도이다.
도 3은 본 발명의 일 실시 예에 따른 초기 노드들을 선정하기 위한 방법을 설명하기 위한 순서도이다.
도 4는 본 발명의 일 실시 예에 따른 클러스터 적합도를 결정하기 위한 방법을 설명하기 위한 순서도이다.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS In order to more fully understand the drawings recited in the detailed description of the present invention, a detailed description of each drawing is provided.
1 is an exemplary diagram illustrating a graph data distribution method according to an embodiment of the present invention.
FIG. 2 is a flowchart for explaining a method of distributing graph data shown in FIG. 1 using a cluster fitness according to an embodiment of the present invention.
3 is a flowchart illustrating a method for selecting initial nodes according to an embodiment of the present invention.
4 is a flowchart illustrating a method for determining a cluster fitness according to an exemplary embodiment of the present invention.

본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명들은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.It is to be understood that the specific structural or functional descriptions of embodiments of the present invention disclosed herein are only for the purpose of illustrating embodiments of the inventive concept, But may be embodied in many different forms and is not limited to the embodiments set forth herein.

본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.Embodiments in accordance with the concepts of the present invention are capable of various modifications and may take various forms, so that the embodiments are illustrated in the drawings and described in detail herein. It should be understood, however, that it is not intended to limit the embodiments according to the concepts of the present invention to the particular forms disclosed, but includes all modifications, equivalents, or alternatives falling within the spirit and scope of the invention.

제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1구성요소는 제2구성요소로 명명될 수 있고, 유사하게 제2구성요소는 제1구성요소로도 명명될 수 있다.The terms first, second, etc. may be used to describe various elements, but the elements should not be limited by the terms. The terms are intended to distinguish one element from another, for example, without departing from the scope of the invention in accordance with the concepts of the present invention, the first element may be termed the second element, The second component may also be referred to as a first component.

어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.It is to be understood that when an element is referred to as being "connected" or "connected" to another element, it may be directly connected or connected to the other element, . On the other hand, when an element is referred to as being "directly connected" or "directly connected" to another element, it should be understood that there are no other elements in between. Other expressions that describe the relationship between components, such as "between" and "between" or "neighboring to" and "directly adjacent to" should be interpreted as well.

본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다.The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. The singular expressions include plural expressions unless the context clearly dictates otherwise.

본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설명된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.In this specification, the terms "comprises" or "having", etc. are intended to specify the presence of stated features, integers, steps, operations, elements, parts or combinations thereof, , Steps, operations, components, parts, or combinations thereof, as a matter of principle.

다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미가 있다.Unless otherwise defined, all terms used herein, including technical or scientific terms, have the same meaning as commonly understood by one of ordinary skill in the art to which this invention belongs.

일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.Terms such as those defined in commonly used dictionaries are to be interpreted as having a meaning consistent with the meaning of the context in the relevant art and, unless explicitly defined herein, are to be interpreted as ideal or overly formal Do not.

이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시 예를 설명함으로써, 본 발명을 상세히 설명한다.BEST MODE FOR CARRYING OUT THE INVENTION Hereinafter, the present invention will be described in detail with reference to the preferred embodiments of the present invention with reference to the accompanying drawings.

도 1은 본 발명의 일 실시 예에 따른 그래프 데이터 분산 방법을 설명하기 위한 그래프의 예시도이다.1 is an exemplary diagram illustrating a graph data distribution method according to an embodiment of the present invention.

도 1을 참조하면, 도시된 그래프는 여러 가지 특성을 가질 수 있는 객체를 의미하는 복수의 노드들(node_A 내지 node_Q)과 복수의 노드들(node_A 내지 node_Q) 사이의 관계를 의미하는 복수의 에지들(edge_1 내지 edge_15)을 포함한다.Referring to FIG. 1, the graph includes a plurality of nodes (node_A to node_Q) representing an object having various characteristics and a plurality of edges (node_A to node_Q) (edge_1 to edge_15).

이때, 상기 그래프가 포함하는 복수의 노드들(node_A 내지 node_Q) 중에서 각 가지의 끝에 존재하며, 후손 노드(descendant node)를 보유하지 않은 노드를 리프 노드(leaf node)라 한다.At this time, a node that exists at the end of each branch among a plurality of nodes (node_A to node_Q) included in the graph and does not have a descendant node is called a leaf node.

예컨대, 도 1의 그래프에서 각 가지의 끝에 존재하고 후손 노드를 보유하지 않은 리프노드들은 node_A, node_B, node_F, node_G, node_I, node_J, node_L, node_O, node_P 및 node_Q이다.For example, in the graph of FIG. 1, the leaf nodes that exist at the end of each branch and do not have a descendant node are node_A, node_B, node_F, node_G, node_I, node_J, node_L, node_O, node_P and node_Q.

한편, 복수의 노드들(node_A 내지 node_Q) 중 임의의 노드에 대한 인접 노드란 상기 임의의 노드로부터 에지로 연결되어 있는 노드들을 의미하며, 특히 제1번째 인접 노드란 상기 임의의 노드(예컨대, node_A)로부터 최인접한 노드, 즉 하나의 에지(edge_1)만으로 연결된 노드(예컨대, node_D)를 의미한다.Meanwhile, the adjacent node to any one of the plurality of nodes (node_A to node_Q) refers to the nodes connected from the arbitrary node to the edge, and in particular, the first neighboring node means any node (E.g., node_D) connected to only the edge (edge_1) from the closest node (e.g., node_D).

또한, 상기 임의의 노드에 대한 제2번째 인접 노드란 상기 임의의 노드로부터 두 개의 에지로 연결된 노드를 의미한다.In addition, the second neighbor node for the arbitrary node means a node connected from the arbitrary node to two edges.

예를 들어, node_A에 대한 제2번째 인접 노드들은 node_C(edge_1 및 edge_3으로 연결), node_E(edge_1 및 edge_4로 연결), node_H(edge_1 및 edge_12로 연결), node_K(edge_1 및 edge_10으로 연결) 및 node_M(edge_1 및 edge_6으로 연결)이 된다.For example, the second neighbor nodes for node_A include node_C (connected to edge_1 and edge_3), node_E (connected to edge_1 and edge_4), node_H (connected to edge_1 and edge_12), node_K (connected by edge_1 and edge_6).

같은 방식으로, 복수의 노드들(node_A 내지 node_Q) 중 임의의 노드에 대한 제N번째 인접 노드란 상기 임의의 노드로부터 N 개의 에지로 연결된 노드를 의미한다.In the same manner, the Nth neighbor node for any one of the plurality of nodes (node_A to node_Q) means a node connected from the arbitrary node to N edges.

도 2는 본 발명의 일 실시 예에 따른 클러스터 적합도를 이용하여, 도 1에 도시된 그래프의 데이터를 분산하는 방법을 설명하기 위한 순서도이다.FIG. 2 is a flowchart for explaining a method of distributing data of the graph shown in FIG. 1 using a cluster fitness according to an embodiment of the present invention.

도 1 및 도 2를 참조하면, 본 발명의 일 실시 예에 따른 그래프 데이터 분산방법은 우선 복수의 노드들(node_A 내지 node_Q) 중에서 복수의 클러스터들 각각에 분산하여 배치하기 위한 복수의 초기 노드들을 선정한다(S100).Referring to FIGS. 1 and 2, a graph data distribution method according to an embodiment of the present invention includes a step of selecting a plurality of initial nodes for distributing and arranging among a plurality of nodes (node_A to node_Q) (S100).

실시 예에 따라, 상기 복수의 초기 노드들의 수는 복수의 클러스터들의 개수만큼 선정할 수 있다. According to an embodiment, the number of the plurality of initial nodes can be selected by the number of the plurality of clusters.

본 명세서에서 클러스터(Cluster)란 단일의 서버 또는 여러 서버들의 묶음을 의미하며, 설명의 편의를 위하여 2개의 클러스터들(도 1에 도시된 Cluster1 및 Cluster2)을 예로 들어 설명한다.In this specification, a cluster means a single server or a bundle of servers. For convenience of description, two clusters (Cluster 1 and Cluster 2 shown in FIG. 1) will be described as an example.

상기 복수의 초기 노드들은 상기 클러스터들 중 어느 하나에서 또는 상기 클러스터와는 별도의 그래프 데이터 처리 클러스터(또는 그래프 데이터 처리 서버)에서 다음과 같은 과정을 통해 선정될 수 있다.The plurality of initial nodes may be selected in any one of the clusters or in a graph data processing cluster (or graph data processing server) separate from the cluster through the following process.

도 3은 본 발명의 일 실시 예에 따른 초기 노드들을 선정하기 위한 방법을 설명하기 위한 순서도이다.3 is a flowchart illustrating a method for selecting initial nodes according to an embodiment of the present invention.

도 1 내지 도 3을 참조하면, 상기 복수의 초기 노드들을 선정하는 방법은 다음과 같다.1 to 3, a method of selecting the plurality of initial nodes is as follows.

우선, 복수의 노드들(node_A 내지 node_Q) 각각에 대한 제1번째 인접 노드들 내지 제N번째 인접 노드들 중에서 리프 노드의 개수를 각각 카운트한다(S30).First, the number of leaf nodes among the first to Nth neighbor nodes for each of the plurality of nodes (node_A to node_Q) is counted (S30).

예를 들어, node_A에 대해서 제1번째 인접 노드(node_D)가 리프 노드인 개수와 제2번째 인접 노드들(node_C, node_E, node_H, node_K 및 node_M) 중의 리프 노드의 개수 및 제3번째 인접 노드들(node_B, node_F, node_G, node_I, node_J, node_L, node_O, node_P 및 node_Q) 중의 리프 노드의 개수를 카운트한다.For example, for node_A, the number of leaf nodes in the first neighbor node (node_D), the number of leaf nodes in the second neighbor nodes (node_C, node_E, node_H, node_K and node_M) (node_B, node_F, node_G, node_I, node_J, node_L, node_O, node_P and node_Q).

즉, node_A의 제1번째 인접 노드(node_D) 중 리프 노드의 개수는 0이고, 제2번째 인접 노드들(node_C, node_E, node_H, node_K 및 node_M) 중의 리프 노드 개수는 0이며, 제3번째 인접 노드들(node_B, node_F, node_G, node_I, node_J, node_L, node_O, node_P 및 node_Q) 중의 리프 노드 개수는 9이다.That is, the number of leaf nodes among the first neighbor nodes (node_D) of the node_A is 0, the number of leaf nodes in the second neighbor nodes (node_C, node_E, node_H, node_K and node_M) is 0, The number of leaf nodes in the nodes (node_B, node_F, node_G, node_I, node_J, node_L, node_O, node_P, and node_Q) is 9.

이와 동일한 방법으로, node_B에 대해서도 제1번째 인접 노드(node_C)로부터 제4번째 인접 노드(node_F, node_G, node_I, node_J, node_L, node_O, node_P 및 node_Q)까지 각각 리프 노드의 개수를 카운트한다.In the same manner, the number of leaf nodes is counted from the first neighbor node (node_C) to the fourth neighbor node (node_F, node_G, node_I, node_J, node_L, node_O, node_P, and node_Q).

이때, node_A는 제4번째 이상의 인접 노드는 존재하지 않고, node_B는 제5번째 인접 노드가 존재하지 않기 때문에 각각 제3번째 인접 노드와 제4번째 인접 노드들까지만 리프 노드들의 개수를 카운트한다.At this time, node_A does not have a fourth or more adjacent node, and node_B counts the number of leaf nodes only to the third neighboring node and the fourth neighboring node because there is no fifth neighboring node.

만일 그 이상의 인접 노드(예컨대, 제4번째 이상의 인접 노드)가 존재하면, 그에 해당하는 인접 노드가 리프 노드에 해당하는 개수를 카운트해야 한다.If there are more adjacent nodes (for example, the fourth or more neighbor nodes), the corresponding node should count the number corresponding to the leaf node.

상기와 같은 방법으로, 복수의 노드들(node_A 내지 node_Q) 각각에 대한 제1번째 인접 노드들 내지 제N번째 인접 노드들 중에서 리프 노드의 개수를 각각 카운트한다(S30).In the same manner as described above, the number of leaf nodes among the first to Nth neighbor nodes for each of the plurality of nodes (node_A to node_Q) is counted (S30).

순차적으로 복수의 노드들(node_A 내지 node_Q) 각각에 대해 카운트한 리프 노드의 개수에 소정의 가중치들(W_1 내지 W_N) 각각을 적용(S50)하여 상기 복수의 노드들 각각에 대한 초기 스코어(iscore_A 내지 iscore_Q)를 계산한다(S70).Sequentially applying predetermined weight values W_1 to W_N to the number of leaf nodes counted for each of the plurality of nodes (node_A to node_Q) (S50) to determine an initial score (iscore_A to node_Q) for each of the plurality of nodes iscore_Q) (S70).

실시 예에 따라, 상기 카운트한 리프 노드의 개수에 소정의 가중치들(W_1 내지 W_N) 각각을 적용한다는 의미는, 제1가중치 내지 제N가중치 각각을 상기 카운트한 제1번째 인접 노드들 중의 리프 노드 개수 내지 상기 카운트한 제N번째 인접 노드들 중의 리프 노드인 개수 각각에 곱하는 것을 의미할 수 있다.According to an embodiment, applying predetermined weight values W_1 to W_N to the number of counted leaf nodes means that the leaf nodes of the first neighbor nodes, which count the first to Nth weights, To the number of leaf nodes in the counted N-th neighbor nodes.

이때, 제1가중치 내지 제N가중치(W_1 ~ W_N) 각각의 크기는 시스템 목적에 따라서 다양한 크기로 설정될 수 있으며, 제1가중치(W_1)로부터 상기 제N가중치(W_N)에 이르는 순으로 감소하도록 설정될 수도 있다.At this time, the sizes of the first to Nth weights W_1 to W_N may be set to various sizes according to the system purpose, and may be reduced in order from the first weight W_1 to the Nth weight W_N May be set.

이후, 상기 제1가중치 내지 상기 제N가중치(W_1 ~ W_N)가 적용된 값들의 총합을 상기 복수의 노드들(node_A 내지 node_Q) 각각에 대한 초기 스코어(iscore_A 내지 iscore_Q)로 계산한다(S70).In step S70, the sum of the values of the first to Nth weights W_1 to W_N is calculated as an initial score (iscore_A to iscore_Q) for each of the plurality of nodes (node_A to node_Q).

보다 상세한 설명을 위해, node_M을 예로 들어 설명한다. For a more detailed description, node_M will be described as an example.

이때, node_M에 대한 제4번째 이상의 인접 노드들은 존재하지 않으므로, 제1가중치 내지 제3가중치(W_1 내지 W_3) 각각을 상기 카운트한 제1번째 인접 노드들 중의 리프 노드 개수 내지 상기 카운트한 제3번째 인접 노드들 중의 리프 노드인 개수 각각에 곱하는 방식으로 적용한다.At this time, since there is no fourth or more adjacent nodes for node_M, the number of leaf nodes in the first neighboring nodes counted from the first weight to the third weights W_1 to W_3, The number of leaf nodes in adjacent nodes is multiplied.

즉, node_M에 대한 제1번째 인접 노드들(node_D, node_O, node_P 및 node_Q) 중 리프 노드(node_O, node_P 및 node_Q)의 개수, 제2번째 인접 노드들(node_A, node_C, node_E, node_K 및 node_H) 중 리프 노드(node_A)의 개수, 제3번째 인접 노드들(node_B, node_F, node_G, node_I, node_J 및 node_L) 중 리프 노드(node_B, node_F, node_G, node_I, node_J 및 node_L)의 개수는 각각 3, 1 및 5이다.That is, the number of leaf nodes (node_O, node_P and node_Q) among the first neighbor nodes (node_D, node_O, node_P and node_Q) for the node_M, the number of the second neighbor nodes (node_A, node_C, node_E, node_K, The number of leaf nodes (node_B, node_F, node_G, node_I, node_J, and node_L) among the number of middle leaf nodes (node_A) and the third neighbor nodes (node_B, node_F, node_G, 1 and 5, respectively.

따라서, node_M에 대한 초기 스코어(iscore_M)는 3과 제1가중치(W_1)의 곱, 1과 제2가중치(W_2)의 곱 및 5와 제3가중치(W_3)의 곱의 총합(iscore_M = 3 * W_1 + 1 * W_2 + 5 * W_3)으로 결정된다.Therefore, the initial score (iscore_M) for node_M is sum (iscore_M = 3 *) of the product of 3 and the first weight W_1, the product of 1 and the second weight W_2 and the product of 5 and the third weight W_3, W_1 + 1 * W_2 + 5 * W_3).

이때, 제1가중치(W_1)의 값을 1로 설정하고 그 이외의 가중치들(W_2 내지 W_N)의 값을 0으로 설정하여, 복수의 노드들(node_A 내지 node_Q) 각각에 대한 초기 스코어(iscore_A 내지 iscore_Q)를 결정하면, node_H의 초기 스코어(iscore_H) 및 node_M의 초기 스코어(iscore_M)는 3으로서 가장 높은 초기 스코어를 갖게 된다.At this time, the initial score (iscore_A to node_Q) for each of the plurality of nodes (node_A to node_Q) is set to 1 by setting the value of the first weight W_1 to 1 and the values of the other weights W_2 to W_N to 0, iscore_Q), the initial score (iscore_H) of node_H and the initial score (iscore_M) of node_M have the highest initial score of three.

이와 같은 방법에 따라, 복수의 노드들(node_A 내지 node_Q) 중 초기 스코어(iscore_A 내지 iscore_Q)가 큰 노드들(node_H 및 node_M)이 복수의 클러스터들(Cluster1 및 Cluster2) 개수에 상응하는 수(즉, 2개) 만큼 초기 노드로 선정된다(S100).According to this method, the number of nodes (node_H and node_M) having a large initial score (iscore_A to iscore_Q) among the plurality of nodes (node_A to node_Q) corresponds to the number of the plurality of clusters (Cluster1 and Cluster2) 2) is selected as the initial node (S100).

순차적으로, 상기 선정한 복수의 초기 노드들(node_H 및 node_M) 각각을 상기 복수의 클러스터들(Cluster1 및 Cluster2) 각각에 배치한다(S200).In succession, the selected plurality of initial nodes (node_H and node_M) are arranged in each of the plurality of clusters (Cluster1 and Cluster2) (S200).

복수의 초기 노드들(node_H 및 node_M) 각각을 복수의 클러스터(Cluster1 및 Cluster2)들 각각에 배치한 이후, 복수의 초기 노드들(node_H 및 node_M)을 제외한 상기 복수의 노드들(node_A 내지 node_Q 중에서 node_H 및 node_M를 제외한 노드들) 중에서 클러스터링하고자 하는 노드의 클러스터 적합도를 결정한다(S300).The plurality of initial nodes (node_H and node_M) are disposed in each of the plurality of clusters (Cluster1 and Cluster2), and then the plurality of nodes (node_H to node_M) except the plurality of initial nodes (node_H and node_M) And nodes except for node_M), the cluster fitness of the node to be clustered is determined (S300).

본 명세서에서의 클러스터 적합도란, 임의의 노드가 복수의 클러스터들(Cluster1 및 Cluster2) 중 어느 클러스터에 배치되는 것이 적절한 지를 나타내는 척도를 의미한다.In this specification, the cluster fitness degree refers to a measure indicating which cluster among the plurality of clusters (Cluster1 and Cluster2) is appropriate for an arbitrary node.

실시 예에 따라, 상기 클러스터 적합도는 다음과 같은 과정을 통해 결정될 수 있다.According to an embodiment, the cluster fitness may be determined through the following procedure.

도 4는 본 발명의 일 실시 예에 따른 클러스터 적합도를 결정하기 위한 방법을 설명하기 위한 순서도이다.4 is a flowchart illustrating a method for determining a cluster fitness according to an exemplary embodiment of the present invention.

도 1 내지 도 4를 참조하면, 상기 클러스터 적합도를 산정하는 방법은 우선 복수의 노드들(node_A 내지 node_Q) 중에서 이미 클러스터링 된 초기 노드들(node_H 및 node_M)을 제외하고, 클러스터링하고자하는 노드에 대한 인접 노드들의 개수를 카운트한다(S230).Referring to FIGS. 1 to 4, the method for estimating the cluster fitness includes, for example, excluding the already-initialized nodes (node_H and node_M) among the plurality of nodes (node_A to node_Q) The number of nodes is counted (S230).

이때, 상기 클러스터링하고자하는 노드에 대한 인접 노드들은 상기 복수의 클러스터들(Cluster1 및 Cluster2) 각각에 포함되어있는, 즉 클러스터 별로 포함된 노드들을 대상으로 한다.At this time, the adjacent nodes for the node to be clustered are included in each of the plurality of clusters (Cluster1 and Cluster2), that is, the nodes included in each cluster.

순차적으로 상기 클러스터링하고자 하는 노드에 대해 카운트한 클러스터별 인접 노드들의 개수에 소정의 가중치들(W_1 내지 W_N) 각각을 적용하여(S250), 상기 클러스터링하고자 하는 노드의 클러스터별 클러스터링 스코어를 계산한다(S270).The predetermined weight values W_1 to W_N are sequentially applied to the number of neighboring nodes for each cluster counted for the node to be clustered (S250), and the clustering score for each cluster of the node to be clustered is calculated (S270 ).

예컨대, node_A에 대한 클러스터별 클러스터링 스코어는 제1클러스터(Cluster1)에 대한 클러스터링 스코어(c1_score_A)와 제2클러스터(Cluster2)에 대한 클러스터링 스코어(c2_score_A)로 계산될 수 있다.For example, the cluster-specific clustering score for node_A can be calculated as the clustering score (c1_score_A) for the first cluster (Cluster1) and the clustering score (c2_score_A) for the second cluster (Cluster2).

한편, 상기 카운트한 인접 노드들의 개수에 소정의 가중치들(W_1 내지 W_N) 각각을 적용한다는 의미는, 제1가중치 내지 제N가중치(W_1 내지 W_N) 각각을 상기 카운트한 제1번째 인접 노드들의 개수 내지 상기 카운트한 제N번째 인접 노드들의 개수 각각에 곱하는 것을 의미할 수 있다.On the other hand, applying the predetermined weights W_1 to W_N to the counted number of adjacent nodes means that the number of the first neighboring nodes counted from the first weight to the Nth weights W_1 to W_N, respectively, To the number of the N < th > neighbor nodes counted.

앞서 설명한 초기 스코어(iscroe_A 내지 iscore_Q)를 계산하는 것과 마찬가지로, 제1가중치 내지 제N가중치(W_1 ~ W_N) 각각의 크기는 시스템 목적에 따라서 다양한 크기로 설정될 수 있으며, 제1가중치(W_1)로부터 상기 제N가중치(W_N)에 이르는 순으로 감소하도록 설정될 수도 있다.As in the case of calculating the initial scores (iscroe_A to iscore_Q) described above, the sizes of the first to Nth weights W_1 to W_N may be set to various sizes according to the purpose of the system, and from the first weight W_1 To the N-th weight (W_N).

이후, 상기 제1가중치 내지 상기 제N가중치(W_1 ~ W_N)가 적용된 값들의 총합을 상기 클러스터링하고자 하는 노드에 대한 클러스터별 클러스터링 스코어(예컨대, node_A에 대한 클러스터링 스코어는 c1_score_A 및 c2_score_A)로 계산한다(S150).Then, the total sum of the values to which the first to Nth weights W_1 to W_N are applied is calculated as a cluster-based clustering score for the node to be clustered (e.g., clustering scores for node_A are c1_score_A and c2_score_A) S150).

순차적으로, 상기 계산한 클러스터링 스코어의 크기에 따라 상기 복수의 클러스터들 각각에 대한 클러스터 적합도를 결정한다(S300).In succession, the cluster fitness for each of the plurality of clusters is determined according to the calculated size of the clustering score (S300).

예컨대, 임의의 노드(예컨대, node_K)에 대한 제1클러스터(Cluster1)에 대한 클러스터링 스코어(예컨대,c1_score_K)가 제2클러스터(Cluster2)에 대한 클러스터링 스코어(c2_score_K)보다 크다면 상기 임의의 노드(node_K)는 제1클러스터(Cluster1)에 대해 클러스터 적합도가 높다고 결정한다.For example, if the clustering score (e.g., c1_score_K) for the first cluster (Cluster1) for any node (e.g., node_K) is greater than the clustering score (c2_score_K) for the second cluster ) Determines that the cluster fitness is high for the first cluster (Cluster1).

만일, 임의의 노드에 대한 각 클러스터별 클러스터링 스코어가 동일한 경우에는, 상기 클러스터들(Cluster1 및 Cluster2) 중에 현재 클러스터링 된 노드의 개수가 적은 클러스터의 클러스터 적합도를 높게 결정할 수 있다.If the clustering score of each cluster for each node is the same, the cluster suitability of the clusters having the smallest number of currently clustered clusters (Cluster1 and Cluster2) can be determined to be high.

실시 예에 따라, 임의의 노드에 대한 각 클러스터별 클러스터링 스코어가 동일하고 클러스터별 클러스터링 된 노드의 개수도 동일할 경우에는, 랜덤 방식으로 어느 하나의 클러스터의 클러스터 적합도를 높게 결정할 수 있다.According to the embodiment, when the clustering score of each cluster for each node is the same and the number of the clustered nodes for each cluster is the same, the cluster fitness of any one cluster can be determined to be high in a random manner.

이후, 상기와 같이 결정한 클러스터 적합도에 따라 클러스터링하고자하는 노드를 해당 클러스터에 클러스터링 한다(S400).Then, the nodes to be clustered are clustered in the corresponding clusters according to the determined cluster fitness (S400).

보다 상세한 설명을 위해, 초기 노드들(node_H 및 node_M)을 제외한 복수의 노드들(node_A 내지 node_Q 중에서 node_H 및 node_M를 제외한 노드들) 중에서 node_A, node_B 및 node_C를 클러스터링하고자 하는 노드로서 순차적으로 설명한다.For the sake of more detailed explanation, node_A, node_B and node_C among the plurality of nodes (nodes excluding node_H and node_M among node_A to node_Q) excluding the initial nodes (node_H and node_M) will be sequentially described as nodes to be clustered.

이때, 복수의 클러스터들(Cluster1 및 Cluster2)에는 앞서 설명한 초기 노드들(node_H 및 node_M) 만이 각각 클러스터링 된 것으로 가정하고, 설명의 편의를 위해서 소정의 가중치들(W_1 내지 W_N) 중 제1가중치(W_1)는 0.6, 제2가중치(W_2)는 0.4, 그 이외의 가중치들(W_3 내지 W_N)은 0의 값을 갖는다고 가정한다.At this time, it is assumed that only the initial nodes (node_H and node_M) described above are respectively clustered in the plurality of clusters (Cluster1 and Cluster2), and for convenience of explanation, the first weight W_1 of the predetermined weights W_1 to W_N ) Is 0.6, the second weight W_2 is 0.4, and the other weights W_3 to W_N have a value of 0.

즉, 현재 제1클러스터(Cluster1)에 포함되어 있는 노드는 node_H이고 제2클러스터(Cluster2)에 포함되어 있는 노드는 node_M이다. That is, the node included in the first cluster (Cluster1) is node_H and the node included in the second cluster (Cluster2) is node_M.

우선 제1클러스터(Cluster1)에 포함되어 있는 노드들(node_H) 중에서 node_A에 대한 제1번째 인접 노드들의 개수 내지 제N번째 인접 노드들의 개수를 각각 카운트하고, 제2클러스터(Cluster2)에 포함되어 있는 노드들(node_M) 중에서 node_A에 대한 제1번째 인접 노드들의 개수 내지 제N번째 인접 노드들의 개수를 카운트한다.First, the number of the first to N-th adjacent nodes to the node_A among the nodes (node_H) included in the first cluster (Cluster1) is counted, and the number of the first Counts the number of the first neighboring node to the number of the Nth neighboring node for node_A among the nodes (node_M).

제1클러스터(Cluster1)에 포함되어 있는 노드는 오직 node_H이며, node_H는 클러스터링하고자 하는 node_A와 제2단계 인접 노드의 관계에 있으므로, 제1클러스터(Cluster1)에 포함되어 있는 노드들(node_H) 중에서 node_A에 대한 인접 노드들의 개수는 제2번째 인접 노드 1개이다.Since the node included in the first cluster (Cluster1) is only node_H and the node_H is a relation between the node_A to be clustered and the second-level neighbor node, the node_A included in the first cluster (Cluster1) The number of neighbor nodes to the second neighbor node is one.

또한, 제2클러스터(Cluster2)에 포함되어 있는 노드는 오직 node_M이며, node_M는 node_A와 제2단계 인접 노드의 관계에 있으므로, 제2클러스터(Cluster2)에 포함되어 있는 노드들(node_M) 중에서 node_A에 대한 인접 노드들의 개수 역시 제2번째 인접 노드 1개이다.Since the node included in the second cluster (Cluster2) is only node_M and the node_M is in the relationship between the node_A and the second-level neighbor node, the node_A included in the second cluster (Cluster2) The number of neighbor nodes is also the second neighbor node.

node_A의 제1클러스터(Cluster1)에 대한 클러스터링 스코어(c1_score_A)는 1과 제2가중치의 곱이고, node_A의 제2클러스터(Cluster2)에 대한 클러스터링 스코어(c2_score_A)는 1과 제2가중치의 곱으로 동일하다.The clustering score (c1_score_A) for the first cluster (Cluster1) of node_A is a product of 1 and the second weight, and the clustering score (c2_score_A) for the second cluster (Cluster2) of node_A is the same as the product of 1 and the second weight Do.

즉, node_A의 제1클러스터(Cluster1)에 대한 클러스터링 스코어(c1_score_A)와 제2클러스터(Cluster2)에 대한 클러스터링 스코어(c2_score_A)는 0.4로서 동일하다. That is, the clustering score (c1_score_A) for the first cluster (Cluster1) of node_A and the clustering score (c2_score_A) for the second cluster (Cluster2) are equal to 0.4.

또한, 제1클러스터(Cluster1) 및 제2클러스터(Cluster2)에 포함된 노드 수 역시 1개로 동일하다.In addition, the number of nodes included in the first cluster (Cluster1) and the second cluster (Cluster2) is also equal to one.

따라서, 랜덤 방식에 따라 제1클러스터(Cluster1) 및 제2클러스터(Cluster2) 중 어느 하나의 클러스터 적합도를 높게 결정할 수 있으며, 상기 결정된 클러스터 적합도에 따라 node_A를 해당 클러스터로 클러스터링할 수 있다.Accordingly, the cluster fitness of any one of the first cluster (Cluster1) and the second cluster (Cluster2) can be determined to be high according to the random scheme, and the node_A can be clustered into the corresponding cluster according to the determined cluster fitness.

본 명세서에서는 랜덤 방식에 따라 제1클러스터(Cluster1)에 node_A가 클러스터링 되었다고 가정한다.In this specification, it is assumed that node_A is clustered in the first cluster (Cluster1) according to the random scheme.

이하, node_B의 클러스터 적합도를 결정하는 방법에 대해서 설명한다.Hereinafter, a method of determining the cluster fitness of node_B will be described.

현재 제1클러스터(Cluster1)에 포함되어 있는 노드는 node_A와 node_H이고 제2클러스터(Cluster2)에 포함되어 있는 노드는 node_M이다.The nodes included in the first cluster (Cluster1) are node_A and node_H, and the node included in the second cluster (Cluster2) is node_M.

우선 제1클러스터(Cluster1)에 포함되어 있는 노드들(node_A 및 node_H) 중에서 node_B에 대한 제1번째 인접 노드들의 개수 내지 제N번째 인접 노드들의 개수를 각각 카운트한다.The number of the first neighboring node to the number of the Nth neighboring node for node_B among the nodes (node_A and node_H) included in the first cluster (Cluster1) are counted.

제1클러스터(Cluster1)에 포함되어 있는 노드들(node_A 및 node_H)은 node_B에 대한 제3번째 인접 노드이고, node_B의 제1클러스터(Cluster1)에 대한 클러스터링 스코어(c1_score_B)는 제3번째 인접 노드들의 수(즉, 2)와 제3가중치(즉, 0)의 곱인 0이 된다.The nodes (node_A and node_H) included in the first cluster (Cluster1) are the third neighbor nodes to the node_B, and the clustering score (c1_score_B) of the first cluster (Cluster1) (I.e., 2) and the third weight (i.e., 0).

또한, 제2클러스터(Cluster2)에 포함되어 있는 노드들(node_M) 중에서 node_B에 대한 제1번째 인접 노드들의 개수 내지 제N번째 인접 노드들의 개수를 각각 카운트한다.In addition, the number of the first neighboring node to the number of the Nth neighboring node with respect to the node_B among the nodes (node_M) included in the second cluster (Cluster2) are respectively counted.

제2클러스터(Cluster2)에 포함되어 있는 노드(node_M)는 node_B에 대한 제3번째 인접 노드의 관계에 있으므로, node_B의 제2클러스터(Cluster2)에 대한 클러스터링 스코어(c2_score_B) 역시 0이 된다.Since the node (node_M) included in the second cluster (Cluster2) is in the relation of the third neighbor node to the node_B, the clustering score (c2_score_B) for the second cluster (Cluster2) of the node_B also becomes zero.

다만, 현재 상태에서 제2클러스터(Cluster2)에 포함되어 있는 노드(node_M)의 수가 제1클러스터(Cluster1)에 포함되어 있는 노드들(node_A 및 node_H)의 수보다 작으므로, node_B의 제2클러스터(Cluster2)에 대한 클러스터 적합도를 높게 결정하고, node_B는 제2클러스터(Cluster2)에 클러스터링 된다.However, since the number of nodes (node_M) included in the second cluster (Cluster2) in the current state is smaller than the number of nodes (node_A and node_H) included in the first cluster (Cluster1), the second cluster Cluster 2) is high, and node_B is clustered in the second cluster (Cluster 2).

이하, node_C의 클러스터 적합도를 결정하는 방법에 대해서 설명한다.Hereinafter, a method for determining the cluster fitness of node_C will be described.

현재 제1클러스터(Cluster1)에 포함되어 있는 노드는 node_A와 node_H이고 제2클러스터(Cluster2)에 포함되어 있는 노드는 node_B 및 node_M이다.The nodes included in the first cluster (Cluster1) are node_A and node_H, and the nodes included in the second cluster (Cluster2) are node_B and node_M.

우선 제1클러스터(Cluster1)에 포함되어 있는 노드들(node_A 및 node_H) 중에서 node_C에 대한 제1번째 인접 노드들의 개수 내지 제N번째 인접 노드들의 개수를 각각 카운트한다.First, the number of the first neighboring node to the Nth neighboring node for the node C is counted among the nodes (node_A and node_H) included in the first cluster (Cluster1).

제1클러스터(Cluster1)에 포함되어 있는 노드들(node_A 및 node_H)은 node_C에 대한 제2번째 인접 노드이고, node_C의 제1클러스터(Cluster1)에 대한 클러스터링 스코어(c1_score_C)는 제2번째 인접 노드들의 수(즉, 2)와 제2가중치(즉, 0,4)의 곱인 0.8이 된다.The nodes (node_A and node_H) included in the first cluster (Cluster1) are the second neighbor nodes for the node_C, and the clustering score (c1_score_C) for the first cluster (Cluster1) The product of the number (i.e., 2) and the second weight (i.e., 0,4), which is 0.8.

또한, 제2클러스터(Cluster2)에 포함되어 있는 노드들(node_B 및 node_M) 중에서 node_C에 대한 제1번째 인접 노드들의 개수 내지 제N번째 인접 노드들의 개수를 각각 카운트한다.In addition, the number of the first neighboring node to the number of the Nth neighboring node with respect to the node C is counted among the nodes (node_B and node_M) included in the second cluster (Cluster2).

제2클러스터(Cluster2)에 포함되어 있는 node_B는 node_C에 대한 제1번째 인접 노드의 관계에 있고, 제2클러스터(Cluster2)에 포함되어 있는 node_M은 제2번째 인접 노드의 관계에 있다.The node_B included in the second cluster (Cluster2) is in the relation of the first neighboring node to the node_C, and the node_M included in the second cluster (Cluster2) is in the relation of the second neighboring node.

즉, node_C의 제2클러스터(Cluster2)에 대한 클러스터링 스코어(c2_score_C)는 제1번째 인접 노드들의 수(즉, 1)와 제1가중치(즉, 0.6)의 곱인 0.6과 제2번째 인접 노드들의 수(즉, 1)와 제2가중치(즉, 0.4)의 곱인 0.4의 합인 1.0이 된다.That is, the clustering score (c2_score_C) for the second cluster (Cluster2) of the node_C is 0.6, which is the product of the number of the first neighbor nodes (i.e., 1) and the first weight (i.e., 0.6) (I.e., 1) and the second weight (i.e., 0.4), which is the product of 0.4.

node_C의 제1클러스터(Cluster1)에 대한 클러스터링 스코어(c1_score_C = 0.8) 보다 제2클러스터(Cluster1)에 대한 클러스터링 스코어(c2_score_C = 1.0)가 더 크기 때문에, node_C의 클러스터 적합도는 제2클러스터(Cluster2)에 높게 결정되며, 이에 따라 node_c는 제2클러스터(Cluster2)에 클러스터링 된다.since the clustering score (c2_score_C = 1.0) for the second cluster (Cluster1) is larger than the clustering score (c1_score_C = 0.8) for the first cluster (Cluster1) of the node_C, the cluster suitability of the node So that node_c is clustered in the second cluster (Cluster2).

상기와 같은 방법을 통해, 복수의 노드들(node_A 내지 node_Q) 중에서 이미 클러스터링 된 초기 노드들(node_H 및 node_M)을 제외한 모든 노드들에 대하여 클러스터 적합도를 결정하고(S300), 결정된 클러스터 적합도에 따라 해당 클러스터에 노드들을 클러스터링 할 수 있다(S400).Through the above-described method, cluster suitability is determined for all nodes other than the initial nodes (node_H and node_M) already clustered among the plurality of nodes (node_A to node_Q) (S300) The nodes may be clustered in the cluster (S400).

실시 예에 따라, 복수의 노드들(node_A 내지 node_Q)을 상기 S30 단계 내지 S400 단계를 통해 해당 클러스터에 클러스터링 한 후, 상기 클러스터링한 상태를 기준으로 상기 S30 내지 S400 단계를 반복 수행할 수 있다. According to the embodiment, a plurality of nodes (node_A to node_Q) may be clustered into corresponding clusters through steps S30 to S400, and then the steps S30 to S400 may be repeated based on the clustered state.

상기의 반복 수행을 통해 해당 클러스터에 클러스터링된 노드들 간의 상호 연관성은 더욱 높아질 수 있다.Through the repetition of the above operations, the correlation between the nodes clustered in the cluster can be further increased.

결국 본 발명의 실시 예에 따른 그래프 데이터 분산 방법은 노드들 간의 클러스터 적합도를 이용하여 연관된 노드들끼리 해당 클러스터에 클러스터링할 수 있으므로, 이후 분산된 그래프 데이터 처리시 매우 향상된 처리 속도를 제공할 수 있다.As a result, the graph data distribution method according to the embodiment of the present invention can cluster the related nodes to the corresponding clusters using the cluster suitability between the nodes, and can provide a very high processing speed in processing the distributed graph data thereafter.

본 발명은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.While the present invention has been particularly shown and described with reference to exemplary embodiments thereof, it is to be understood that the invention is not limited to the disclosed embodiments, but, on the contrary, is intended to cover various modifications and equivalent arrangements included within the spirit and scope of the appended claims. Accordingly, the true scope of the present invention should be determined by the technical idea of the appended claims.

Claims (8)

복수의 노드들 중 복수의 클러스터들 각각에 배치하기 위한 복수의 초기 노드들을 선정하는 단계;
상기 선정한 복수의 초기 노드들 각각을 상기 복수의 클러스터들 중 해당하는 클러스터에 배치하는 단계;
상기 복수의 초기 노드들을 제외한 상기 복수의 노드들 중에서 클러스터링하고자 하는 노드의 상기 복수의 클러스터들 각각에 대한 클러스터 적합도를 결정하는 단계; 및
상기 결정한 클러스터 적합도에 따라 상기 클러스터링하고자 하는 노드를 상기 복수의 클러스터들 중 해당 클러스터에 클러스터링하는 단계;를 포함하는 그래프 데이터 분산 방법.
Selecting a plurality of initial nodes for placement in each of a plurality of clusters of the plurality of nodes;
Arranging each of the selected plurality of initial nodes in a corresponding one of the plurality of clusters;
Determining a cluster suitability for each of the plurality of clusters of a plurality of nodes other than the plurality of initial nodes to be clustered; And
And clustering the nodes to be clustered into corresponding clusters among the plurality of clusters according to the determined cluster fitness.
제1항에 있어서, 상기 복수의 초기 노드들을 선정하는 단계는,
상기 복수의 노드들 각각에 대한 제1번째 인접노드들 내지 제N번째 인접노드들 중에서 리프노드의 개수를 각각 카운트하는 단계;
상기 각각 카운트한 리프노드의 개수에 소정의 가중치들 각각을 적용하여 상기 복수의 노드들 각각에 대한 초기 스코어를 계산하는 단계; 및
상기 계산한 초기 스코어가 큰 순서대로 상기 복수의 클러스터 개수만큼 상기 초기 노드들을 선정하는 단계;를 포함하는 그래프 데이터 분산 방법.
2. The method of claim 1, wherein selecting the plurality of initial nodes comprises:
Counting the number of leaf nodes among the first to Nth neighbor nodes for each of the plurality of nodes;
Calculating an initial score for each of the plurality of nodes by applying predetermined weights to the number of the leaf nodes counted respectively; And
And selecting the initial nodes by the number of the plurality of clusters in a descending order of the calculated initial scores.
제2항에 있어서, 상기 초기 스코어를 계산하는 단계는,
상기 소정의 가중치들 중 제1가중치 내지 제N가중치 각각을 상기 카운트한 제1번째 인접노드들 중의 리프노드 개수 내지 상기 카운트한 제N번째 인접노드들 중의 리프노드인 개수 각각에 곱하는 방식으로 적용하는 단계; 및
상기 제1가중치 내지 상기 제N가중치가 적용된 값들의 총합을 상기 복수의 노드들 각각에 대한 초기 스코어로 계산하는 단계;를 포함하는 그래프 데이터 분산 방법.
3. The method of claim 2, wherein calculating the initial score comprises:
The first to Nth weights of the predetermined weights are respectively multiplied by the number of leaf nodes in the counted first neighbor nodes and the number of leaf nodes in the counted Nth neighbor nodes step; And
And calculating a sum of the values to which the first weight to the Nth weight are applied as an initial score for each of the plurality of nodes.
제3항에 있어서, 상기 제1가중치 내지 상기 제N가중치 각각의 크기는,
상기 제1가중치로부터 상기 제N가중치에 이르는 순으로 감소하는 것을 특징으로 하는 그래프 데이터 분산 방법.
4. The method of claim 3, wherein the sizes of the first to N < th >
And decreasing in the order from the first weight to the Nth weight.
제1항에 있어서, 상기 클러스터 적합도를 산정하는 단계는,
상기 복수의 클러스터들 각각에 포함되어있는 노드들 중에서, 상기 클러스터링하고자하는 노드에 대한 제1번째 인접노드들 내지 제N번째 인접노드들의 개수를 각각 카운트하는 단계;
상기 각각 카운트한 인접노드들의 개수에 소정의 가중치들 각각을 적용하여 상기 복수의 클러스터들 각각에 대한 클러스터링 스코어를 계산하는 단계; 및
상기 계산한 클러스터링 스코어의 크기에 따라 상기 복수의 클러스터들 각각에 대한 클러스터 적합도를 결정하는 단계;를 포함하는 그래프 데이터 분산 방법.
2. The method of claim 1, wherein the calculating the cluster fitness comprises:
Counting the number of first to Nth neighboring nodes for the node to be clustered, among the nodes included in each of the plurality of clusters;
Calculating a clustering score for each of the plurality of clusters by applying predetermined weights to the counts of the neighboring nodes; And
And determining a cluster fitness for each of the plurality of clusters according to the calculated size of the clustering score.
제5항에 있어서, 상기 클러스터링 스코어를 계산하는 단계는,
상기 소정의 가중치들 중 제1가중치 내지 제N가중치 각각을 상기 카운트한 상기 제1번째 인접노드들의 개수 내지 상기 카운트한 제N번째 인접노드들의 개수 각각에 곱하는 방식으로 적용하는 단계; 및
상기 제1가중치 내지 상기 제N가중치가 적용된 값들의 총합을 상기 복수의 클러스터들 각각에 대한 클러스터링 스코어로 계산하는 단계;를 포함하는 그래프 데이터 분산 방법.
6. The method of claim 5, wherein calculating the clustering score comprises:
Applying the first weight to the Nth weight among the predetermined weights to each of the counted first neighbor nodes and the counted Nth neighbor nodes; And
And calculating a sum of the values to which the first to Nth weights are applied as the clustering score for each of the plurality of clusters.
제5항에 있어서, 상기 클러스터링 스코어의 크기가 동일한 경우,
상기 복수의 클러스터들 중 클러스터링 된 노드의 개수가 적은 클러스터의 클러스터 적합도를 높게 설정하는 것을 특징으로 하는 그래프 데이터 분산 방법.
6. The method of claim 5, wherein if the clustering score is of the same size,
Wherein the cluster fitness of a cluster having a small number of clustered nodes among the plurality of clusters is set to be high.
제7항에 있어서, 상기 복수의 클러스터들에 클러스터링 된 노드의 개수가 동일한 경우,
상기 클러스터링하고자하는 노드를 랜덤으로 상기 복수의 클러스터들 중 어느 하나에 클러스터링하는 것을 특징으로 하는 그래프 데이터 분산 방법.
8. The method of claim 7, wherein if the number of nodes clustered in the plurality of clusters is the same,
Wherein the nodes to be clustered are randomly clustered in any one of the plurality of clusters.
KR1020150017295A 2015-02-04 2015-02-04 Graph data distributing method using clustering goodness of fit KR101672621B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150017295A KR101672621B1 (en) 2015-02-04 2015-02-04 Graph data distributing method using clustering goodness of fit

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150017295A KR101672621B1 (en) 2015-02-04 2015-02-04 Graph data distributing method using clustering goodness of fit

Publications (2)

Publication Number Publication Date
KR20160095842A true KR20160095842A (en) 2016-08-12
KR101672621B1 KR101672621B1 (en) 2016-11-03

Family

ID=56714798

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150017295A KR101672621B1 (en) 2015-02-04 2015-02-04 Graph data distributing method using clustering goodness of fit

Country Status (1)

Country Link
KR (1) KR101672621B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101974069B1 (en) * 2018-04-30 2019-04-30 한국과학기술원 System and method for visualizing binary structure

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120080400A (en) * 2011-01-07 2012-07-17 주식회사 엔씨소프트 Apparatus and method of detecting abnormal character in online game based on clustering technique

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120080400A (en) * 2011-01-07 2012-07-17 주식회사 엔씨소프트 Apparatus and method of detecting abnormal character in online game based on clustering technique

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101974069B1 (en) * 2018-04-30 2019-04-30 한국과학기술원 System and method for visualizing binary structure

Also Published As

Publication number Publication date
KR101672621B1 (en) 2016-11-03

Similar Documents

Publication Publication Date Title
US11032391B2 (en) Social network grouping method and system, and computer storage medium
Khabbazian et al. Fast and accurate detection of evolutionary shifts in Ornstein–Uhlenbeck models
Bae et al. Identifying and ranking influential spreaders in complex networks by neighborhood coreness
Mao et al. Analysis of average shortest‐path length of scale‐free network
Aldecoa et al. Exploring the limits of community detection strategies in complex networks
Li et al. A genetic algorithm for community detection in complex networks
Roser et al. A quantitative comparison of bottleneck detection methods in manufacturing systems with particular consideration for shifting bottlenecks
Tan et al. ECRModel: An elastic collision-based rumor-propagation model in online social networks
US20140229510A1 (en) Method of temporal bipartite projection
Askari et al. Analytical calculation of average fixation time in evolutionary graphs
CN111461440B (en) Link prediction method, system and terminal equipment
Wenli et al. Identifying node importance based on information entropy in complex networks
Ma et al. The local triangle structure centrality method to rank nodes in networks
Tang et al. Mitigate cascading failures on networks using a memetic algorithm
Gupta et al. Ddos attack detection through digital twin technique in metaverse
Boyerinas Determining the statistical power of the kolmogorov-smirnov and anderson-darling goodness-of-fit tests via monte carlo simulation
EP3876118A1 (en) Automatic adjustment of replica exchange
KR101672621B1 (en) Graph data distributing method using clustering goodness of fit
Seo Explicit Formulae for Characteristics of Finite‐Capacity M/D/1 Queues
Xiao et al. Constructing Real‐Life Benchmarks for Community Detection by Rewiring Edges
Wang et al. High‐Order Degree and Combined Degree in Complex Networks
Gupta et al. Queue Length and Server Content Distribution in an Infinite‐Buffer Batch‐Service Queue with Batch‐Size‐Dependent Service
CN113537461B (en) Network key node discovery method and system based on SIR value learning
Zhang et al. Local nash equilibrium in social networks
Warris et al. Fast selection of miRNA candidates based on large-scale pre-computed MFE sets of randomized sequences

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right