KR101658885B1 - 너비우선 탐색을 위한 그래프 처리 방법 및 장치 - Google Patents
너비우선 탐색을 위한 그래프 처리 방법 및 장치 Download PDFInfo
- Publication number
- KR101658885B1 KR101658885B1 KR1020150119693A KR20150119693A KR101658885B1 KR 101658885 B1 KR101658885 B1 KR 101658885B1 KR 1020150119693 A KR1020150119693 A KR 1020150119693A KR 20150119693 A KR20150119693 A KR 20150119693A KR 101658885 B1 KR101658885 B1 KR 101658885B1
- Authority
- KR
- South Korea
- Prior art keywords
- shard
- vertex
- search
- vertices
- graph
- Prior art date
Links
Images
Classifications
-
- G06F17/30958—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/02—Knowledge representation; Symbolic representation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
너비우선 탐색을 위한 디스크 기반 그래프 처리 방법 및 장치를 제공한다. 너비우선 탐색을 이용하는 그래프 처리 장치는 그래프 데이터에 포함된 정점들 중 탐색 대상 정점과 상기 탐색 대상 정점의 외향 에지(out edge)에 연결된 이웃 정점으로 샤드(shard)를 구성하는 구성부 및 상기 샤드 단위로 상기 너비우선 탐색을 수행하는 탐색부를 포함할 수 있다.
Description
본 발명의 실시예들은 너비우선 탐색(Breadth first searching)을 이용하여 대용량의 그래프(graph)를 처리하는 방법 및 장치에 관한 것이다.
최근 소셜 네트워크 서비스(SNS: Social Network Service), 웹 그래프(web graph), 화합물 데이터베이스(DB: DateBase) 등과 같은 대용량의 그래프로부터 유용한 정보를 마이닝(mining)하기 위한 효율적인 그래프 처리 기술이 큰 이슈(issue)로 떠오르고 있다.
대용량의 그래프를 처리할 수 있는 기술 중 하나로, 대용량의 그래프를 메모리(memory)에 로드(load)할 수 있는 샤드(shard) 단위로 분해하여 부분적으로 처리하는 Graphchi 프레임워크(framework)가 존재한다. 그러나 Graphchi는 샤드에 그래프의 구조적 정보를 반영하지 않고 임의의 에지(edge)들로 샤드를 구성하기 때문에, 이웃 정점 정보를 지속적으로 요구하는 너비우선 탐색(BFS: Breadth First Searching)과 같은 그래프 연산을 수행하는 경우 디스크(disk)에 대한 임의접근이 많이 발생하는 문제가 있다. 따라서, 효율적으로 너비우선 탐색을 수행할 수 있는 그래프 처리 방법이 요구되고 있다.
본 발명의 기술적 과제는 그래프의 구조적 정보를 고려함으로써 효율적으로 너비우선 탐색을 수행할 수 있는 너비우선 탐색을 위한 그래프 처리 방법 및 장치를 제공함에 있다.
본 발명의 일 양태에 따르면, 너비우선 탐색을 이용하는 그래프 처리 장치는 그래프 데이터에 포함된 정점들 중 탐색 대상 정점과 상기 탐색 대상 정점의 외향 에지(out edge)에 연결된 이웃 정점으로 샤드(shard)를 구성하는 구성부 및 상기 샤드 단위로 상기 너비우선 탐색을 수행하는 탐색부를 포함할 수 있다.
일측에 따르면, 상기 그래프 데이터에 포함된 정점들을 정점의 식별자의 순서로 정렬하는 정렬부를 더 포함하고, 상기 구성부는 상기 정점의 식별자 순서로 정렬된 그래프 데이터를 상기 정점의 식별자 단위로 메모리에 로드(load)하여 상기 샤드를 구성할 수 있다.
다른 측면에 따르면, 상기 구성부는 상기 그래프 데이터 포함된 정점들의 수에 해당하는 개수의 샤드를 구성할 수 있다.
또 다른 측면에 따르면, 상기 구성부는 상기 탐색 대상 정점의 외향 에지에 연결된 이웃 정점의 수가 기 설정된 개수를 초과하는 경우, 상기 샤드에서 확장된 샤드를 생성하고 상기 확장된 샤드에 상기 탐색 대상 정점에 대한 잔여 정보를 저장하며 상기 샤드에 상기 확장된 샤드의 주소값을 추가할 수 있다.
또 다른 측면에 따르면, 상기 샤드는 저장 장치 내에서 상기 샤드의 식별자와 상기 샤드의 크기를 곱한 값에 해당하는 위치에 저장될 수 있다.
본 발명의 다른 양태에 따르면, 그래프 처리 장치가 너비우선 탐색을 이용하여 그래프를 처리하는 방법은 그래프 데이터에 포함된 정점들 중 탐색 대상 정점과 상기 탐색 대상 정점의 외향 에지에 연결된 이웃 정점으로 샤드를 구성하는 단계 및 상기 샤드 단위로 상기 너비우선 탐색을 수행하는 단계를 포함할 수 있다.
그래프 처리 시 그래프의 구조적 정보를 고려하여 샤드를 구성함으로써 너비우선 탐색의 수행 속도가 향상되고 메모리 사용량이 감소될 수 있다.
도 1은 그래프를 나타내는 예시도이다.
도 2는 기존의 샤드 구성 방법을 설명하기 위한 도면이다.
도 3은 본 발명의 일실시예에 따른 그래프 처리 방법을 나타내는 흐름도이다.
도 4는 본 발명의 일실시예에 따른 샤드 구성 방법을 나타내는 도면이다.
도 5는 본 발명의 일실시예에 따른 확장 해시 구조를 나타내는 도면이다.
도 6은 본 발명의 일실시예에 따른 그래프 처리 방법을 적용 시의 처리 속도를 나타내는 그래프이다.
도 7은 본 발명의 일실시예에 따른 그래프 처리 방법을 적용 시의 메모리 사용량을 나타내는 그래프이다.
도 8은 본 발명의 일실시예에 따른 그래프 처리 장치를 나타내는 블록도이다.
도 2는 기존의 샤드 구성 방법을 설명하기 위한 도면이다.
도 3은 본 발명의 일실시예에 따른 그래프 처리 방법을 나타내는 흐름도이다.
도 4는 본 발명의 일실시예에 따른 샤드 구성 방법을 나타내는 도면이다.
도 5는 본 발명의 일실시예에 따른 확장 해시 구조를 나타내는 도면이다.
도 6은 본 발명의 일실시예에 따른 그래프 처리 방법을 적용 시의 처리 속도를 나타내는 그래프이다.
도 7은 본 발명의 일실시예에 따른 그래프 처리 방법을 적용 시의 메모리 사용량을 나타내는 그래프이다.
도 8은 본 발명의 일실시예에 따른 그래프 처리 장치를 나타내는 블록도이다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다. 또한, 명세서에 기재된 "~부" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.
도 1은 그래프를 나타내는 예시도이고, 도 2는 기존의 샤드 구성 방법을 설명하기 위한 도면이다. 이하, 도 1의 그래프에 대한 기존의 샤드 구성 방법에 대해 설명한다.
먼저 도 1을 참조하면, 도 1에는 일 예로 8개의 정점들(v1~v8)을 포함하는 그래프가 도시되어 있다. 그래프는 도 1과 같이 정점(vertex)과 에지(edge)로 표현될 수 있으며, 정점들(v1~v8)은 에지(edge)를 통해 서로 연결될 수 있다. 상기 에지는 내향 에지(in-edge) 및 외향 에지(out-edge)로 구분될 수 있다. 여기서 내향 에지는 특정 정점을 기준으로 상기 특정 정점을 향하는 에지를 의미하며, 외향 에지는 특정 정점을 기준으로 상기 특정 정점에서 다른 정점을 향하는 에지를 의미한다. 예를 들어, 도 1에서 제1 정점(v1)과 제2 정점(v2)을 연결하는 에지는 제1 정점(v1)의 외향 에지 또는 제2 정점(v2)의 내향 에지로 정의될 수 있다.
도 2를 참조하면, 기존의 그래프 처리 방법인 Graphchi의 경우 그래프(210)는 목적 정점(destination vertex)들의 식별자(ID: Identifier)를 기준으로 분할되며, 이는 인터벌(220; interval)이라 정의된다. 그리고 각 인터벌에 속해있는 정점의 내향 에지(in-edge)들의 모음을 샤드(230; shard)라는 단위로 나타낸다. 여기서, 인터벌(220)은 메모리(memory)에 한번에 로드(load)할 수 있는 정보량을 나타낼 수 있다. 따라서 샤드(230)의 크기는 가용 메모리의 크기와 연관된다.
한편 Graphchi의 경우, 샤드(230) 내의 에지들은 근원 정점(source vertex)를 기준으로 정렬된다. 그러므로, 각 인터벌(220)에는 에지가 (근원 정점, 목적 정점)의 형태로 포함되며, 각 인터벌(220)에서 샤드(230)는 내향 에지를 기준으로 구성된다. 그러나 너비우선 탐색은 시작 정점을 먼저 방문한 후 상기 시작 정점에 인접한 정점들을 우선적으로 방문하는 방법으로, 동일 레벨(또는 깊이)에 있는 정점을 우선적으로 방문하기 때문에, 도 2와 같은 구조에서 제1 정점(V1)에 대한 너비우선 탐색을 수행하기 위해서는 제1 정점과 제2 정점에 대한 인터벌(v1~v2), 제5 정점과 제6 정점에 대한 인터벌(v5~v6) 및 제7 정점과 제8 정점에 대한 인터벌(v7~v8) 모두에서 제1 정점의 외향 에지를 읽어야 한다. 따라서 Graphchi의 경우, 그래프(210)가 저장되어 있는 디스크(disk)에 대한 입출력이 빈번하게 발생하게 되는 문제가 있다.
도 3은 본 발명의 일실시예에 따른 그래프 처리 방법을 나타내는 흐름도이다.
너비우선 탐색에는 이웃하는 정점의 정보가 반복적으로 요구된다. 따라서 디스크에 저장된 대용량의 그래프를 샤드 단위로 메모리에 올려 효율적으로 처리하기 위해서는 샤드 내에 탐색 대상 정점의 외향 에지들을 최대한 모아 놓을 필요가 있다. 따라서 본 발명의 일실시예에 따른 그래프 처리 방법은 너비우선 탐색 시 그래프 데이터를 샤드 단위로 슬라이딩하며 읽는 것을 고려하여 탐색 대상 정점의 외향 에지를 기준으로 샤드를 구성할 수 있다. 이를 위하여 일 예로 본 발명의 따른 그래프 처리 장치는 도 3에 도시된 방법으로 단일 대용량 그래프를 처리할 수 있다.
도 3을 참조하면, 그래프 처리 장치는 그래프 데이터에 포함된 정점들을 정점의 식별자의 순서로 정렬하고 상기 정렬된 그래프 데이터를 상기 정점의 식별자 단위로 메모리에 로드할 수 있다(S310). 여기서, 상기 그래프 데이터는 디스크와 같은 저장 장치 내에 저장되어 있을 수 있다.
이후, 그래프 처리 장치는 탐색 대상 정점의 외향 에지를 기준으로 샤드를 생성하고 상기 샤드에 탐색 대상 정점에 대한 정보를 저장할 수 있다(S320). 예를 들어, 그래프 처리 장치는 그래프 데이터에 포함된 정점들 중 탐색 대상 정점과 상기 탐색 대상 정점의 외향 에지에 연결된 이웃 정점으로 샤드를 구성할 수 있다. 이때 그래프 처리 장치는 해당 탐색 대상 정점의 외향 에지에 연결된 이웃 정점의 수가 기 설정된 개수를 초과하는지를 판단할 수 있다(S330). 만일 해당 탐색 대상 정점의 외향 에지에 연결된 이웃 정점의 수가 기 설정된 개수를 초과하지 않는다면 즉, 해당 샤드에 해당 탐색 대상 정점에 대한 정보가 모두 포함된다면, 그래프 처리 장치는 그래프 데이터를 모두 읽을 때까지 상술한 과정을 반복적으로 수행할 수 있다(S340). 그러나 만일 상기 해당 탐색 대상 정점의 외향 에지에 연결된 이웃 정점의 수가 기 설정된 개수를 초과한다면 즉, 해당 샤드에 해당 탐색 대상 정점에 대한 정보가 모두 포함될 수 없다면, 그래프 처리 장치는 해당 샤드에서 확장된 샤드(extended shard)를 생성하고 상기 확장된 샤드에 탐색 대상 정점에 대한 잔여 정보(즉, 상기 샤드에 포함되지 못한 정보)를 저장하며 상기 해당 샤드에 상기 확장된 샤드의 주소값을 추가할 수 있다(S350). 여기서, 상기 확장된 샤드는 저장 장치 내에서 그래프 데이터에 대해 기본적으로 생성되는 샤드들의 뒤에 상기 확장된 샤드의 식별자에 따라 순차적으로 저장될 수 있다. 예를 들어, 그래프 데이터에 3개의 정점(제1 정점, 제2 정점 및 제3 정점)이 포함되고, 이 중 제1 정점에 대한 정보와 및 제2 정점에 대한 정보가 각각 제1 정점에 대한 제1 샤드 및 제2 정점에 대한 제2 샤드에 모두 포함될 수 없는 경우, 그래프 처리 장치는 저장 장치에 제1 샤드, 제2 샤드 및 제3 샤드 순서로 저장하고 이어서 제1 샤드에서 확장된 샤드와 제2 샤드에서 확장된 샤드를 저장할 수 있다.
그래프 처리 장치는 상술한 과정을 통해 그래프 데이터 포함된 정점들의 수에 해당하는 개수의 샤드를 구성할 수 있다. 예를 들어, 그래프 데이터에 8개의 정점이 포함되며 각 샤드에 각 정점에 대한 정보를 모두 저장할 수 있다면, 그래프 처리 장치는 각 정점 별로 샤드를 구성하여 총 8개의 샤드를 구성할 수 있다.
도 4는 본 발명의 일실시예에 따른 샤드 구성 방법을 나타내는 도면이고, 도 5는 본 발명의 일실시예에 따른 확장 해시 구조를 나타내는 도면이다.
본 발명의 일실시예에 따른 그래프 처리 장치는 도 4에 도시된 것과 같이 탐색 대상 정점을 기준으로 인접한 정점들을 이용하여 샤드를 구성하기 위하여 그래프 데이터(410)에 포함된 정점들을 정점의 식별자의 순서대로 정렬할 수 있다. 그리고 각 정점 별로 인터벌(420)을 구성함으로써 그래프 데이터(410)가 각 정점 단위로 메모리에 적재되도록 할 수 있다. 따라서 제1 정점(v1)이 속한 샤드(430)만 메모리에 적재하면 제1 정점(v1)이 속한 인터벌(420) 내의 모든 외향 에지와 내향 에지의 적재가 가능하므로, 제1 정점(v1)에 대한 너비우선 탐색 시 제1 정점(v1)에 인접한 정점들을 적재하기 위한 불필요한 디스크 입출력을 크게 줄일 수 있다. 즉, 도 4와 같은 구조의 경우 제1 정점(v1)에 대한 너비우선 탐색을 수행하기 위해 필요한 정보(제1 정점(v1)의 외향 에지 및/또는 이웃 정점에 대한 정보)는 모두 제1 정점(v1)에 대한 인터벌 내에 존재하므로, 불필요한 디스크 입출력이 크게 줄어든다. 그러나, 샤드(430)의 크기는 기 설정된 버켓 사이즈(bucket size)를 초과할 수 없기 때문에 상기 버켓 사이즈보다 이웃 정점의 개수가 많은 경우 오버플로우(overflow)가 발생할 수 있다. 즉, 도 4에 도시된 것과 같이 버켓 사이즈가 3으로 설정된 경우, 제1 정점(v1)에 대한 인터벌(420)에서 제8 정점에 대한 정보(v1, v8)는 오버플로우에 해당한다. 따라서 오버플로우 문제를 해결하고 필요한 정점 정보를 빠르게 탐색하기 위하여 도 5에 도시된 것과 같은 확장 해시(hash)를 이용한 데이터 구조를 사용할 수 있다.
도 5에는 오버플로우가 발생한 제1 정점(V1)에 대한 샤드에 추가적으로 확장 샤드(510)를 체인으로 연결하는 것이 도시되어 있다. 또한 제1 정점(V1)에 대한 샤드에 확장 샤드(510)에 대한 주소값(520)이 추가되는 것이 도시되어 있다. 따라서, 상기 샤드의 끝에 저장된 주소값(520)을 통해 상기 샤드의 식별자로 오버플로우가 발생한 제1 정점(V1)의 외향 에지들에 직접 접근할 수 있다. 상기 데이터 구조는 정점의 개수에 해당하는 샤드를 가질 수 있으며, 각각의 샤드에는 (샤드의 크기/에지의 크기)개의 에지가 저장될 수 있다.
본 발명의 일실시예에 따른 그래프 처리 장치는 도 4 또는 도 5와 같이 구성된 그래프 구조 기반 샤드를 기반으로 다음의 표 1의 알고리즘을 이용하여 너비우선 탐색을 수행할 수 있다.
shard_based_BFS(G, v) |
Input: a large graph G, a start vertex v 1: Get first vertex v1, from {V=v1, v2,...,vn} 2: visit[v1] = 1; // 정점 v1를 방문했다고 표시 3: queue[rear++] <- shard[v1].readOutEdge(); //큐에 v1의 외향 에지 정점들 삽입 4: while (front < rear) //후단이 전단과 같거나 작으면 종료 5: v= queue[front++] //큐의 첫 번째에 있는 정점을 가져오며, 전단 1증가 6: for each v1 of V 7: if (!visit[vi]) 8: visit[vi] = 1; // 정점 vi를 방문했다고 표시 9: queue[rear++] = vi; // 큐에 vi 를 삽입하고 후단 1증가 |
표 1을 참조하면, 그래프 처리 장치는 특정 정점(V)에 대한 인터벌의 외향 에지들을 shard[v].readOutEdge() 함수를 통하여 메모리에 로드할 수 있다. 그리고 로드된 외향 에지들을 탐색 큐(queue)에 넣을 수 있다. 이후, 특정 정점(V)와 직접 연결된 정점들에 대한 연산이 끝나고 다른 정점에 대해 너비우선 탐색을 수행하게 될 경우, 다음에 읽어야 할 정점이 무엇인지 저장되었던 탐색 예정 큐에서 읽어와 해당 정점 값을 이용하여 해시 테이블에서 직접 값을 읽어와 처리하는 것을 반복할 수 있다.
도 6은 본 발명의 일실시예에 따른 그래프 처리 방법을 적용 시의 처리 속도를 나타내는 그래프이다.
도 6은 Intel(R) Core(TM) i5-3570 CPU @ 3.40GHz, RAM 8.00GB, OS Ubuntu 14.04.2 LTS의 환경에서 C++언어를 이용한 결과 값이다. 실험을 위해 LiveJournal 블로그 커뮤니티 데이터 셋이 사용되었다. 다음의 표 2는 실험 데이터셋에 대한 통계치를 나타낸다.
Dataset | # of vertices | # of edges |
LiveJournal | 3,997,962 | 34,681,189 |
도 6을 참조하면, 본 발명에 따른 너비우선 탐색 시간이 Graphchi보다 더 빨라졌으며, 특히 Graphchi의 샤드가 100개일 때에 비해 약 5.5%로 향상되었음을 알 수 있다. Graphchi의 경우 샤드의 개수가 증가할수록 인터벌 하나 당 읽을 수 있는 정점의 수가 줄어들어 디스크 입출력이 증가하기 때문에 너비우선 탐색에 있어서 수행시간이 증가함을 알 수 있다.
도 7은 본 발명의 일실시예에 따른 그래프 처리 방법을 적용 시의 메모리 사용량을 나타내는 그래프이다.
도 7은 본 발명에 따른 그래프 처리 방법과 Graphchi의 최적 수행속도 시 메모리 사용량 차이를 나타낸 결과이다. Graphchi는 임의의 정점 식별자로 샤드를 구분하여 메모리에 올리므로, 너비우선 탐색에 사용하지 않는 데이터도 메모리에 로드되어 메모리 사용에 있어서 비효율적이다. 본 발명은 하나의 정점(탐색 대상 정점)과 관련된 샤드만을 메모리에 올려 너비우선 탐색을 수행하기 때문에 메모리의 사용량이 56%까지 감소함을 알 수 있다.
도 8은 본 발명의 일실시예에 따른 그래프 처리 장치를 나타내는 블록도이다.
도 8을 참조하면, 본 발명에 따른 그래프 처리 장치(800)는 정렬부(810), 구성부(820) 및 탐색부(830)을 포함할 수 있다.
정렬부(810)는 그래프 데이터에 포함된 정점들을 정점의 식별자의 순서로 정렬할 수 있다.
구성부(820)는 그래프 데이터에 포함된 정점들 중 탐색 대상 정점과 상기 탐색 대상 정점의 외향 에지에 연결된 이웃 정점으로 샤드를 구성할 수 있다. 일 예로, 구성부(820)는 정렬부(810)에 의해 정점의 식별자 순서로 정렬된 그래프 데이터를 상기 정점의 식별자 단위로 메모리에 로드하여 상기 샤드를 구성할 수 있다. 또한, 구성부(820)는 그래프 데이터 포함된 정점들의 수에 해당하는 개수의 샤드를 구성할 수 있다.
한편 구성부(820)는 샤드 구성 시 탐색 대상 정점의 외향 에지에 연결된 이웃 정점의 수가 기 설정된 개수를 초과하는 경우, 상기 샤드에서 확장된 샤드를 생성하고 상기 확장된 샤드에 상기 탐색 대상 정점에 대한 잔여 정보를 저장하며 상기 샤드에 상기 확장된 샤드의 주소값을 추가할 수 있다. 여기서, 상기 샤드는 저장 장치 내에서 상기 샤드의 식별자와 상기 샤드의 크기를 곱한 값에 해당하는 위치에 저장될 수 있다.
탐색부(830)는 구성부(820)에서 구성된 샤드 단위로 너비우선 탐색을 수행할 수 있다. 이를 위하여 탐색부(830)는 상술한 표 1의 알고리즘을 이용할 수 있다.
너비우선 탐색은 대부분의 그래프 알고리즘에서 정점과 에지를 탐색하기 위한 방법으로 사용된다. 이는 최단경로 탐색, 그래프 패턴 매칭 등과 같은 다양한 분야에서 중요한 단위 연산으로 사용되고 있다. 따라서 본 발명은 소셜 네트워크와 같이 실시간으로 변하는 그래프를 빠르게 부분그래프들로 분해하여 병렬 처리하는 것에는 어려움이 있기 때문에, 하나의 컴퓨터에서 대용량 그래프를 효율적으로 처리하는 용도로 사용이 가능하다. 대용량 그래프를 단일 컴퓨터에서 처리하게 되면 하나의 대용량 그래프 연산을 위하여 다수의 컴퓨터로 병렬 처리하는 방식에 비해 비용면에서의 절감이 가능하고 다수의 컴퓨터에서 동시에 다수의 그래프에 대한 연산을 동시에 할 수 있게 된다. 또한 기존의 기법에 비해 수행속도에서 5.5%, 메모리 사용량에서 56%까지 향상된 성능을 보였기 때문에 더 효율적인 자원 사용이 가능하다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
Claims (11)
- 삭제
- 너비우선 탐색을 이용하는 그래프 처리 장치에 있어서,
그래프 데이터에 포함된 정점들 중 탐색 대상 정점과 상기 탐색 대상 정점의 외향 에지(out edge)에 연결된 이웃 정점으로 샤드(shard)를 구성하는 구성부;
상기 샤드 단위로 상기 너비우선 탐색을 수행하는 탐색부; 및
상기 그래프 데이터에 포함된 정점들을 정점의 식별자의 순서로 정렬하는 정렬부를 포함하고,
상기 구성부는,
상기 정점의 식별자 순서로 정렬된 그래프 데이터를 상기 정점의 식별자 단위로 메모리에 로드(load)하여 상기 샤드를 구성하는 것을 특징으로 하는 그래프 처리 장치. - 삭제
- 너비우선 탐색을 이용하는 그래프 처리 장치에 있어서,
그래프 데이터에 포함된 정점들 중 탐색 대상 정점과 상기 탐색 대상 정점의 외향 에지(out edge)에 연결된 이웃 정점으로 샤드(shard)를 구성하는 구성부; 및
상기 샤드 단위로 상기 너비우선 탐색을 수행하는 탐색부를 포함하고,
상기 구성부는,
상기 탐색 대상 정점의 외향 에지에 연결된 이웃 정점의 수가 기 설정된 개수를 초과하는 경우, 상기 샤드에서 확장된 샤드를 생성하고 상기 확장된 샤드에 상기 탐색 대상 정점에 대한 잔여 정보를 저장하며 상기 샤드에 상기 확장된 샤드의 주소값을 추가하는 것을 특징으로 하는 그래프 처리 장치. - 너비우선 탐색을 이용하는 그래프 처리 장치에 있어서,
그래프 데이터에 포함된 정점들 중 탐색 대상 정점과 상기 탐색 대상 정점의 외향 에지(out edge)에 연결된 이웃 정점으로 샤드(shard)를 구성하는 구성부; 및
상기 샤드 단위로 상기 너비우선 탐색을 수행하는 탐색부를 포함하고,
상기 샤드는,
저장 장치 내에서 상기 샤드의 식별자와 상기 샤드의 크기를 곱한 값에 해당하는 위치에 저장되는 것을 특징으로 하는 그래프 처리 장치. - 제2항, 제4항 및 제5항 중 어느 한 항에 있어서,
상기 구성부는,
상기 그래프 데이터 포함된 정점들의 수에 해당하는 개수의 샤드를 구성하는 것을 특징으로 하는 그래프 처리 장치. - 그래프 처리 장치가 너비우선 탐색을 이용하여 그래프를 처리하는 방법에 있어서,
그래프 데이터에 포함된 정점들 중 탐색 대상 정점과 상기 탐색 대상 정점의 외향 에지(out edge)에 연결된 이웃 정점으로 샤드(shard)를 구성하는 단계; 및
상기 샤드 단위로 상기 너비우선 탐색을 수행하는 단계를 포함하고,
상기 샤드를 구성하는 단계 이전에,
상기 그래프 데이터에 포함된 정점들을 정점의 식별자의 순서로 정렬하는 단계; 및
상기 정점의 식별자 순서로 정렬된 그래프 데이터를 상기 정점의 식별자 단위로 메모리에 로드(load)하는 단계
를 더 포함하는 것을 특징으로 하는 그래프 처리 방법. - 삭제
- 그래프 처리 장치가 너비우선 탐색을 이용하여 그래프를 처리하는 방법에 있어서,
그래프 데이터에 포함된 정점들 중 탐색 대상 정점과 상기 탐색 대상 정점의 외향 에지(out edge)에 연결된 이웃 정점으로 샤드(shard)를 구성하는 단계; 및
상기 샤드 단위로 상기 너비우선 탐색을 수행하는 단계를 포함하고,
상기 구성하는 단계 이후에,
상기 탐색 대상 정점의 외향 에지에 연결된 이웃 정점의 수가 기 설정된 개수를 초과하는지 판단하는 단계; 및
상기 탐색 대상 정점의 외향 에지에 연결된 이웃 정점의 수가 기 설정된 개수를 초과하는 경우, 상기 샤드에서 확장된 샤드를 생성하고 상기 확장된 샤드에 상기 탐색 대상 정점에 대한 잔여 정보를 저장하며 상기 샤드에 상기 확장된 샤드의 주소값을 추가하는 단계
를 더 포함하는 것을 특징으로 하는 그래프 처리 방법. - 그래프 처리 장치가 너비우선 탐색을 이용하여 그래프를 처리하는 방법에 있어서,
그래프 데이터에 포함된 정점들 중 탐색 대상 정점과 상기 탐색 대상 정점의 외향 에지(out edge)에 연결된 이웃 정점으로 샤드(shard)를 구성하는 단계; 및
상기 샤드 단위로 상기 너비우선 탐색을 수행하는 단계를 포함하고,
상기 샤드는,
저장 장치 내에서 상기 샤드의 식별자와 상기 샤드의 크기를 곱한 값에 해당하는 위치에 저장되는 것을 특징으로 하는 그래프 처리 방법. - 제7항, 제9항 및 제10항 중 어느 한 항에 있어서,
상기 샤드를 구성하는 단계는,
상기 그래프 데이터 포함된 정점들의 수에 해당하는 개수의 샤드를 구성하는 단계인 것을 특징으로 하는 그래프 처리 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150119693A KR101658885B1 (ko) | 2015-08-25 | 2015-08-25 | 너비우선 탐색을 위한 그래프 처리 방법 및 장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150119693A KR101658885B1 (ko) | 2015-08-25 | 2015-08-25 | 너비우선 탐색을 위한 그래프 처리 방법 및 장치 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR101658885B1 true KR101658885B1 (ko) | 2016-09-22 |
Family
ID=57102756
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020150119693A KR101658885B1 (ko) | 2015-08-25 | 2015-08-25 | 너비우선 탐색을 위한 그래프 처리 방법 및 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101658885B1 (ko) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20180093158A (ko) | 2017-02-09 | 2018-08-21 | 서울대학교산학협력단 | 그래프 도달가능성 기반 최단거리경로 탐색 방법 |
KR20200110239A (ko) | 2019-03-13 | 2020-09-23 | 한양대학교 산학협력단 | 디스크 기반의 그래프 분석 방법 및 장치 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20100033585A (ko) * | 2008-09-22 | 2010-03-31 | 숭실대학교산학협력단 | 단어연관그래프를 이용한 단어 의미의 자동 군집 기법 |
KR101556060B1 (ko) * | 2014-04-28 | 2015-10-01 | 포항공과대학교 산학협력단 | 후보 영역 탐색 기법을 활용한 부분 그래프 동형 검색 방법 및 그 시스템 |
-
2015
- 2015-08-25 KR KR1020150119693A patent/KR101658885B1/ko active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20100033585A (ko) * | 2008-09-22 | 2010-03-31 | 숭실대학교산학협력단 | 단어연관그래프를 이용한 단어 의미의 자동 군집 기법 |
KR101556060B1 (ko) * | 2014-04-28 | 2015-10-01 | 포항공과대학교 산학협력단 | 후보 영역 탐색 기법을 활용한 부분 그래프 동형 검색 방법 및 그 시스템 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20180093158A (ko) | 2017-02-09 | 2018-08-21 | 서울대학교산학협력단 | 그래프 도달가능성 기반 최단거리경로 탐색 방법 |
KR20200110239A (ko) | 2019-03-13 | 2020-09-23 | 한양대학교 산학협력단 | 디스크 기반의 그래프 분석 방법 및 장치 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112352234B (zh) | 用于处理并发属性图查询的系统 | |
CN107710200B (zh) | 用于并行化smp数据库中的基于散列的运算符的系统和方法 | |
Salihoglu et al. | Optimizing graph algorithms on pregel-like systems | |
US9275422B2 (en) | Distributed k-core view materialization and maintenance for graphs | |
CN109522428B (zh) | 一种基于索引定位的图计算系统的外存访问方法 | |
US9262457B2 (en) | On-demand hash index | |
Awad et al. | Dynamic graphs on the GPU | |
CN104881439A (zh) | 一种空间高效的多模式串匹配方法和系统 | |
CN106599091B (zh) | 基于键值存储的rdf图结构存储和索引方法 | |
CN104956340B (zh) | 可扩展数据重复删除 | |
US9626428B2 (en) | Apparatus and method for hash table access | |
KR101658885B1 (ko) | 너비우선 탐색을 위한 그래프 처리 방법 및 장치 | |
US10198529B2 (en) | Apparatus and method of processing graphic data using index based triangle listing | |
KR20200141208A (ko) | 그래프 데이터 처리 방법 및 그래프 데이터 처리 장치 | |
CN107391508B (zh) | 数据加载方法和系统 | |
CN112527950B (zh) | 一种基于MapReduce的图数据删除方法及系统 | |
US9639566B2 (en) | Method, apparatus and computer program product for improved storage of key-value pairs | |
Rasel et al. | itri: Index-based triangle listing in massive graphs | |
Huang et al. | Distributed merge forest: a new fast and scalable approach for topological analysis at scale | |
Gedik et al. | Disk-based management of interaction graphs | |
JP6189266B2 (ja) | データ処理装置、データ処理方法及びデータ処理プログラム | |
CN104598567A (zh) | 一种基于Hadoop MapReduce编程框架的数据统计排重的方法 | |
CN109165325A (zh) | 用于切分图数据的方法、装置、设备以及计算机可读存储介质 | |
Spafford et al. | Quartile and outlier detection on heterogeneous clusters using distributed radix sort | |
Song et al. | Nslpa: A node similarity based label propagation algorithm for real-time community detection |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20190625 Year of fee payment: 4 |