Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time...

131
Title クラウド環境における効率的なグラフクエリ処理に関 する研究 Author(s) 新井, 淳也 Citation Issue Date Text Version ETD URL https://doi.org/10.18910/72597 DOI 10.18910/72597 rights Note Osaka University Knowledge Archive : OUKA Osaka University Knowledge Archive : OUKA https://ir.library.osaka-u.ac.jp/ Osaka University

Transcript of Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time...

Page 1: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

Title クラウド環境における効率的なグラフクエリ処理に関する研究

Author(s) 新井, 淳也

Citation

Issue Date

Text Version ETD

URL https://doi.org/10.18910/72597

DOI 10.18910/72597

rights

Note

Osaka University Knowledge Archive : OUKAOsaka University Knowledge Archive : OUKA

https://ir.library.osaka-u.ac.jp/

Osaka University

Page 2: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

クラウド環境における

効率的なグラフクエリ処理に関する研究

提出先  大阪大学大学院情報科学研究科

提出年月  2019年 1月

新 井 淳 也

Page 3: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

i

関連発表論文

1. 学会論文誌発表論文

• 新井淳也, 塩川浩昭, 山室健, 鬼塚真, 岩村相哲. 効率的なグラフ分析の

ための実行時並列リオーダリング. 電子情報通信学会和文論文誌 D, Vol.

J102-D, No. 4, 2019 (to appear).

• 新井淳也, 鬼塚真, 塩川浩昭. クラスタリングと空間分割の併用による効率

的な k-匿名化. 日本データベース学会和文論文誌, Vol. 13-J, No. 1, pp.

72–77, 2014.

2. 国際会議発表論文

• Junya Arai, Hiroaki Shiokawa, Takeshi Yamamuro, Makoto Onizuka,

and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering

for Fast Graph Analysis. In Proceedings of the 30th IEEE International

Parallel and Distributed Processing Symposium, pp. 22–31, 2016.

3. 国内会議発表論文 (査読なし)

• 新井淳也, 鬼塚真, 藤原靖宏, 岩村相哲. 探索失敗履歴を用いた高速サブグ

ラフマッチング. 第 10回データ工学と情報マネジメントに関するフォー

ラム論文集, 2018.

• 伊藤竜一, 新井淳也, 佐々木勇和, 鬼塚真. 並列グラフ処理エンジンに対す

Page 4: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

ii 関連発表論文

るグラフ圧縮と頂点順序最適化の適用. 第 9回データ工学と情報マネジメ

ントに関するフォーラム論文集, 2017. [優秀インタラクティブ賞]

• 新井淳也, 藤原靖宏, 鬼塚真, 岩村相哲. データグラフ上の並列枝刈りによ

るサブグラフマッチング. 第 9回データ工学と情報マネジメントに関する

フォーラム論文集, 2017.

• 新井淳也, 塩川浩昭, 山室健, 鬼塚真. 頂点順序の最適化によるスケーラ

ブルなグラフ並列処理. 第 7 回データ工学と情報マネジメントに関する

フォーラム論文集, 2015. [優秀インタラクティブ賞]

• 新井淳也, 鬼塚真, 塩川浩昭. クラスタリングと空間分割の併用による効率

的な k-匿名化. 第 6回データ工学と情報マネジメントに関するフォーラム

論文集, 2014.

Page 5: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

iii

内容梗概

情報化の進展に伴い,実世界に設置されたセンサや人々の電子的な活動はます

ます多くのデータを生み出すようになった.このようなデータはビッグデータと

呼ばれ,その管理と活用は学術的にも産業的にも重要視されている.ビッグデー

タは多種多様な情報を含むことから,高い柔軟性を持つグラフ表現がしばしば利

用される.グラフに対するクエリ処理ではグラフデータに対して不規則なランダ

ムアクセスが発生するため,大規模なグラフを利用する際は大容量のメモリを搭

載した計算機の使用が望ましい.そのような計算機の導入は高コストであった

が,近年はパブリッククラウドのサービスが充実し大容量メモリの計算環境を安

価に利用できるようになった.ますます大規模化していくグラフデータに対応す

るためにクラウド環境の利用は重要である.以上のような背景から,本研究では

クラウド環境におけるグラフクエリ処理に焦点を当てる.

クラウド環境においてはパーソナルデータに関するリスクと規制に配慮する必

要がある.ビッグデータはしばしば個人に関する情報を含む.そのような情報を

オンラインのクラウド環境に保存することは情報流出のリスクを高める.また法

的にも,特定の条件を満たさない限りクラウドへのパーソナルデータのアップ

ロードは禁止されている.そこで本研究では次のように匿名化を通じたクラウド

利用の枠組みを考える.データ所有者は自身の計算環境においてパーソナルデー

タを匿名化し,それをクラウドへアップロードする.クラウドには高速なクエリ

処理エンジンを配備し,匿名化されたデータに基づいてクエリを処理する.

この枠組みを大規模なデータに対して適用するためには高速なクエリ処理エン

ジンと匿名化プログラムが必要である.しかし高速なクエリ処理エンジンの実現

Page 6: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

iv 内容梗概

には次の 2つの課題がある.1つ目に,グラフは事物間の複雑なつながりを表現

可能である反面,そのつながりを辿るために局所性の低い不規則なメモリアクセ

スを生じる.これにより CPUのキャッシュヒット率が低下し,メモリのレイテ

ンシによって処理効率が低下する.2つ目に,最も典型的なグラフクエリである

グラフパターンの検索,即ちサブグラフマッチングは,組み合わせ爆発によって

途方もなく長い計算時間を要する場合がある.さらに匿名化にも課題がある.匿

名化においては入力データと処理後のデータの差分,即ち情報損失を小さく抑え

ることが重要である.また同時に,ますます大規模化するデータに対応するため

には高速に匿名化可能であることが求められる.しかしながら,情報損失を低減

するためには全体最適となるように差分を加える必要があり,高速な処理との両

立が難しい.

そこで,本研究は 3つのアルゴリズムの提案を通じ,高速なクエリ処理と匿名

化による効率的なグラフクエリ処理を可能にする.本論文は全 5章から構成され

る.第 1章では研究の目的と提案手法の全体像を説明する.

第 2章ではグラフ処理に共通の問題であるメモリアクセス局所性の低さを改善

するため,新しいリオーダリングアルゴリズムを提案する.リオーダリングとは

グラフデータに含まれる頂点の順序 (頂点 ID番号)を最適化することでグラフ処

理の局所性を向上させる前処理である.従来,リオーダリングには長い時間を要

し,リオーダリングとグラフ処理を合わせた全体の処理時間はむしろ増加してし

まうケースが多く存在した.これに対し,提案手法はグラフのクラスタ構造を効

率的な並列アルゴリズムで捉えることにより,局所性の高い頂点順序を短時間で

生成する.実験では提案手法がリオーダリングを含めた全体の処理時間の短縮に

効果があることを確認した.

第 3章では不要な探索を枝刈りする効率的なサブグラフマッチングアルゴリズ

ムを提案する.既存のアルゴリズムはグラフ構造を分析する前処理によって枝刈

り可能な探索範囲を見極め,クエリ処理を高速化してきた.しかし探索開始前に

実施可能な枝刈りでは削減できない探索範囲が広く存在する.提案手法では探索

開始後に得られる情報を用いた枝刈りによってクエリ処理を高速化する.アイデ

アは「失敗から学ぶ」ことである.提案手法は探索によって検索条件にヒットし

Page 7: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

v

ないことが判明 (探索失敗) した探索範囲を枝刈り対象として順次追加する.こ

れにより失敗の繰り返しを避ける.さらに実験で提案手法の有効性を確認した.

第 4 章では代表的な匿名化手法である k-匿名化を行うためのアルゴリズムを

提案する.情報損失の小さい k-匿名化のためには,k 個以上の互いに似通った

データ点から成るグループへデータ全体を分割する処理が必要となる.提案手法

は最近傍グラフを用いることで近傍に存在するデータ点を効率的に発見しグルー

プ化することで情報損失を抑える.さらに空間分割による粗粒度のグループ化を

組み合わせることによって小さい情報損失を保ちつつ処理を高速化する.実世界

のデータを用いた性能評価によって提案手法は既存の k-匿名化手法よりも低情

報損失かつ高速であることを確認した.

最後に第 5章では本研究の成果を要約し全体のまとめを行うとともに,今後の

研究課題について述べる.

Page 8: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International
Page 9: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

vii

目次

第 1章 序章 1

1.1 研究の背景と目的 . . . . . . . . . . . . . . . . . . . . . . . . 1

1.2 クラウド環境におけるグラフクエリ処理の枠組み . . . . . . . . 4

1.3 解決すべき課題 . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.3.1 クエリ処理に関する課題 . . . . . . . . . . . . . . . . . 6

1.3.2 匿名化に関する課題 . . . . . . . . . . . . . . . . . . . 7

1.4 提案技術の概要 . . . . . . . . . . . . . . . . . . . . . . . . . . 8

1.4.1 実行時リオーダリング . . . . . . . . . . . . . . . . . . 8

1.4.2 高速サブグラフマッチング . . . . . . . . . . . . . . . . 9

1.4.3 最近傍グラフを用いた k-匿名化 . . . . . . . . . . . . . 10

1.5 本論文の構成 . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

第 2章 実行時リオーダリング 13

2.1 序論 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.2 関連研究 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2.2.1 分割に基づく手法 . . . . . . . . . . . . . . . . . . . . 18

2.2.2 探索に基づく手法 . . . . . . . . . . . . . . . . . . . . 18

2.2.3 ソートに基づく手法 . . . . . . . . . . . . . . . . . . . 18

2.2.4 最適化に基づく手法 . . . . . . . . . . . . . . . . . . . 19

2.3 事前準備 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

2.3.1 グラフ処理のメモリアクセスパターン . . . . . . . . . . 20

Page 10: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

viii 目次

2.3.2 本章が扱う問題 . . . . . . . . . . . . . . . . . . . . . 21

2.4 提案手法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

2.4.1 階層コミュニティオーダリングによる局所性向上 . . . . 22

2.4.2 高速なコミュニティ検出 . . . . . . . . . . . . . . . . . 24

2.4.3 頂点順序生成 . . . . . . . . . . . . . . . . . . . . . . . 29

2.4.4 定性的議論 . . . . . . . . . . . . . . . . . . . . . . . . 29

2.5 評価 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

2.5.1 全体処理時間と内訳 . . . . . . . . . . . . . . . . . . . 32

2.5.2 キャッシュミス回数 . . . . . . . . . . . . . . . . . . . 34

2.5.3 並列処理の影響 . . . . . . . . . . . . . . . . . . . . . 35

2.5.4 スケーラビリティ . . . . . . . . . . . . . . . . . . . . 35

2.5.5 様々な処理アルゴリズムに対する効果 . . . . . . . . . . 37

2.6 結論 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

第 3章 高速サブグラフマッチング 41

3.1 序論 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

3.2 関連研究 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

3.3 事前準備 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

3.3.1 問題定義 . . . . . . . . . . . . . . . . . . . . . . . . . 46

3.3.2 諸定義 . . . . . . . . . . . . . . . . . . . . . . . . . . 47

3.3.3 バックトラッキングによるサブグラフマッチング . . . . 48

3.4 提案手法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

3.4.1 提案手法のアイデア . . . . . . . . . . . . . . . . . . . 50

3.4.2 Dead-endパターンによる枝刈り . . . . . . . . . . . . 50

3.4.3 Dead-endパターンの抽出 . . . . . . . . . . . . . . . . 51

3.4.4 Dead-endパターンの管理 . . . . . . . . . . . . . . . . 56

3.4.5 詳細なアルゴリズム . . . . . . . . . . . . . . . . . . . 59

3.4.6 定性的議論 . . . . . . . . . . . . . . . . . . . . . . . . 61

3.5 評価 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

Page 11: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

ix

3.5.1 クエリ処理時間 . . . . . . . . . . . . . . . . . . . . . 64

3.5.2 Dead-endパターンによる枝刈りの回数 . . . . . . . . . 65

3.5.3 議論 . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

3.6 結論 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

第 4章 最近傍グラフを用いた k-匿名化 71

4.1 序論 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

4.2 関連研究 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

4.2.1 分割手法 . . . . . . . . . . . . . . . . . . . . . . . . . 77

4.2.2 準識別子の変換手法 . . . . . . . . . . . . . . . . . . . 78

4.2.3 本研究の位置付け . . . . . . . . . . . . . . . . . . . . 80

4.3 事前準備 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

4.3.1 空間分割に基づく k-分割 . . . . . . . . . . . . . . . . 80

4.3.2 情報損失指標 . . . . . . . . . . . . . . . . . . . . . . . 81

4.4 提案手法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

4.4.1 最近傍グラフを用いたクラスタリング . . . . . . . . . . 82

4.4.2 空間分割とクラスタリングの併用 . . . . . . . . . . . . 86

4.4.3 定性的議論 . . . . . . . . . . . . . . . . . . . . . . . . 88

4.5 評価 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

4.5.1 友引法の評価 . . . . . . . . . . . . . . . . . . . . . . . 91

4.5.2 空間分割併用の評価 . . . . . . . . . . . . . . . . . . . 95

4.6 結論 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

第 5章 結論と今後の課題 99

5.1 本論文のまとめ . . . . . . . . . . . . . . . . . . . . . . . . . . 99

5.2 今後の課題 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

謝辞 105

参考文献 107

Page 12: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International
Page 13: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

1

第 1章

序章

1.1 研究の背景と目的

情報処理技術の発達は実世界のセンサ情報や人々の電子的な活動の記録から成

る大規模データ,即ちいわゆるビッグデータの収集を可能にした.ビッグデータ

に含まれる情報は多様である.その中には関係データベースが扱うような表形式

の構造化データとして表現することが適さない情報も多く含まれる.そのような

情報を表現するための代表的なデータ構造としてグラフがある.グラフは頂点お

よび頂点間を接続するエッジという 2つの要素から成る.頂点によって事物を表

現し,エッジによって事物間の関係を表現することによって,グラフは様々な情

報を事物間のつながりという観点から柔軟に表現することができる.さらに頂点

とエッジにそれらが表現する事物や関係の種類,値などの付加情報 (プロパティ)

を与える場合がある.そのようなグラフはプロパティグラフと呼ばれ,高い表現

力と柔軟性を持つことから幅広く利用されている [31,45,76].図 1.1にソーシャ

ルネットワーキングサービス (SNS)上の情報をイメージしたプロパティグラフ

の例を示す.他にグラフ表現が適している情報の例としては,Web ページ間の

ハイパーリンク,金融取引,道路網などが挙げられる.これらのグラフは様々な

用途で利用されている.例えばハイパーリンクのつながりを加味することによる

Web 検索の品質向上 [75],金融取引の分析による株価操作の発見 [65],道路網

グラフに基づいた道案内などがグラフの利用によって可能になる.このようにグ

Page 14: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

2 第 1章 序章

名前 阪大 太郎

年齢 22

性別 男

名前 …

年齢 …

性別 …

名前 …

年齢 …

性別 …

名前 …

年齢 …

性別 …

名前 …

年齢 …

性別 …

Browsed

Friend

WorkAt

WorkAt

Sent

Received

CheckedInAtDate: 10/07 19:08

Like

Like

LoggedInFrom

CheckedInAtDate: 10/07 19:11

LoggedInFrom

LiveIn

Friend

住所 大阪府吹田市

URLhttps://www.osaka-u.ac.jp

ユーザアカウント

場所

Web ページ

企業

メッセージ

飲食店

端末

図 1.1: プロパティグラフの例.ユーザアカウントに名前,年齢,性別などのプロパティが付与されている.同様に CheckedInAt を表すエッジは日付 (Date) のプロパティを持つ.

ラフは多様な情報を活用していくために重要な表現形式となっている.

情報を活用するためにはクエリ処理によってグラフに格納された情報を取り出

す必要がある.表形式データに対して SQLの SELECT文とWHERE句を用い

るのと同様に,グラフに対する最も典型的なクエリの一つとして特定のサブグラ

フ構造の検索が用いられる.具体的には,グラフクエリ処理では検索条件を表現

するクエリグラフを受け取り,大きいグラフ (データグラフ) 中に存在する同型

なサブグラフへの対応関係 (埋め込み) を列挙する.アルゴリズムの観点ではこ

のような列挙を行う問題はサブグラフマッチングとも呼ばれる.サブグラフマッ

チングに基づくクエリはグラフ向けデータベースにおいて代表的なクエリ言語で

ある SPARQL, Cypher, Gremlin などによって基本的なクエリとしてサポート

されている [90].さらにデータ分析の分野においても,人間関係の分析 [31],営

業活動の支援 [45],マルウェアの検出 [76] など様々なアプリケーションにサブ

グラフマッチングは利用されている.アプリケーションの具体例として図 1.1の

グラフからサクラ行為を発見するためのクエリを図 1.2(a) に示す.同一端末か

Page 15: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

1.1 研究の背景と目的 3

Like

Like LoggedInFrom

LoggedInFrom

(a) クエリグラフ

Like

Like

LoggedInFrom

LoggedInFrom

(b) データグラフ

図 1.2: クエリグラフおよび同型なサブグラフを含むデータグラフの例.データグラフ中の色が反転されている部分はクエリグラフと同型なサブグラフを示す.

らログインするユーザアカウントは同一人物であると考えられる.そのため,端

末を共有する複数アカウントが同じ飲食店などに高評価 (Like)を与えている場

合はサクラである可能性が高い.そのような行為を図 1.2(a) のクエリグラフに

よって発見することができる.図 1.2(b) のデータグラフでは,このクエリグラ

フと同型なサブグラフを色の反転によって示している.このようにグラフに対す

るクエリは様々に利用され,現代の計算システムにおいて最も重要な処理の一つ

となっている.

クエリ処理ではスムーズな対話的操作のため速やかに結果を返却することが求

められる.効率的なグラフクエリ処理のためにはグラフ全体のデータをメモリ上

にロードしておくことが望ましい.なぜならば,グラフは頂点間の複雑なつなが

りを表現可能である一方で,そのようなつながりを計算機上で辿る際にグラフ

データに対する複雑なランダムアクセスを生じるためである [70].高速なスト

レージとして使用されるソリッドステートドライブ (SSD)であってもメモリと

比較するとレイテンシは約 1000倍である [40]ことから,メモリ上で処理可能か

Page 16: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

4 第 1章 序章

どうかは性能に致命的な影響を与える.しかしながらグラフデータの大規模化に

伴い,一般的な計算機でグラフデータをメモリに格納することは困難になりつ

つある.例えばWeb グラフはそれぞれWeb ページとハイパーリンクを表現す

る 500 億の頂点と 1 兆のエッジを含む [62].また Facebook のソーシャルグラ

フはそれぞれユーザと友人関係を表現する 10億の頂点と 2,000億のエッジを含

む [62].これらの頂点とエッジにプロパティ情報が付加されることでグラフの

データサイズはますます増大する.複数の計算機のメモリにグラフを分割して格

納する分散処理フレームワークも提案されている [18, 39, 69] が,通信や並行性

制御のオーバーヘッドにより単一の計算機よりも性能は低下しがちであることが

知られている [72].そのため,大規模グラフの処理は大容量のメモリを搭載した

計算機を必要とする.

そのような計算機の購入には高いコストがかかることから,近年ではパブリッ

ククラウドが広く利用されている.クラウドでは必要に応じて様々な性能の計算

機を安価に利用することができる.例えば最大手クラウドベンダーの一つである

Amazon Web Services (AWS) は 2019 年 1 月時点で 12TB のメモリを搭載し

たインスタンス (仮想マシン) を提供している*1.このようなクラウド上の計算

資源を使用することで大規模なグラフもインメモリで処理可能である.

以上のような背景から,本研究ではクラウド環境における効率的なグラフク

エリ処理の実現を目指し,主要な技術的課題を解決する要素技術の確立に取り

組む.

1.2 クラウド環境におけるグラフクエリ処理の枠組み

クラウド環境の利用はメモリ容量に関する問題の解決につながる.しかし同時

に,クラウド上で個人に関する情報,いわゆるパーソナルデータ [100]を扱う際

にはリスクと規制があることに注意する必要がある.人々の活動から生じるビッ

グデータは必然的にパーソナルデータを含む.グラフは頂点間の接続関係あるい

は頂点とエッジのプロパティとしてパーソナルデータを含む場合がある.例えば

*1 https://aws.amazon.com/jp/ec2/instance-types/high-memory/

Page 17: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

1.2 クラウド環境におけるグラフクエリ処理の枠組み 5

グラフとして表現された交友関係,購買履歴,移動履歴,金融取引はいずれも

パーソナルデータである.個人のプライバシを守るため,このような情報は流出

しないよう細心の注意を払う必要がある.しかしながらオンライン環境であるク

ラウドには,セキュリティホール,アカウント情報の漏洩,オペレーションミス,

あるいはクラウド事業者による目的外利用などによる情報流出のリスクが存在す

る.さらにパーソナルデータの利用は各国の法律で規制されている [101].日本

においても,データを提供する個人の合意など所定の条件が満たされない限りク

ラウド環境へパーソナルデータをアップロードすることは禁止されている [100].

そこで本研究では,クラウド環境の利用を可能にするために匿名化を用いる.

匿名化とは個人の特定および元の個人情報の復元ができないようパーソナルデー

タを加工する処理である.匿名化されたデータは匿名加工情報と呼ばれる [100].

匿名加工情報の利用には 2 つの利点がある.まず,仮にクラウド上のデータが

流出したとしても,そのデータが匿名加工情報であればプライバシに関する影響

を低減できる [82].さらに,匿名加工情報は法的にもその利用に高い自由度が

認められている.例えば,日本では本人の同意を必要とせずに匿名加工情報の

目的外利用や第三者への提供が可能である [100].また EUの一般データ保護規

則 (General Data Protection Regulation) において匿名加工情報はパーソナル

データとみなされない*2.

匿名化を通じてクラウド環境上でクエリ処理を行うために,本研究では次のよ

うな枠組みを考える.クエリ処理エンジンと匿名化プログラムを作成し,クエリ

処理エンジンをクラウド上に,匿名化プログラムをデータ所有者の計算環境に配

備する.データ所有者は自身の計算環境でパーソナルデータを含むグラフを匿名

化し,匿名化されたグラフをクラウドへアップロードする.クエリのリクエスト

はクラウド上のクエリ処理エンジンに対して行い,クエリ処理エンジンは匿名化

されたグラフに基づいて応答する.このような枠組みを用いることにより,パー

ソナルデータにまつわる障壁をクリアしつつ効率的なクエリ処理が可能になる.

*2 前文第 26 項および https://ec.europa.eu/info/law/law-topic/data-protection/reform/what-personal-data_en

Page 18: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

6 第 1章 序章

1.3 解決すべき課題

匿名化を伴うクラウド利用の枠組みはクエリ処理エンジンと匿名化プログラム

の存在を前提とする.大規模なデータを扱うためにはどちらも高速な処理が求め

られるが,その実現には技術的な課題が存在する.本節ではそれらの課題につい

て述べる.

1.3.1 クエリ処理に関する課題

グラフは事物間の複雑なつながりを表現するため,その構造に対するクエリ処

理は時間を要する.処理時間は CPUの命令処理効率と発行命令数によって決ま

るが,グラフクエリ処理では次に述べるような 2つの要因がそれぞれ命令処理効

率の低下と発行命令数の増加を引き起こしている.

低い局所性

前述のように,サブグラフマッチングを含め,グラフ処理ではグラフデータに

対する局所性の低い不規則なランダムアクセスが生じる.本研究はクラウド環境

の利用によるインメモリ処理を前提としているため,ストレージへのアクセスを

考慮する必要はない.しかしながら,予測困難な不規則アクセスによる CPUの

キャッシュヒット率低下という問題が依然として存在する.キャッシュミス時に

はメモリアクセスが発生し,その間 CPU は空転 (ストール) するため命令処理

効率が低下する.具体的にはグラフ処理において CPUが計算を行っている時間

は 10~45%で,残りはキャッシュストールによって消費されているという報告

がある [92].このように局所性の低いメモリアクセスによってグラフ処理のコス

トが増大する.

無駄な探索

サブグラフマッチングではデータグラフに含まれるクエリグラフの埋め込み

を列挙する.埋め込みはクエリグラフの頂点をデータグラフの頂点へ 1 つず

Page 19: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

1.3 解決すべき課題 7

つ割り当てる手続きを再帰的に適用することで探索される.このとき埋め込み

が存在しない箇所に対する無駄な探索が継続されてしまう場合がある.探索で

は頂点の割り当て方の組み合わせを生成するため,適切に探索が枝刈りされな

ければ組み合わせ爆発によって極めて長い処理時間を要する.そこで無駄な探

索を早期に枝刈りするためのヒューリスティクスがこれまでよく研究されてき

た [7, 20, 42, 43, 81, 83, 97].しかし近年提案された手法群にもそれぞれ苦手とす

るクエリ形状が存在し,それらの探索に要する時間がクエリ処理のスループット

を低下させる支配的要因となることが指摘されている [53].このように,無駄な

探索は依然としてクエリの処理コスト増大の原因となっている.

1.3.2 匿名化に関する課題

クエリ処理のみならず匿名化もまた高い計算コストを要する.匿名化はグラフ

から人物の名前や IDを除去するのみでは達成できない.なぜならば年齢,性別,

居住地などの情報を組み合わせることで個人を特定できてしまう場合があるため

である.従って匿名化のためには適切にデータを書き換える必要がある.代表的

な匿名化のアプローチとして k-匿名化 [88]がある.k-匿名化はある個人が他の

k − 1人以上と区別できないようにデータを加工することで個人の特定を困難に

する手法である.例えば k 人以上が同じ情報を持つように年齢などのデータを

平均値で置き換える方法がある [26].このような加工は元データからの乖離,即

ち情報損失を生じる.そこで元々似通った情報を持つ k 人以上をグループ化し,

そこに含まれる人物を同じ情報で置き換えることにより情報損失を低減する.つ

まり,k-匿名化ではデータに含まれる人物を k人以上のグループへと分割する必

要がある.本研究の枠組みにおいて匿名化はデータ所有者の計算環境で行われる

ことから,一般的な性能の計算機上で分割可能でなければならない.しかしなが

ら,情報損失が小さくなるように全体最適を目指して分割することは難しい問題

である.人物の数 nに対して計算量 O(n log n)の高速なアルゴリズムが提案さ

れている [61]が,その情報損失は計算量 O(n2)のアルゴリズムよりも大幅に大

きいことが知られている [12].つまり,既存手法では小さい情報損失と高速な処

Page 20: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

8 第 1章 序章

理のどちらか一方を選択しなければならず,両立されていない.

1.4 提案技術の概要

以上のような課題を解決するため,本研究では 3 つのアルゴリズムを提案す

る.それぞれ,(i)局所性の向上,(ii)無駄な探索の削減,(iii)低情報損失かつ高

速な匿名化によって 1.3節で述べた課題を解決する.以下に各アルゴリズムの概

要を説明する.

1.4.1 実行時リオーダリング

グラフ処理におけるメモリアクセスの局所性を向上させる方法としてリオーダ

リングが広く用いられてきた.リオーダリングとは頂点の並び順 (頂点 IDの割

り当て)の変更を通じてグラフ処理時のデータ配置とメモリアクセスを最適化す

る手法である.リオーダリングはサブグラフマッチングを含む様々なグラフ処理

に効果があり,さらにグラフ処理プログラムの実装を変更する必要がないという

利点がある.しかし一方で,既存のリオーダリングアルゴリズムは効果的な頂点

順序の生成に長い時間を要する.そのため,グラフ処理の実行時に前処理として

リオーダリングを行うと,リオーダリングと後続のグラフ処理を合計した全体の

処理時間をむしろ増加させてしまう.クエリ処理ではクエリと無関係な頂点や

エッジを除外して処理する場合があるため,クエリが投入されてからリオーダリ

ングする必要がある.また実世界の事象を反映することでグラフは時々刻々と変

化するため,グラフ分析においても実行時にその都度リオーダリングを行うこと

が望ましい.このような場合に既存手法で性能を向上させることは難しい.

全体の処理時間を短縮するためには高い局所性を示す頂点順序を短時間で生成

しなければならない.そこで提案手法ではグラフに含まれるコミュニティ構造に

着目する.コミュニティとはエッジで密に接続された頂点の集合である.Web

グラフやソーシャルグラフなどいわゆる実世界のグラフはコミュニティ構造を含

むことが知られている [63].密に接続された頂点はグラフ処理時に互いにデータ

を参照し合うため,提案手法はそれらをメモリ上で近傍に配置させることにより

Page 21: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

1.4 提案技術の概要 9

局所性を高める.さらに提案手法は逐次集約法 [85] を基にした高速な並列アル

ゴリズムによってコミュニティ検出を行う.これにより局所性の高さと短時間で

のリオーダリングを両立し,リオーダリング時間を含めた全体の処理時間を短縮

する.

1.4.2 高速サブグラフマッチング

1.3.1節で述べたように,サブグラフマッチングを高速化するためには無駄な

探索の枝刈りが重要である.既存のサブグラフマッチングアルゴリズムはクエリ

グラフとデータグラフの構造を分析する前処理に基づいて埋め込みが存在しない

探索範囲を見極め,それによって無駄な探索を削減してきた.例えば,クエリグ

ラフの頂点を u,データグラフの頂点を vとする.もし uの次数が vよりも大き

ければ,uを v に割り当てた後に探索を継続しても埋め込みを発見することはで

きない [89].そのため u を v に割り当てた場合についての探索は枝刈りしてよ

い.しかし,埋め込みが存在する探索範囲を除外してしまうことがないよう,探

索の枝刈りは慎重に行わなければならない.探索の開始前に得られる情報のみで

は枝刈り可能と判定できる範囲は限定的である.

そこで提案手法は探索の最中に情報を得ながら徐々に探索範囲を削減する.提

案手法のアイデアは「失敗から学ぶ」ことである.ここで失敗とは埋め込みを発

見することができなかった探索を意味する.失敗が発生した際,提案手法は探索

が失敗する条件を導出する.具体的には,失敗の原因となったクエリ頂点とデー

タ頂点の割り当てを特定し,それを失敗パターンとして記録する.そして記録さ

れている失敗パターンに合致する頂点割り当てが以降の探索において生成された

場合,その探索を枝刈りする.失敗パターンの抽出ルールは注意深く設計されて

おり,提案手法は既存手法同様全ての埋め込みを発見することができる.このよ

うな枝刈りによってサブグラフマッチングを高速化する.

Page 22: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

10 第 1章 序章

1.4.3 最近傍グラフを用いた k-匿名化

k-匿名化のための情報損失が少ないグループ化手法としてはこれまでクラスタ

リングに基づく手法が提案されてきた [86].しかし既存手法 [86] はデータの類

似した k人を貪欲にグループ化することから,処理の終わりが近づくにつれ互い

にデータの類似しない k 人が 1 つのグループを形成するようになる.その結果

情報損失が増大するという課題がある.さらに人物の数 nに対し O(n2)の時間

計算量を示すため,大規模データに対する適用が難しい.

そこで提案手法では,情報損失と計算量をそれぞれ次のようなアプローチで低

減する.まず情報損失を低減するため,最近傍グラフの構築によってクラスタを

考慮したグループ化を行う.具体的には,まず各人物の類似度に基づき人物同士

を接続した最近傍グラフを構築する.次に,既存手法と同様にデータの類似した

人物を貪欲に収集しグループ化する.その際,クラスタを考慮して 1グループに

含める人数を変化させる.これによってより全体最適に近いグループの作成が可

能になる.

最近傍グラフの構築には計算量O(n2)を要するが,提案手法では空間分割を組

み合わせることで計算量を低減する.具体的には,kd-tree [33]を用いた粗粒度

の分割を行う.k-匿名化において k は 5などの小さい値である [29]ため,デー

タ全体を考慮せず,類似度の高い人物のみを考慮しミクロな観点でグループを作

成した場合も情報損失に影響しにくい.そのため,粗粒度の空間分割によって k

人よりも多いグループへ分割し,その内部のみ考慮しながら k人以上からなる細

粒度のグループへ分割するという 2段階の処理を行う.kd-treeによる空間分割

は計算量 O(n log n) であるから,途中まで空間分割を使用することでグループ

の作成に要する計算量は O(n2) よりも小さくなる.これにより,小さい情報損

失と高速な匿名化を両立する.

Page 23: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

1.5 本論文の構成 11

1.5 本論文の構成

本論文は全 5章から構成され,本章以降の内容は次のとおりである.第 2章と

第 3章は高速なクエリ処理のためのアルゴリズムを説明する.第 2章ではメモリ

アクセスの局所性を向上させるための実行時リオーダリングアルゴリズムを,第

3章では不要な探索の枝刈りによる高速サブグラフマッチングアルゴリズムをそ

れぞれ説明する.第 4 章では最近傍グラフの利用によって情報損失の少ない k-

匿名化を高速に行うアルゴリズムを説明する.最後に第 5章では本研究の成果を

要約し全体のまとめを行うとともに,今後の研究課題について述べる.

Page 24: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International
Page 25: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

13

第 2章

実行時リオーダリング

2.1 序論

1.1節で述べたように,いくつかのクラウドベンダーは大容量メモリ環境を提

供している.そのような環境では大規模なグラフをメモリに格納することができ

るが,現代の CPUの処理速度と比較するとメモリへのアクセスに要する時間は

依然として極めて長い.メモリへのアクセスが発生すると CPUはストール状態

となり,命令処理効率が低下する.このような問題を緩和するため,CPUは高

速にアクセス可能なキャッシュメモリを備えていることが一般的である.効率的

なグラフクエリ処理を実現するためには,局所性の高いメモリアクセスを行い

CPUに内蔵されたキャッシュを効果的に利用する必要がある.

ところが,一般にグラフ処理は局所性の低いメモリアクセスを行い,それに

伴ってキャッシュミスが頻発することが知られている [70, 92].実世界のグラフ

は事物間の非構造的で複雑なつながりを表現しているため,その処理において

も不規則なアクセスパターンを生じる.例えば SNSのソーシャルグラフを処理

する際,ユーザ IDをキーとしてユーザの情報を保存することが自然である.一

方で友人をユーザ IDに基づいて選ぶとは考え難いことから,各ユーザは見かけ

本章は電子情報通信学会和文論文誌 D (Copyright©2019 IEICE)に含まれる ‘効率的なグラフ分析のための実行時並列リオーダリング’ [98]に基づく.本章の一部データは電子情報通信学会和文論文誌 D [98]において発表され,また電子情報通信学会の許可のもと論文 [98]から再利用されている.

Page 26: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

14 第 2章 実行時リオーダリング

5

2

07

4

13

61.4

2.6

5.1

8.0

9.2 7.9

0.7

1.3

0.54.2

3.1

8.4

(a) ランダムな頂点順序のグラフ

0

2

31

4

76

5

コミュニティ 1コミュニティ 2

1.4

2.6

5.1

8.0

9.2 7.9

0.7

1.3

0.54.2

3.1

8.4

(b) リオーダリングされたグラフ

0 1 2 3 4 5 6 7

0 1.4 5.1 2.6

1 8.4 4.2

2 1.4 8.0 9.2

3 8.4 0.5 3.1

4 5.1 8.0 0.5 1.3 7.9

5 0.7

6 4.2 3.1 1.3

7 2.6 9.2 7.9 0.7

(c) グラフ (a)の隣接行列

0 1 2 3 4 5 6 7

0 0.7

1 0.7 9.2 2.6 7.9

2 9.2 1.4 8.0

3 2.6 1.4 5.1

4 7.9 8.0 5.1 1.3 0.5

5 1.3 3.1 4.2

6 0.5 3.1 8.4

7 4.2 8.4

コミュニティ

1コミュニティ

2

(d) グラフ (b)の隣接行列

図 2.1: 重み付きグラフとその隣接行列の例.グラフ (b)の点線はコミュニティ構造を示す.

上ランダムな IDのユーザと友人関係にある.従ってあるユーザが与えられたと

き,その友人,即ち隣接頂点の情報を取得する際にはメモリへのランダムなアク

セスが生じる.グラフは事物間のつながりに着目するデータ表現であることか

ら,このように隣接頂点間のつながりを捉えるためのメモリアクセスはほぼ全て

のグラフ処理において見られる.

グラフクエリ処理もまた局所性の低いメモリアクセスを行う.しかしグラフク

エリ処理は様々なアルゴリズムが存在しそれぞれ異なる複雑なメモリアクセスを

行うため,モデル化が難しい.そこでここでは単純かつよく知られたアルゴリズ

ムとして PageRankに焦点を当てる.例として PageRankが図 2.1(a)に示すグ

ラフにおいて行うメモリアクセスを考える.各頂点のデータは配列に格納されて

いるものとする.先に述べた SNS の例と同様,このグラフは頂点 ID と無関係

Page 27: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

2.1 序論 15

な接続関係を持つ.PageRankは頂点を順に選択しその周辺のつながりを調査す

る.具体的には最初に頂点 0とその隣接頂点である頂点 2, 4, 7がアクセスされ,

次に頂点 1とその隣接頂点である 3, 6がアクセスされる.この時点までで頂点

0, 2, 4, 7, 1, 3, 6に対応する頂点データが順にアクセスされたことになるが,こ

のようなアクセスはキャッシュミスを多発させる.なぜならばここまで各頂点へ

のアクセスは一度きりであり,さらにメモリ上で互いに離れた要素にアクセスし

ているためである.このことはそれぞれ時間的局所性と空間的局所性が低いこと

を意味する.キャッシュミスはメモリアクセスのための遅延を発生させるのみな

らず,マルチコア CPUにおけるコア間通信やメモリ帯域の飽和によって並列グ

ラフ処理のスケーラビリティに深刻な影響をもたらす [70].

局所性を向上させるため,さまざまなアプリケーションにおいてリオーダリン

グアルゴリズムが使用されている [17,32,36,56,78].リオーダリングによって頂

点の並び順,即ち頂点 IDの割り当てを変更することにより,グラフ処理アルゴ

リズムの実装を変更することなくメモリアクセスの局所性を向上させることがで

きる.具体的には隣接頂点同士に近い ID番号を与えることで,処理アルゴリズ

ムは直前の処理でアクセスされた頂点に繰り返しアクセスするようになり (高い

時間的局所性),さらにそのデータはメモリ上で近傍に存在するようになる (高い

空間的局所性).図 2.1(a)のグラフに対するリオーダリング結果の例を図 2.1(b)

に示す.このグラフにおいて頂点 0 と 1 およびぞれぞれに隣接する接続関係を

調べるとき,頂点 0, 1, 1, 0, 2, 3, 4が順番にアクセスされる.この場合頂点 0と

1が複数回アクセスされており,またアクセス先である頂点 0–4はメモリ上の連

続領域に格納されているため,時間的・空間的局所性が向上している.実際に,

既存研究 [32, 66, 79] では前もってグラフをリオーダリングしておくことによっ

て PageRankと幅優先探索 (BFS)を高速化している.

しかしながら,効果的な頂点順序を生成するためには長い計算時間を要する.

そのため,リオーダリングとグラフ処理を合わせた全体の処理時間はリオーダリ

ングを用いない場合よりもむしろ増加してしまう場合がある.グラフデータを前

もって入手し,事前にリオーダリングを済ませておくことができればリオーダリ

ング時間の長さは問題になりにくい.しかし実世界のグラフは時々刻々と構造を

Page 28: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

16 第 2章 実行時リオーダリング

変化させる [55]ため,処理時にその都度リオーダリングすることが望ましい.ま

た,本研究ではグラフクエリ処理のメモリアクセス効率の改善を目指している.

クエリ処理ではクエリと無関係な頂点やエッジを無視することでグラフの規模を

仮想的に縮小し,処理を効率化することができる.縮小されたグラフはクエリが

投入されてから生成されるため,その場でリオーダリングする必要がある.従っ

て,メモリアクセスの効率化で得られる高速化の効果をリオーダリングに要する

時間が上回りやすく,全体の処理時間を短縮できない.

そこで本章では,グラフ処理実行時のリオーダリングによる処理時間の短縮を

可能にするため,新しいアルゴリズムである Rabbit Order を提案する.Rabbit

Order は高い局所性と短いリオーダリング時間を 2 つのアプローチによって両

立する.1つ目のアプローチはグラフの階層的なコミュニティ構造を捉えること

で局所性を向上させる階層コミュニティオーダリングである.実世界のグラフ

はコミュニティ構造,即ち密に接続された頂点の集合を含むことが知られてい

る [73].密な接続によりコミュニティ内の頂点はグラフ処理中相互に頻繁なアク

セスを行う.そのため,同一コミュニティ内の頂点に連続した ID 番号を与え,

メモリ上で近傍に配置することで局所性が向上する.Rabbit Orderはさらにコ

ミュニティが入れ子状の階層構造をしばしば有する [19]ことに着目し,コミュニ

ティ内の頂点とその内部コミュニティの頂点を再帰的に近傍に配置する.このよ

うな配置はコミュニティの階層と CPU が持つキャッシュの階層 (L1, L2 など)

を自然に対応付けることでより効果的なキャッシュの活用を可能にする.2つ目

のアプローチは並列処理によるグラフの縮約とコミュニティ検出によってリオー

ダリング時間を短縮する並列逐次集約である.このアプローチは密に接続された

2つの頂点を 1つの頂点に集約する操作を繰り返すことで階層的コミュニティを

検出する.さらにその操作を軽量なアトミック命令を使った並行性制御によって

並列に実行することで高いスケーラビリティを実現する.

提案手法の特長は次の 3つにまとめられる:

1. 高い局所性: Rabbit Orderは既存手法と比較して同等以上にキャッシュ

ミスを削減する効果的な頂点順序を生成する.

Page 29: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

2.2 関連研究 17

2. 高速なリオーダリング: Rabbit Orderはリオーダリングを短時間で完了

する.そのためリオーダリングを含めた全体処理時間の観点でグラフ処理

を高速化することができる.

3. 幅広い有効性: 実世界のグラフ 10種類とグラフ処理アルゴリズム 6種類

を用いた実験において,Rabbit Orderは様々な特徴を持つグラフとグラ

フ処理に対して効果を示した.

評価実験の結果,全体処理時間の観点で提案手法は平均 2.2倍グラフ処理を高

速化することが確認された.また同時に全体処理時間について既存手法は高速化

効果をほぼ示さないことも判明した.

本章の構成は次の通りである.2.2節で局所性向上に関する既存研究を紹介し,

2.3 節で本章が前提とする知識の説明と問題定義を行う.2.4 節において提案手

法である Rabbit Orderの詳細を説明し,2.5節で評価を行う.最後に 2.6節で

結論を述べる.

2.2 関連研究

グラフ処理の局所性向上に関する研究は 2つに大別できる.1つ目はリオーダ

リングの研究 [2, 8, 17, 22, 32, 36, 52, 56, 57, 66, 78, 79, 92]である.リオーダリン

グ手法はグラフ処理の前処理としてグラフデータを最適化することで局所性を向

上させる.2 つ目はグラフ処理フレームワークの研究である [35, 71, 95, 96].グ

ラフ処理フレームワークは局所性の高いデータ構造とデータへのアクセスを提供

する APIから成る.リオーダリングは前処理であるため,グラフ処理フレーム

ワークよりも柔軟に適用できることが利点である.フレームワークを使用するた

めにはその APIを用いてプログラムを実装する必要があるのに対し,リオーダ

リングは既存のプログラムも高速化することができる.また,フレームワーク

を用いて実装されたプログラムをリオーダリングによって一層高速化すること

もできる.例えば Zhangらは局所性の高い頂点順序によって彼らのグラフ処理

フレームワーク Cagra の効率が高まることを確認している [96].このようにリ

オーダリングは幅広く効果的なアプローチである.

Page 30: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

18 第 2章 実行時リオーダリング

リオーダリングの研究における Rabbit Orderの位置付けを詳しく説明するた

め,以降ではリオーダリング手法を 4種類に分類し代表的な手法を紹介する.

2.2.1 分割に基づく手法

グラフを密に接続された頂点のグループへ分割し,グループ内の頂点を連続

に配置するというアイデアは過去にも Nested Dissection [37, 57], COM [79],

Layered Label Propagation (LLP) [8], SlashBurn [66]などで提案されている.

Rabbit Orderはコミュニティ検出によるグラフ分割を利用するためこの分類に

含まれる.これらの手法はグラフの分割にそれぞれ異なる手法を採用しているた

め,結果として得られる頂点順序およびリオーダリングに要する時間が異なる.

既存手法と比較すると,Rabbit Orderの特長は頂点 1つのコミュニティに辿り

着くまでのコミュニティ階層を捉えた階層的リオーダリングによる高い局所性,

およびそれを逐次集約に基づくコミュニティ検出で実施することによる高速なリ

オーダリングにある.

2.2.2 探索に基づく手法

グラフ分割に基づく手法が分割と頂点順序の生成という 2 ステップに分か

れるのに対し,一定のルールに従ってグラフを探索 (traverse) する訪問順に直

接頂点を並べ替える手法がある.代表的なものとして Cuthill-McKee [22] お

よび Reverse Cuthill-McKee (RCM) [36] が広く使用されている.RCM には

NUMA 環境向けの亜種 [32] や並列化手法 [52] も提案されている.これらの手

法は高速である一方,複雑なグラフ構造を捉えることができないため,局所性の

向上効果は Rabbit Orderや LLPよりも小さい.

2.2.3 ソートに基づく手法

頂点のソートによって頂点順序を生成する手法がしばしば用いられる.Shin-

gle ordering [17]はソート時のキーとしてMinHash法 [11]に基づく隣接頂点集

合のハッシュ値を用いる.これにより隣接頂点集合に重複が多い頂点同士が近傍

Page 31: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

2.2 関連研究 19

に配置されやすくなる.また,高次数頂点はグラフ処理において頻繁に参照さ

れるため,頂点次数に基づくソートは一定の局所性向上効果を持つ [3, 66, 92].

Frequency Based Clustering (FBC) [96]は高次数頂点のみを次数ソートによっ

て集約し,その他の頂点は頂点順序を変更しない.これにより,元々の頂点順

序が持つ局所性を保ちつつ高次数頂点の局所性を向上させる.本章では Shingle

ordering と次数ソートについて評価を行っているが,図 2.7 に示されているよ

うにこれらの局所性向上効果は僅かである.また,本章の実験条件では局所性の

低いランダムな頂点順序を入力としているため,FBCの局所性向上効果は次数

ソート以下になると考えられる.

2.2.4 最適化に基づく手法

局所性の向上を最適化問題へ還元し,直接それを解くことで頂点順序を生成

する研究が行われている.最新の手法はWeiらによって提案された Gorder [92]

である.Wei らは 2 頂点が共有する隣接頂点の数に着目し,頂点順序の局所性

の高さを示すスコア関数を定義した.Gorder はスコアが高くなるような頂点

順序を巡回セールスマン問題 (TSP)の近似解法によって発見する.このような

頂点順序は高い局所性を示す一方で,生成のために長い時間を要する.例えば

Rabbit Orderは twitterグラフ (表 2.1)を約 25秒でリオーダリングするのに対

し,Gorderは 5,000秒以上を要する [92].文献 [2, 78]の手法は隣接行列の行ま

たは列の間に存在する局所性をハイパーエッジとして表現し,ハイパーグラフの

分割や TSPを通じて頂点順序を生成する.しかしハイパーグラフに基づくこれ

らの手法は,nを頂点数,mをエッジ数とするとき,少なくとも O( m2

n )の時間

計算量を示す [13].そのため大規模なグラフへの適用が困難である.このよう

に最適化に基づく手法はグラフ処理実行時のリオーダリングに適さないのに対

し,Rabbit Orderはリオーダリング時間を含めてグラフ処理の高速化を達成し

ている.

Page 32: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

20 第 2章 実行時リオーダリング

0 1 2 3 4 5 6 7 8

0 3 5 8 11 16 17 20 24

0 1 2 3 4 5 6 7 8 9 10 11 23

2 4 7 3 6 0 4 7 1 4 6 0 … 5

𝐴𝐼

𝐴𝐶

𝐴𝑉 1.4 5.1 2.6 8.4 4.2 1.4 8.0 9.2 8.4 0.5 3.1 5.1 … 0.7

インデックス配列

列配列

値配列

図 2.2: 図 2.1(c)の疎行列を表現する CSR.

アルゴリズム 1 疎行列ベクトル乗算 (SpMV)入力: n× n CSR行列 A = (AI , AC , AV ),長さ nのベクトル x.

出力: y = Ax.

1: for i = 0 to n− 1 do2: y[i]← 03: for k = AI [i] to AI [i + 1]− 1 do4: y[i]← y[i] + AV [k] x[AC [k]]

2.3 事前準備

本節ではまずグラフ処理の典型的なメモリアクセスパターンを説明し,次に本

章で扱う問題を定義する.

2.3.1 グラフ処理のメモリアクセスパターン

グラフ処理アルゴリズムは頂点間のつながりを捉えるためのメモリアクセスを

行うという点で共通するものの,具体的なアクセスパターンは様々である.特に

グラフクエリ処理はアルゴリズム毎の差が大きい.例えば PageRank のように

繰り返し処理を行うもの [43]や,BFS状にエッジを辿るもの [7,42]などがある.

これらはそれぞれ異なる振る舞いをするが,一方でPageRankやBFSを含む典

型的なグラフ処理は疎行列ベクトル乗算 (sparse matrix-vector multiplication;

SpMV ) によって表現可能であることが知られている [51].そこで本論文では

SpMVに基づいてアクセスパターンの議論を行う.SpMVとは密ベクトル xと

Page 33: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

2.4 提案手法 21

疎行列 Aについてその積 y = Axを求める計算である.グラフ処理において多

くの場合 Aは重み付き隣接行列である.

疎行列の表現形式としては compressed sparse row (CSR)が広く用いられて

いる [2, 52, 78].CSR は疎行列中の非ゼロ値とその位置を 3 つの配列,即ちイ

ンデックス配列 AI,列配列 AC,値配列 AV によって表現する.AI [i]は行列の

i + 1 行目に対応するデータの AC と AV における開始位置を示し,AC と AV

の要素はそれぞれ列番号とその列に存在する値を表す.例として図 2.1(c) の行

列に対応する CSR表現を図 2.2に示す.CSRを用いた SpMVはアルゴリズム

1に示すように計算される.このアルゴリズムは x以外の配列に対しては連続ア

クセスを行うが,xに対しては AC を通じた間接参照により不規則なアクセスを

行う (4行目).そのため SpMVは xに対するメモリアクセスの局所性が低い.

2.3.2 本章が扱う問題

本章ではグラフ処理に広く見られる SpMV 型のアクセスパターンを想定

し,その局所性をリオーダリングによって向上させる.具体的には,V =

{0, 1, . . . , n− 1}を正の整数を IDとする n個の頂点の集合,E ⊆ V × V をエッ

ジの集合,G = (V, E)をグラフ,Aを Gの隣接行列とするとき,アルゴリズム

1で示される SpMVにおいて発生するキャッシュミスを削減するような頂点 ID

の置換 π : V → V を生成する.

さらに,本章ではグラフ処理の実行時にリオーダリングを行うことによる高速

化を目指す.具体的には,グラフ処理アルゴリズムおよびグラフ G を与えられ

たとき,キャッシュミスの削減によりリオーダリングとグラフ処理を合わせた全

体処理時間を短縮する.

2.4 提案手法

本節では提案手法である Rabbit Orderを特徴づける 2つのアプローチ,即ち

階層コミュニティオーダリングと並列逐次集約について説明する.

Page 34: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

22 第 2章 実行時リオーダリング

2.4.1 階層コミュニティオーダリングによる局所性向上

実世界のグラフはしばしばコミュニティ構造を含む [73].コミュニティとは密

に接続された頂点の集合である.密に接続された頂点はグラフ処理において相互

に頻繁なメモリアクセスを発生させる.そのため,コミュニティ内の頂点を連続

したメモリ領域に配置することで高い空間的・時間的局所性を得られることが知

られている [8, 79].エッジは隣接行列において非ゼロ値として表現されることか

ら,各コミュニティに含まれる頂点を連続して配置することによって隣接行列の

対角上に密なブロックが形成される.密なブロックは狭いメモリ領域への頻繁な

メモリアクセスを生じさせることから,高い局所性を示す.そのような頂点順序

に図 2.1(a)のグラフを並べ替えたものが図 2.1(b)である.図 2.1(d)の灰色部分

で示すようにコミュニティ 1, 2 のそれぞれに対応する密なブロックが隣接行列

に生じている.コミュニティ 1 に対応するブロック (頂点 0–4) の処理時は頻繁

に頂点 0–4 へのアクセスが発生するため局所性が高い.コミュニティ 2 につい

ても同様である.このようにコミュニティ構造を利用することで局所性を向上さ

せることができる.

以上のアイデアをさらに発展させ,本研究では実世界のグラフにみられる階層

的なコミュニティ構造 [19] に着目する.階層構造において各コミュニティはよ

り密に接続された内部コミュニティを含んでいる.例えば学生のソーシャルネッ

トワークには,学校,学年,クラスのように段階的に密になる人間関係の階層が

見られるはずである.

階層的コミュニティから局所性を抽出するため,階層コミュニティオーダリン

グを提案する.階層コミュニティオーダリングとは,いずれの階層においても各

コミュニティ内の頂点が連続して配置されているような頂点順序である.このよ

うな順序は内部コミュニティの頂点についても再帰的に連続した配置を行うこと

によって得ることができる.階層コミュニティオーダリングでは隣接行列におい

て密なブロックの内側に内部コミュニティと対応する一層密なブロックが形成さ

れるため,高い局所性を得ることができる.さらに階層構造を捉えた頂点順序は

Page 35: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

2.4 提案手法 23

アルゴリズム 2 Rabbit Orderの概要入力: グラフ G = (V, E)出力: 新しい頂点順序を表す置換 π : V → V

1: dendrogram ← CommunityDetection()2: return OrderingGeneration(dendrogram)

3: function CommunityDetection()4: V を頂点次数順にソート

5: for each u ∈ V do6: v ← ∆Q(u, v)を最大化する uの隣接頂点

7: if ∆Q(u, v) > 0 then8: uを v へ集約し,その操作を dendrogram に記録

9: return dendrogram

10: function OrderingGeneration(dendrogram)11: new_id ← 012: V を dendrogram における DFS訪問順にソート13: for each v ∈ V do14: π[v]← new_id; new_id ← new_id + 1

15: return π

現代の CPU において一般的な階層的キャッシュの効果的な利用も期待できる.

即ち,小さく密な内部コミュニティのデータを L1キャッシュに,その外側のコ

ミュニティのデータを L2, L3キャッシュに,というような配置を自然に得るこ

とができる.このように,階層コミュニティオーダリングは高い局所性によりグ

ラフ処理の性能を向上させる.

アルゴリズム 2に Rabbit Orderの概要を示す.階層コミュニティオーダリン

グはコミュニティ検出とそれに基づく頂点順序の生成という 2 つのステップか

ら成る.まず CommunityDetection 関数によりコミュニティの階層を抽出

するとともに,それを表現したデンドログラム (樹形図) を得る (1 行目).次に

OrderingGeneration関数によりデンドログラムから新しい頂点順序を得る

(2 行目).Rabbit Order はどちらのステップにおいても並列処理を行い,短時

Page 36: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

24 第 2章 実行時リオーダリング

(i) (ii) (iii)

5

2

07

4

13

62’

7’

43’

6 2

2

2

2

2

2

144’’

6’2

6

コミュニティ 2コミュニティ 1

(a) 逐次集約の進行

1 3 6

6’

3’

5 7 0 2 4

2’7’

4’

4’’

5 6 7

0 1 2 3

4

1 3

3’

5 7 0 2

2’7’

64

(i) (ii) (iii)

(b) デンドログラムの構築

図 2.3: コミュニティ検出およびそれと同時に行われるデンドログラム構築の例.

間でリオーダリングを完了する.なお入力された Gが対称な有向グラフでない

場合,アルゴリズムの開始前に各エッジについて反対方向のエッジを追加するこ

とで対称な有向グラフに変換する.これはエッジの向きを無視することでコミュ

ニティ検出の品質が向上するためである [73].次節以降ではコミュニティ検出と

頂点順序生成の詳細について説明する.

2.4.2 高速なコミュニティ検出

本節では逐次処理によるコミュニティ検出アルゴリズムを説明したのち,その

並列版,即ち並列逐次集約について述べる.

逐次処理アルゴリズム

階層コミュニティオーダリングに基づくリオーダリングを短時間で行うため

には,効率的に階層的コミュニティ構造を検出する必要がある.そこで Rabbit

Orderは modularity [73]に基づく逐次集約法 [85]と呼ばれるテクニックを採用

Page 37: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

2.4 提案手法 25

している.Modularityはコミュニティ検出の品質を表す指標として最も有名な

ものの一つである.逐次集約法は頂点のペアが同じコミュニティに分類されるか

どうかを modularityの上昇量に基づき判定する.同じコミュニティに分類され

る場合,2つの頂点を直ちに 1つの頂点へと集約する.このように集約を繰り返

すことでグラフの規模が縮小されていくため,小さい計算コストでコミュニティ

を検出することができる.Rabbit Orderは集約の過程をコミュニティの階層構

造の検出とみなし,その構造をデンドログラムとして記録する.

逐次集約の具体的な手続きをアルゴリズム 2 の CommunityDetection 関

数に示す.処理は 3 ステップから成る:(i) 集約元頂点の選択 (4, 5 行目),(ii)

集約先頂点の決定 (6行目),(iii) modularityが上昇するならば集約 (7, 8行目).

ステップ (i)では頂点次数が小さい順に頂点 uを選択する.次数順の選択は逐次

集約の計算コストを削減するためのヒューリスティクスである [85].ステップ

(ii)では頂点を集約した際に得られる modularity上昇量 ∆Q (式 2.1)を最大化

する uの隣接頂点 v を集約先頂点として選択する.

∆Q(u, v) = 2{

wuv

2m− d(u)d(v)

(2m)2

}. (2.1)

ただしmは初期状態のグラフにおけるエッジの数,wuv は頂点 uと vの間のエッ

ジの重み,d(·) は頂点の重み付き次数 (接続されたエッジの重みの和) である.

初期状態においてエッジの重みは全て 1であるものとする.もし ∆Q(u, v) > 0

ならば,ステップ (iii)において uと vを集約する.集約後の頂点 v′ は uと v両

方の重みを足したエッジを持つ.なおエッジ (u, v)と (v, u)は区別されるため,

v′ には重み wuv + wvu のループエッジが追加される.一方 modularity が上昇

しない場合,uをそのままグラフに残す.このようにグラフに残った頂点を本章

ではトップレベル頂点と呼ぶ.トップレベル頂点はデンドログラムにおいて根と

なる.図 2.3に逐次集約による階層的コミュニティ検出の例を示す.低次数頂点

から頂点の集約を繰り返すことによりグラフを縮約すると同時にデンドログラム

を構成する.最終的にトップレベル頂点 4と 6をそれぞれの代表点とするコミュ

ニティ 1と 2を得る.Rabbit Orderはこのように逐次集約によって頂点数を減

少させることで高速にコミュニティを検出する.

Page 38: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

26 第 2章 実行時リオーダリング

並列逐次集約

CommunityDetection関数は一見すると 5行目の for文において各頂点の

処理を複数のスレッドで行うことにより容易に並列化可能であるように見える.

しかしながら,このナイーブな並列化は頂点の集約 (8行目)における集約先頂点

のエッジの編集および集約元頂点の削除で競合状態を生じる.同様に競合状態は

デンドログラムの更新においても発生する.小さいオーバーヘッドでこのような

問題を解決するための手段として多くの CPUは compare-and-swap (CAS) な

どのアトミック命令を提供しているが,CASがアトミックに変更可能なデータ

サイズは限られる.

そこで軽量なアトミック命令を活用するため,Rabbit Orderでは遅延集約に

よって操作するデータサイズを削減する.uを v へ集約することが決定されたと

き,遅延集約では v を代表点とするコミュニティに uを登録する操作のみ行う.

uと vの実際の集約は vが集約元頂点として別の頂点へ集約されるときまで遅延

される.コミュニティへの登録に必要なデータの変更を最小限にすることでアト

ミック命令による実装が可能となる.また,デンドログラムはこの登録操作の結

果構成されるデータ構造から復元する.

並列コミュニティ検出アルゴリズムをアルゴリズム 3 に示す.最初に変数を

初期化する (1–6行目).配列 atom と sibling はアトミック命令を利用しつつデ

ンドログラムを表現するために用いる.まず atom は遅延集約のためアトミック

に操作される構造体の配列である.任意の頂点 uについて atom[u]は次の 2つ

の変数から成る.(i) degree: uを代表点とするコミュニティに含まれる頂点の次

数の和.∆Q の計算において d(u) の値として用いる.(ii) child: u へ最後に集

約された頂点の ID*1.頂点数が 232 − 1,エッジ数が 264 − 1に達する大規模グ

ラフを想定したとしても,atom の各要素のサイズは 64ビット整数型の degree

と 32ビット整数型の child を合わせて 12バイトに留まる.従って x86-64プロ

セッサなどにおいて CAS 命令によって操作可能である.配列 sibling は同じコ

*1 それぞれ無効な頂点 IDと次数を表す定数 INVALID_IDおよび INVALID_DEGREEとしては有効には存在し得ない値を実装都合で定める.

Page 39: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

2.4 提案手法 27

1 3 6

6’

3’

5 7 0 2 4

2’7’

4’

4’’

0 1 2 3 4 5 6 7

古いオーダリング

新しいオーダリング

コミュニティ 2

コミュニティ 1

child

child

child child child

sibling

図 2.4: 図 2.3(b)のデンドログラム (iii)を表現するデータ構造,およびそこから導出される新しい頂点順序.

ミュニティに属する頂点の IDを記録し,単方向リスト構造を成す.これら 2つ

の変数を用いると,atom[u].child に記録された頂点から始まる sibling のリスト

とリストに含まれる頂点の child を再帰的に辿ることで頂点 uのコミュニティの

メンバを収集できる.例として図 2.3(b) のデンドログラム (iii) の構造を図 2.4

に示す.頂点 4のコミュニティのメンバは,atom[4].child (= 7), atom[7].child

(= 5), sibling[7] (= 2), atom[2].child (= 0)の 5頂点である.逆に各頂点から

その頂点が所属するコミュニティを取得するためには変数 dest を用いる.dest

は Union-find木構造によって各頂点が所属するコミュニティを表現する.初期

状態において各頂点は自身のみが所属するコミュニティに属する.

初期化の後,アルゴリズムは逐次集約を開始する.まず各スレッドは次数の小

さいものから順に集約元頂点 uを選択する (8行目)*2.次に他のスレッドが uを

集約先頂点として選択することがないよう,degreeに無効値を代入する (9, 10行

*2 逐次集約法において次数昇順での選択はあくまでヒューリスティクスであるため,ロックなどを用いて厳密に次数順に選択することよりも処理効率を優先してよい.そこで実装上は頂点を次数昇順にソートした配列を作り,1番目の頂点をスレッド 1へ,2番目の頂点をスレッド 2へ,3 番目の頂点をスレッド 3 へ,. . . というように次数順にラウンドロビンで割り当てることによって低次数頂点から優先的に処理している.配列に対する各スレッドのメモリアクセスは局所性が低いが,読み込みのみであるため影響は小さい.

Page 40: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

28 第 2章 実行時リオーダリング

目).なお AtomicSwap(x, y) はアトミックに変数 x と y の値を入れ替える操

作を表す.集約先頂点 v は FindBestDestination関数によって発見する (11

行目).得られた vに対して集約によるmodularityの上昇がない場合,uはトッ

プレベル頂点である.集約先頂点として選択され得るよう degree の値を復元す

るとともに,トップレベル頂点の集合 Toplevel へ u を追加する (12–15 行目).

一方 modularityが上昇し,かつ v が集約可能な状態である場合,v のコミュニ

ティのメンバとして uを追加する (16–24行目).具体的には,atom[v].child か

ら始まる sibling 上のリスト構造の先頭に uを挿入し,v の頂点次数に uの次数

を追加するという処理を CAS により行う.CAS が成功した場合,u と v のコ

ミュニティを合併する.コミュニティは dest を用いた Union-find木で保持して

いるため,dest[u]に v を設定することで合併を表現する.並列処理の影響で集

約に失敗した場合,変更された変数の値を復元し,uをリトライ待ちとして保存

する (25–27行目).集約のリトライは他の頂点の集約が一通り完了した後に行う

(28行目).

FindBestDestination 関数は引数 u のコミュニティおよび隣接コミュニ

ティの間のエッジの重みを計算し,その値に基づき ∆Q を求める.詳細をアル

ゴリズム 4に示す.関数は 4つのステップから成る.ステップ 1 (2行目)では u

のコミュニティに属する頂点を,図 2.4 に示すように child と sibling を辿るこ

とで収集する.ステップ 2 (3–5 行目) ではコミュニティに隣接する頂点 v につ

いて dest[v]が vの属するコミュニティの IDとなるよう更新する.ただしN(v)

を頂点 v の隣接頂点集合とするとき N(C) =∪

v∈C N(v) である.ステップ 3

(6–9行目)では遅延集約における実際の集約処理を行う.つまり C に含まれる

頂点と,隣接するコミュニティに属する頂点の間のエッジの重みを算出し,頂点

u へ付け替える.ステップ 4 (10 行目) では最も大きな modularity 上昇量をも

たらす隣接頂点を探し出し返却する.

Page 41: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

2.4 提案手法 29

2.4.3 頂点順序生成

階層的コミュニティが検出された後,Rabbit Orderはその結果を用いて頂点

順序を生成する.まず逐次処理版のアルゴリズムをOrderingGeneration関

数 (アルゴリズム 2) として示す.各階層のコミュニティに含まれる頂点を再帰

的に近傍に配置するため,アルゴリズムはトップレベル頂点からの深さ優先探索

(DFS)を行い,その訪問順を置換 πとして出力する.例えば図 2.4におけるトッ

プレベル頂点 4からの DFSは 5, 7, 0, 2, 4という訪問順になる.このとき生成

される π は π[5] = 0, π[7] = 1, π[0] = 2, π[2] = 3, π[4] = 4である.トップレベ

ル頂点 6からの置換の生成も同様である.なお接続が疎であるためコミュニティ

間の順序は定義しない.トップレベル頂点が複数ある場合は任意の順序で選択

しそれぞれの木において DFS を行う.このようにして得られる置換が Rabbit

Orderの最終的な出力となる.

上記の頂点順序生成アルゴリズムは 2つのステップで容易に並列化することが

できる.まず各トップレベル頂点から並列に DFSを開始し,そのコミュニティ

内部でのローカルな頂点順序を決定する.次に各トップレベル頂点から得られ

たローカルな頂点順序を逐次処理にて結合しグラフ全体の頂点順序を得る.こ

のように Rabbit Orderはコミュニティ検出と頂点順序生成の両方を並列化して

いる.

2.4.4 定性的議論

Rabbit Orderの性質を理解するため,以下で定性的な議論を行う.

時間計算量

アルゴリズム 2に表現されているように,Rabbit Orderはコミュニティ検出

(1行目)と頂点順序生成 (2行目)の 2ステップに分けられる.従って,Rabbit

Orderはこれらのステップの計算量を合計した計算量を持つ.ステップ 1では逐

次集約によるコミュニティ検出を行う.その計算量は O(m + α(1−c)α−1 n)であるこ

Page 42: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

30 第 2章 実行時リオーダリング

とが文献 [84]において示されている.ここで mはグラフのエッジ数,cはクラ

スタ係数,αは冪乗則に基づく次数分布の偏り (skewness),nは頂点数である.

ステップ 2の頂点順序生成では,頂点をデンドログラム上の DFS訪問順にソー

トし (12行目),その順番に IDが振られるように置換を生成する (13, 14行目).

デンドログラムでは n個全ての頂点がツリー状に結合しているため,エッジの本

数は O(n)である.従って DFSの計算量は O(n)である.さらに置換の生成で

は n 個それぞれの頂点に連続した ID を生成するため,計算量は O(n) である.

以上より頂点順序生成の計算量は O(n + n) = O(n) となる.Rabbit Order の

計算量はコミュニティ検出と頂点順序生成の計算量の和であるから,

O

((m + α(1− c)

α− 1n

)+ n

)= O

(m +

(1 + 1− c

1− 1/α

)n

)(2.2)

である.

式 2.2 に示されているようにクラスタ係数 c と次数分布の偏り α が大きいほ

ど計算量は小さくなる.クラスタ係数が大きいということは多くの頂点が互いに

密に接続されているということである.また次数分布の偏りが大きいということ

は,多くの頂点が小さい次数を持ちごく一部の頂点が極端に大きい次数を持つと

いうことである.これらの特徴は実世界のグラフにおいて一般的であることが知

られている [30,91].従って,Rabbit Orderは実世界のグラフに対して効率的に

動作することが分かる.なお c と α に対する計算量の依存は逐次集約法に由来

しており,これらのパラメータに対する逐次集約法の性能変化は文献 [84] にお

いて実験的にも確認されている.

並列処理による非決定性

並列逐次集約は並行性制御のコストを抑えることで効率的にコミュニティ検出

を行うことができるように設計されている.しかし一方で並列動作時の処理結果

は非決定的である.具体的には,アルゴリズム 3の whileループ (8–27行目)は

各スレッドが独立に処理するため,頂点が集約される順序は各スレッドの処理の

進行状況に依存する.集約の順序が入れ替わると最適な集約先頂点の選択 (11行

目)を行う際にスレッドから見えるグラフ構造に差異が生じ,逐次実行時とは異

Page 43: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

2.5 評価 31

表 2.1: 実験で使用するグラフ

名前 頂点数 エッジ数 出典

berkstan 0.7M 7.6M SNAP*3のweb-BerkStanenwiki 4.2M 101.4M LAW*4の enwiki-2013

ljournal 4.8M 69.0M SNAPの soc-LiveJournal1uk-2002 18.5M 298.1M LAWの uk-2002road-usa 23.9M 57.7M DIMACS [5]の road_usauk-2005 39.5M 936.4M LAWの uk-2005it-2004 41.3M 1150.7M LAWの it-2004twitter 41.7M 1468.4M LAWの twitter-2010sk-2005 50.6M 1949.4M LAWの sk-2005webbase 118.1M 1019.9M LAWのwebbase-2001

なる頂点へ集約される場合がある.従って Rabbit Orderを複数スレッドで実行

した場合,同一のグラフを与えても実行毎に異なるデンドログラムが生成される

可能性がある.ただし逐次集約法は元々 modularityを最大化する厳密解法では

ないため,必ずしも逐次実行時の結果が最善とは限らない.またコミュニティ抽

出結果の差異がリオーダリング結果の局所性に及ぼす影響は自明でない.そのた

め並列処理時の非決定性が局所性に影響するかどうかは 2.5.3節において実験的

に確認する.

2.5 評価

本節では全体処理時間に関する Rabbit Orderの性能を評価する*5.全ての実

験は Intel Xeon E5-2697v2 を 2 ソケット搭載し,256GB のメモリを搭載する

計算機で行った.Hyper-Threadingを有効にすることで計算機としては最大 48

スレッドを実行可能である.特に言及がない限り実験は 48スレッド実行で行う.

*3 http://snap.stanford.edu/data/index.html*4 http://law.di.unimi.it/*5 実験に用いた Rabbit Orderの実装は https://git.io/rabbitにて公開されている.

Page 44: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

32 第 2章 実行時リオーダリング

実験に用いたグラフを表 2.1に示す.また性能比較は次の 7つのリオーダリング

手法と行う (括弧内は実験結果での略記):SlashBurn (Slash) [66], Unordered

parallel BFS (BFS) [52], Unordered parallel RCM (RCM) [52], Multithreaded

Nested Dissection (ND) [57], Layered Label Propagation (LLP) [8], Shingle

ordering (Shingle) [17], 頂点次数の昇順 (Degree).SlashBurn については論

文中で示されている最善のパラメータを使用する (S-kH と k = 0.02n の

組み合わせ) [66].また SlashBurn 以外は全て並列アルゴリズムである.De-

gree と Shingle は本質的には単純なソートであるため,GCC 4.9.2 が提供す

る__gnu_parallel::sort関数によって並列化した.実験ではさらにベースラ

インとしてランダムな頂点順序 (Random) を用いる.これはデータセットの配

布者がデータ取得元から得られる自然な頂点順序 (Webクローラの訪問順,SNS

の会員 ID順など)に対して変更を加えている場合があるためである [8, 9].オー

ダリングをランダムとすることでデータ配布者が与えた影響を排除できる.

実験では主に PageRankを使用する.PageRankは SpMVに基づく最も有名

なアルゴリズムの一つである.具体的には k = 0, 1, 2, . . .について sが収束する

まで次の計算を繰り返す:

sk+1 = (1− c)Wsk + ce. (2.3)

ここで sk と sk+1 は各頂点の PageRankスコアを表すベクトル,cは 0 ≤ k ≤ 1

のパラメータ,eはいずれの要素の値も 1n の長さ nのベクトル,W = (wuv)は

エッジ (u, v)が存在するとき wuv = 1d(v),そうでなければ wuv = 0の行列であ

る.既存研究 [56]に従い,c = 0.15とし,収束の条件は |sk+1 − sk| < 10−10 を

使用する.標準的な方法として PageRank の並列化はアルゴリズム 1 の最も外

側の for文に対して行った.

2.5.1 全体処理時間と内訳

初めにリオーダリングと PageRank を合わせた全体処理時間の改善について

図 2.5 に示す.高速化率はランダム順序で得られた PageRank 処理時間を各リ

オーダリング手法で得られた全体処理時間で割ることによって求めた.Rabbit

Page 45: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

2.5 評価 33

berkstan enwiki ljournal uk-2002 road-usa uk-2005 it-2004 twitter sk-2005 webbase Average0.0

0.5

1.0

1.5

2.0

2.5

3.0

3.5

Spe

edup

RabbitSlashBFS

RCMNDLLP

ShingleDegree

図 2.5: 全体処理時間に関する性能向上率.

berkstan enwiki ljournal uk-2002 road-usa uk-2005 it-2004 twitter sk-2005 webbase10−1

100

101

102

103

104

Reo

rder

ing

time

[sec

]

RabbitSlashBFS

RCMNDLLP

ShingleDegree

図 2.6: リオーダリングに要した処理時間.

berkstan enwiki ljournal uk-2002 road-usa uk-2005 it-2004 twitter sk-2005 webbase10−1

100

101

102

103

Ana

lysi

stim

e[s

ec]

RabbitSlashBFS

RCMNDLLP

ShingleDegreeRandom

図 2.7: PageRankに要した処理時間.

Order は平均で 2.21 倍,最大では it-2004 において 3.48 倍の高速化率を示し,

他手法を大きく上回っている.なお NDは twitter, sk-2005, webbaseにおいて

メモリ不足のため動作しなかった.

性能向上の要因を分析するため,全体処理時間をリオーダリング処理時間と

PageRankによる分析時間に分解する.図 2.6はランダム順序のグラフにおける

各手法のリオーダリング時間を示したものである.ソートに基づく手法 (Degree,

Shingle)を除くと Rabbit Orderの処理時間は極めて短いことが分かる.例えば

10億以上のエッジを含む webbaseグラフを 13.8秒でリオーダリングすることが

できている.さらにそれぞれの頂点順序における PageRankの分析時間を図 2.7

に示す.Rabbit Orderはいずれの既存手法と比較しても同等またはそれ以上に

分析時間を短縮している.具体的にはランダム順序と比較し平均で 3.37倍,最

Page 46: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

34 第 2章 実行時リオーダリング

L1 L2 L3 TLB105

106

107

108

109

1010

Num

bero

fmis

ses

berkstan

RabbitSlash

BFSRCM

NDLLP

ShingleDegree

Random

L1 L2 L3 TLB108

109

1010

1011

1012 it-2004

図 2.8: キャッシュミスと TLBミスの数

大で it-2004 において 5.25 倍分析処理を高速化している.この結果は既存手法

の中で最も効果的であった LLP (平均 3.34倍,最大 5.08倍)よりも僅かに良い.

2.5.2 キャッシュミス回数

PageRank が高速化した理由を確認するため,各キャッシュレベルにおける

キャッシュミスの回数と translation look-aside buffer (TLB) ミスの回数を図

2.8に示す.実験では berkstanと it-2004を使用した.これらはそれぞれ 2.5.1

節の実験で全ての既存手法がリオーダリングできた最小および最大規模のグラフ

である.実験結果からは図 2.7 に示された PageRank 処理時間とキャッシュミ

ス回数が同じ傾向を示していることを確認できる.具体的には Rabbit Orderと

LLP はキャッシュミス回数が最も小さく,高速化率の低い BFS, Shingle, およ

び Degreeはミス回数の削減率が最も低い.また,berkstanよりも it-2004にお

いてキャッシュミス削減率が大きいことを読み取れる.これは berkstanが小規

模なグラフでありランダム順序でもキャッシュに乗りやすいためである.同様に

比較的小規模な enwikiと ljournalにおいてもリオーダリングによる高速化率は

全体的に低い (図 2.7)が,it-2004のような大規模なグラフではリオーダリング

の効果が顕著となる傾向にある.

以上の結果より,Degree, Shingleなど短時間でリオーダリング可能な手法は

Page 47: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

2.5 評価 35

キャッシュミスの削減率が低く,一方で LLPのようにキャッシュミス削減率が

高い手法は長いリオーダリング時間を要することを読み取れる.Rabbit Order

はこれら既存手法と異なり,短時間でのリオーダリングに加え既存手法と同等以

上のキャッシュミス削減率を両立している.

2.5.3 並列処理の影響

2.4.4 節で述べたように,Rabbit Order の並列逐次集約は非決定的に動作す

る.そのことがコミュニティ検出の品質とリオーダリング結果に及ぼす影響を

確認するため,逐次実行と 48スレッド実行での Rabbit Orderの出力を比較す

る.表 2.2にコミュニティ検出の結果得られた modularityと,リオーダリング

結果のグラフ上における PageRank の処理時間を示す.表中の「逐次」と「48

スレッド」は Rabbit Orderの実行に使用したスレッド数を意味する.他の実験

と同様,リオーダリング後の PageRankは常に 48スレッドで実行している点に

注意されたい.実験結果から分かるように,並列処理が示す差異は僅かである.

48 スレッド実行時に得られる modularity は逐次実行時と同等かそれ以上の値

を示している.同様に,48 スレッド実行で得た頂点順序は逐次実行時と同等の

PageRank 処理効率を保っている.以上の結果より,並列逐次集約は高速なリ

オーダリングと高い局所性を実現しており,非決定的であるものの実用上問題な

いことが分かる.

2.5.4 スケーラビリティ

並列処理の効率を評価するため,それぞれのリオーダリング手法を並列実行す

ることで得られる性能向上率を図 2.9に示す.なお高速化率は表 2.1の全グラフ

に対して適用した結果の平均である.SlashBurn は逐次処理手法であるため除

外している.12, 24, 48スレッド実行はそれぞれ,1ソケットの 12物理コア,2

ソケットに跨る 24 物理コア,および Hyper-Threading にて行っている.図に

示されているように,Rabbit Orderはリオーダリング手法の中で最も高い高速

化率を達成している.具体的には 48スレッド実行時に 17.4倍高速化している.

Page 48: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

36 第 2章 実行時リオーダリング

表 2.2: Rabbit Orderによって得られるmodularityと PageRank処理時間.括弧内は逐次実行に対する差異の割合.

グラフModularity PageRank処理時間 [秒]

逐次 48スレッド 逐次 48スレッドberkstan 0.930 0.934 0.214 0.218 (+2.0%)enwiki 0.597 0.602 3.454 3.529 (+2.2%)

ljournal 0.708 0.701 2.421 2.416 (-0.2%)uk-2002 0.985 0.982 6.415 6.520 (+1.6%)road-usa 0.997 0.998 2.901 2.914 (+0.5%)uk-2005 0.979 0.981 21.833 20.719 (-5.1%)it-2004 0.972 0.975 23.179 23.100 (-0.3%)twitter 0.360 0.391 90.235 87.709 (-2.8%)sk-2005 0.971 0.974 47.541 49.067 (+3.2%)webbase 0.978 0.979 27.474 28.128 (+2.4%)

Rabbit BFS RCM ND LLP Shingle Degree0.0

2.5

5.0

7.5

10.0

12.5

15.0

17.5

Avg

.sp

eed

up

vs.

1th

read

12 threads 24 threads 48 threads

図 2.9: 並列実行によって得られる性能向上率.

BFSと LLPも約 12倍高速化しているが,他の手法はスレッド数によりほぼ変

化していない.Rabbit Orderは逐次集約法が内包する高い並列性を軽量なアト

ミック命令によって引き出しているため,スレッド数に対し高いスケーラビリ

ティを示すことができている.

Page 49: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

2.6 結論 37

DFS BFS SCC Diameter k-core0.0

0.5

1.0

1.5

2.0

2.5

3.0

3.5

Avg

.sp

eedu

p

RabbitSlashBFS

RCMNDLLP

ShingleDegree

図 2.10: 全体処理時間に関する性能向上率.

2.5.5 様々な処理アルゴリズムに対する効果

ここまで SpMVに基づくグラフ分析アルゴリズムである PageRankを用いて

きたが,BFSのように一般的には SpMVを用いず実装されるアルゴリズムに対

してもリオーダリングは効果を示すことが知られている [32, 79].そこで BFS,

DFS,強連結成分分解 (SCC),グラフ直径 (Diameter),そして k-core分解の 5

つのアルゴリズムについても全体処理時間の計測を行った.結果を図 2.10に示

す.高速化率はランダム順序の場合を 1 とした相対的な処理時間を全グラフに

ついて平均した値を示している.いずれの処理アルゴリズムに対しても Rabbit

Order は最も高い高速化率を示している.全体として SCC, Diameter, k-core

の高速化率に比べ DFS と BFS の高速化率が低いのは,それらが軽量な処理で

あることに起因する.後続のグラフ処理に要する時間が短いほどリオーダリング

に要した時間の償却が難しいため,高速化率が小さくなる傾向になる.それにも

関わらず Rabbit Orderが全体処理時間を短縮できているのは高速なリオーダリ

ングと高い局所性を両立しているためである.

2.6 結論

本章ではグラフ処理実行時のリオーダリングに使用するためのアルゴリズムで

ある Rabbit Orderを提案した.Rabbit Orderは階層コミュニティオーダリン

Page 50: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

38 第 2章 実行時リオーダリング

グと並列逐次集約によってそれぞれ高い局所性と短時間でのリオーダリングを同

時に達成している.実験の結果,リオーダリングとグラフ処理を合わせた全体処

理時間の観点で Rabbit Orderは既存手法を大きく上回る性能を示すことが確認

された.

Rabbit Orderは本研究においてクラウド上に配備するクエリ処理エンジンの

メモリアクセス効率を改善する手法として位置付けられる.SpMV において見

られる隣接頂点情報へのメモリアクセスは,つながりに着目するグラフ処理にお

いて本質的なアクセスパターンである.2.5.5節で実際に示したように,Rabbit

Orderは SpMVに限らず様々なグラフ処理に効果があることを確認できた.さ

らにリオーダリングはグラフの頂点順序を入れ替えるのみであるため,高速化し

ようとしているグラフ処理の実装はほぼ変更する必要がない.サブグラフマッチ

ングとリオーダリングを組み合わせた評価は行っていないものの,以上の理由に

より組み合わせは容易であり,効果も他のグラフ処理と同様に発揮されることを

期待できる.

実験では総合的には Rabbit Orderの高い高速化率を確認することができた一

方で,2.5節で確認したように適用対象のグラフによって不均一な高速化率を示

すことも明らかになった.これは局所性向上率がグラフが内包するコミュニティ

構造に依存していることに由来すると考えられる.例えば図 2.7 に示されてい

るように,twitter グラフにおいて Rabbit Order を含むリオーダリング手法は

PageRankの処理時間をほぼ削減できていない.これは twitterグラフが持つ特

異な次数分布と複雑な構造に由来すると考えられる [55].しかしWei らの手法

は,リオーダリングに長い時間を要するものの,twitterグラフにおいて約 1.4倍

程度の性能向上を達成したことが報告されている [92].従ってリオーダリングに

よる性能向上の余地自体は存在することが分かる.このように効果がグラフの性

質に依存する点に Rabbit Orderの限界があるといえる.2.2節で紹介したよう

に,リオーダリング以外にも局所性を向上するためのアプローチは存在する.そ

のため,実行時リオーダリングの適用が適当なグラフの性質を定性的に評価しつ

つ,代替となる手法を検討することが今後の課題である.

Page 51: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

2.6 結論 39

アルゴリズム 3 並列逐次集約によるコミュニティ検出入力: グラフ G = (V, E)出力: トップレベル頂点の集合 Toplevel,および atom と sibling で表現されるデンドログラム.

1: for each u ∈ V do2: atom[u].degree ← d(u) ▷ 重み付き次数

3: atom[u].child ← INVALID_ID ▷ uにマージされた頂点

4: sibling[u]← INVALID_ID ▷ 同じコミュニティに属する頂点

5: dest[u]← u ▷ uが所属するコミュニティ

6: Toplevel ← ∅ ▷ トップレベル頂点の集合

7: while 集約元として未選択の頂点が存在する do in parallel8: u← 未選択の頂点のうち次数が最小のもの9: degreeu ← INVALID_DEGREE ▷ 集約不能を表す無効値を代入

10: AtomicSwap(degreeu, atom[u].degree) ▷ uを集約不能に設定

11: v ← FindBestDestination(u)12: if ∆Q(u, v) ≤ 0 then ▷ modularityが向上しない場合13: atom[u].degree ← degreeu ▷ 値の復元

14: Toplevel ← Toplevel ∪ {u} ▷ uはトップレベル頂点

15: continue ▷ 次の頂点へ

16: atomv ← atom[v]17: if atomv.degree ̸= INVALID_DEGREE then ▷ v は集約可能か

18: sibling[u]← atomv.child ▷ child の上書き前に値を移動19: atom′

v.degree ← atomv.degree + degreeu ▷ 次数更新

20: atom′v.child ← u ▷ 最後に集約された頂点として記録

21: CAS: atom[v] = atomv なら atom[v]と atom′v を入れ替え

22: if CASで値の入れ替えが実行された then23: dest[u]← v ▷ uは v へ集約された

24: continue ▷ 次の頂点へ

25: sibling[u]← INVALID_ID ▷ リトライのため元の値を復元

26: atom[u].degree ← degreeu ▷ リトライのため元の値を復元

27: uを後でリトライする頂点として保存

28: リトライのため 27行目で保存された頂点をそれぞれ集約

Page 52: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

40 第 2章 実行時リオーダリング

アルゴリズム 4 FindBestDestination関数1: function FindBestDestination(u)2: デンドログラムを辿り uのコミュニティメンバを集合 C に収集

3: for each v ∈ N(C) do4: while dest[dest[v]] ̸= dest[v] do5: dest[v]← dest[dest[v]]

6: N ′ ← { dest[t] | t ∈ N(C) }7: for each v ∈ N ′ do8: wuv ←

∑{(s,t)∈E | s∈C,dest[t]=v} wst

9: E ← (E \ {(s, t) | s ∈ C, t ∈ N(s)}) ∪ {(u, v) | v ∈ N ′}10: return argmaxv∈N ′∆Q(u, v)

Page 53: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

41

第 3章

高速サブグラフマッチング

3.1 序論

計算に要する時間は CPUの命令処理効率と発行命令数によって決まる.第 2

章ではグラフ処理のメモリアクセスを効率化するリオーダリング手法を提案し

た.リオーダリングによって CPUのストールが減少し,命令処理効率を高める

ことができる.本章ではさらにグラフクエリ処理に焦点を絞り,発行命令数の削

減による高速化を目指す.

本研究においてグラフクエリとは,具体的にはサブグラフマッチングクエリを

意味する.サブグラフマッチングとは大きいグラフ (データグラフ) 中に存在す

るクエリグラフと同型なサブグラフへの埋め込みを列挙する問題である.サブ

グラフマッチングはグラフ用データベースにおいて代表的なクエリ言語である

SPARQL, Cypher, Gremlin などによって基本的なクエリとしてサポートされ

ている [90].さらにデータ分析の分野においても,人間関係の分析 [31],営業活

動の支援 [45],マルウェアの検出 [76] など様々なアプリケーションにサブグラ

フマッチングは利用されている.特に頂点が表現する事物の種類 (人物,企業,

商品など)を頂点ラベルとして持つようなラベル付きグラフに対する適用が盛ん

である [31,45,76].しかしながらサブグラフマッチングは NP困難問題であるた

め,計算に長い時間を要することが課題となっている [42].

このような背景からサブグラフマッチングの高速化を目指して多くの研究が行

Page 54: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

42 第 3章 高速サブグラフマッチング

a

b

c

a

𝑢1

𝑢2

𝑢3

𝑢4

(a) クエリグラフ Q

a

b b b

c c c

𝑣1

𝑣4

𝑣5 𝑣6 𝑣7

𝑣2

𝑣3

a 𝑣8

(b) データグラフ G

図 3.1: クエリグラフとデータグラフの例.ui, vi は頂点の識別子を,頂点内のア

ルファベットは頂点ラベルを表す.

𝑢4

𝑢1

𝑢2

𝑢3

𝑣8

𝑣1

𝑣2

𝑣5

𝑣1

𝑣6

𝑣1

𝑣7

𝑣8

𝑣5

𝑣1

𝑣3

𝑣6

𝑣1

𝑣7

𝑣8

𝑣5

𝑣1

𝑣4

𝑣6

𝑣1

𝑣7

(a) 既存手法 (CFL-Match [7]など)

𝑢4

𝑢1

𝑢2

𝑢3

𝑣8

𝑣1

𝑣2

𝑣5

𝑣1

𝑣6

𝑣1

𝑣7

𝑣8

𝑣5

𝑣8

𝑣3

𝑣5

𝑣4

(b) 提案手法

図 3.2: 図 3.1 の Q と G に対して行われるバックトラッキングの過程を示すツ

リー.バツ印は探索失敗を表す.

われてきた [7, 20, 42, 43, 81, 83, 97].これらの手法はいずれもバックトラッキン

グによる探索 [89] を行う.バックトラッキングは既に得られている部分的な解

から新しい解を生成することで探索を行う再帰的な手法である.サブグラフマッ

チングの場合,クエリグラフの頂点 (クエリ頂点) の一部のみがデータグラフの

頂点 (データ頂点) へ割り当てられた部分埋め込みが部分的な解に相当する.未

割り当てのクエリ頂点からデータ頂点への割り当てを部分埋め込みに追加するこ

とで新しい埋め込みが生成される.新しい埋め込みが全てのクエリ頂点の割り当

てを含む完全な埋め込みならば解として報告する.一方で新しい埋め込みから完

Page 55: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

3.1 序論 43

全な埋め込みを得られないことが判明した場合は探索失敗となる.失敗した埋め

込みを破棄し,前のステップへ戻り別の部分埋め込みについて探索を再開する.

バックトラッキングによる探索の過程はツリーとして表現することができる.例

えば図 3.1 のクエリグラフ Q とデータグラフ G のサブグラフマッチングでは,

図 3.2(a) のような探索過程が得られる.最も左側の過程 v1-v2-v5-v8 は,u1 か

ら u4 を順にそれぞれのデータ頂点へ割り当てる探索を表す.ここでは完全な埋

め込みを得られる.次に u3 の割り当てまで戻り,割り当て先を v6 へ変更する.

v6 の隣接頂点である v1 は u1 の割り当て先として使用済みであるため,探索失

敗となる.そこで u3 の割り当て先を再度変更し,以降も同様に探索を行う.サ

ブグラフマッチングはこのような再帰的な手続きによって行われる.

バックトラッキングにおいて解に至らない部分埋め込みに対する処理は無駄に

なるため,サブグラフマッチングの性能を向上させるためには探索失敗の削減が

必要である.そこで既存手法はバックトラッキングの前処理としてクエリグラフ

とデータグラフの構造を分析することで探索空間を狭めている.例えば頂点の次

数や隣接頂点のラベルなど局所的な情報を比較することで,クエリ頂点 ui の割

り当て先となり得るデータ頂点を候補頂点集合 C[ui]として事前に抽出する手法

は一般的に用いられている [7,42,43,97].より多くの探索失敗を削減できるよう

前処理を改良することでサブグラフマッチングは高速化されてきた.

しかしながら,前処理を用いてもバックトラッキング時の探索失敗は発生す

る.前処理はバックトラッキングに追加されるオーバーヘッドとなるため複雑な

処理を用いることが難しく,探索空間の削減範囲が限られる.例えば既存手法の

前処理では,実際にはクエリ頂点 ui の割り当て先となることができないデータ

頂点が偽陽性として候補頂点集合 C[ui]に含まれてしまう場合がある.ナイーブ

にはサブグラフマッチングの探索空間は各クエリ頂点 u1, u2, . . . , un に対する候

補頂点の組み合わせ C[u1] × C[u2] × . . . × C[un]である.そのため組み合わせ

爆発により僅かな偽陽性でも性能に大きく影響する.実際,図 3.1の Qと Gに

おいて,既存手法 [7, 42, 43, 97] は頂点ラベル以外の条件により候補頂点を絞り

込むことができない.そのため図 3.2(a) と同様の探索失敗が発生する.この探

索では v1 の重複使用による探索失敗を u2 と u3 の割り当て先を変更しながら繰

Page 56: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

44 第 3章 高速サブグラフマッチング

返し発生させている.既存手法ではこのように無駄な探索が発生してしまう.

以上のような問題点を踏まえ,本章では前処理ではなくバックトラッキングの

効率化に着目した新しいサブグラフマッチングアルゴリズムを提案する.提案手

法の中心的なアイデアは「失敗から学ぶ」ことによる枝刈りである.具体的に

は,提案手法は探索失敗となった部分埋め込みから失敗の原因となる頂点の割り

当てを抽出し,失敗パターンとして記録する.そして後続のバックトラッキング

において処理中の部分埋め込みが既出の失敗パターンと符合したとき,その探索

を打ち切る.提案手法の動作を図 3.1 の Q と G を例にとって示す.図 3.2(b)

は提案手法による探索の過程を表すツリーである.まずクエリ頂点をそれぞれ

v1, v2, v6, v1 へ割り当てた場合,前述の通り v1 の重複使用により探索失敗とな

る.ここで v6 に隣接するラベル aの頂点は v1 のみであるから,(u1, v1)という

割り当てと同時に (u3, v6)という割り当てを行った時点で探索失敗となることは

確定している.そこで提案手法は {(u1, v1), (u3, v6)}を失敗パターンとして記録

する.同様に u3 を v7 へ割り当てた場合も探索失敗となるため,失敗パターン

{(u1, v1), (u3, v7)} を記録する.次にバックトラッキングにより u2 の割り当て

先が v3 へ変更される.ここで u3 を v6 または v7 に割り当てた部分埋め込みは

記録された失敗パターンに符合するため,探索が枝刈りされる.これにより探索

失敗が減少する.u2 を v4 へ割り当てた場合も同様である.既存手法が候補頂点

の全組み合わせを生成する (図 3.2(a))のに対し,提案手法は探索失敗を繰り返

さないため高速である.

提案手法の特長は次の 3つにまとめられる:

1. ロバスト: 既存手法がクエリグラフとデータグラフの構造を分析するこ

とで探索失敗を予防するのに対し,提案手法はバックトラッキング中の情

報を利用して高速化する.そのため,図 3.1のように既存手法が機能しな

いグラフにおいても探索失敗を削減することができる.つまり,処理効率

が与えられたグラフに左右されにくいという意味でロバスト性が高い.

2. スケーラブル: クエリグラフとデータグラフが大規模であるほど埋め込

みの組み合わせ数は増加するため,処理時間の増大が急激である.提案手

Page 57: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

3.2 関連研究 45

法はロバスト性が高いことから,グラフの規模に対して時間計算量的にス

ケーラブルである.

3. 厳密: 提案手法は無駄な探索のみを枝刈りすることが証明されている.

つまり全ての埋め込みを列挙する厳密手法である.

実験の結果,提案手法は既存手法と比べ最大 4桁以上高速であることが確認さ

れた.既存手法では処理に 1日以上を要するクエリセットに対しても提案手法は

高速に応答可能であるため,これまで事実上不可能だったクエリにも対応するこ

とができる.

本章の構成は次の通りである.第 3.2節で関連研究を紹介し,本研究の前提知

識を第 3.3節で説明する.第 3.4節で手法の詳細を述べ,第 3.5節で実験結果を

示す.最後に第 3.6節で結論を述べる.

3.2 関連研究

サブグラフマッチングの研究はいずれもサブグラフ同型問題を扱うが,その問

題設定は大きく 2つに分類される.

1つ目は単一の大きなデータグラフからクエリグラフと同型なサブグラフを列

挙する問題である.本章ではこちらの問題設定を扱う.この分野ではバックト

ラッキングに基づく古典的なアルゴリズムである Ullmann [89]がよく知られて

いる.Ullmann 以降,さらに高速化するために候補頂点枝刈りとマッチング順

序最適化という 2つのテクニックを中心に多くの研究がなされてきた.1つ目の

候補頂点枝刈りとは,クエリ頂点 ui の候補頂点集合 C[ui]に含まれるデータ頂

点を削減するためのフィルタリング手法である.Ullmann [89] では頂点のラベ

ルと次数に基づくフィルタを行う.GraphQL [43] と SPath [97] はさらにクエ

リグラフとデータグラフの局所的な隣接関係を用いた軽量なマッチングをフィ

ルタに用いる.2つ目のテクニックであるマッチング順序最適化とは,バックト

ラッキングにおいて部分埋め込みへクエリ頂点を追加していく順番を変更する

ことで高速化する手法である.バックトラッキングでは前のステップで生成さ

れた部分埋め込みから新しい部分埋め込みを生成するため,部分埋め込みの生

Page 58: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

46 第 3章 高速サブグラフマッチング

成数が少ないクエリ頂点から順に割り当て先を決定することで探索空間を狭め

られる.VF2 [20]は割り当て済みクエリ頂点が常に 1つの連結成分になるよう

にマッチング順序を最適化し,QuickSI [83] はさらにデータグラフにおけるラ

ベルの出現頻度を元に希少度の高い頂点とエッジから順に割り当てを行う.近

年は候補頂点枝刈りとマッチング順序最適化を同時に行う手法も提案されてい

る.TurboISO [42]と CFL-Match [7]はクエリグラフの全域木に基づく近似的

なマッチングにより候補頂点を枝刈りし,さらに候補頂点の接続関係を踏まえク

エリグラフ中の推定埋め込み数が少ない部分から割り当てを行う.以上の既存手

法はいずれもバックトラッキングの探索空間を縮小するためにその前処理を工夫

している.これに対し,提案手法はバックトラッキングの最中に枝刈りを行うこ

とにより,前処理が十分に機能しないようなクエリグラフとデータグラフの組み

合わせにおいても処理を高速化することができる.また既存手法と提案手法はほ

ぼ直交しており,両者を組み合わせて使用することも可能である.

2 つ目の問題設定は多数の (大抵は小規模な) データグラフに対する,クエリ

グラフと同型なサブグラフを含むかどうかの判定,あるいは同型なサブグラフの

列挙である.この問題設定においては,まずデータグラフのインデックス構造を

用いて確実にクエリグラフを含まないデータグラフを除外し (filter),次に残っ

たデータグラフがクエリグラフを含むことを確認する (verify) という 2 段階の

処理が一般的である.インデックスの情報としてはデータグラフに含まれるパ

ス [10,38]や頻出サブグラフ [16]の利用が提案されている.この問題設定におい

ても verify処理に提案手法を用いて高速化することが可能である.

3.3 事前準備

本節では本章で扱う問題,および以降の説明で用いる表記法を定義する.

3.3.1 問題定義

本章では頂点がラベルを持つ無向グラフ G = (VG, EG, Σ, ℓ)を扱う.VG は頂

点の集合,EG ⊆ VG × VG はエッジの集合,Σはラベルの集合,ℓは頂点とラベ

Page 59: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

3.3 事前準備 47

ルを対応づける関数である.G を特にデータグラフと呼ぶ.同様にクエリグラ

フQ = (VQ, EQ, Σ, ℓ)を考える.クエリグラフの頂点は u1, u2, . . . , un というよ

うに番号付けされているものとする.

定義 1 (サブグラフ同型). 次の 3つの制約*1を満たす埋め込みM : VQ → VG を

定義できるとき,Qは Gに対してサブグラフ同型であるという:

(1) ラベル制約: ∀ui ∈ VQ, ℓ(ui) = ℓ(M [ui])

(2) エッジ制約: ∀(ui, u′i) ∈ EQ, (M [ui], M [u′

i]) ∈ EG

(3) 単射制約: ∀ui, u′i ∈ VQ, ui ̸= u′

i ⇒M [ui] ̸= M [u′i]

定義 2 (サブグラフマッチング). クエリグラフ Qとデータグラフ Gが与えられ

たとき,Gに含まれる Qのサブグラフ同型な埋め込みを全て列挙する問題をサ

ブグラフマッチングと呼ぶ.

本章はサブグラフマッチングを高速に解く手法を与える.ただし実際には組み

合わせ爆発によって膨大な数の埋め込みが生じる場合があるため,その全てを列

挙することは現実的でない.そこで一定数,例えば 1,000個の埋め込みを列挙し

た時点でクエリ処理を打ち切ることが一般的である [7, 42,59].

3.3.2 諸定義

本章で使用する主なシンボルを表 3.1に示す.さらにいくつかの定義を行う.

定義 3 (埋め込みの表現). データグラフ Gに含まれるクエリグラフ Qの埋め込

みM : VQ → VG を,クエリ頂点 ui とデータ頂点 v のペアの集合で表す.ui の

割り当て先が v である (つまり v = M [ui])とき (ui, v) ∈M である.

定義 4 (埋め込みの定義域と値域). 埋め込みM の定義域と値域をそれぞれ次の

ように書く: dom(M) = { ui | (ui, v) ∈M }, ran(M) = { v | (ui, v) ∈M }.

例えば図 3.1 の Q と G において,M = {(u1, v1), (u2, v2), (u3, v5), (u4, v8)}

*1 それぞれの制約の名前は以降の説明のために本研究で便宜上与えたものであり,一般的ではない.

Page 60: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

48 第 3章 高速サブグラフマッチング

表 3.1: 本章で用いる主なシンボル

シンボル 定義

Q, G クエリグラフ, データグラフVQ, VG クエリグラフとデータグラフの頂点集合

EQ, EG クエリグラフとデータグラフのエッジ集合

ui, v クエリ頂点 (ui ∈ VQ) とデータ頂点 (v ∈ VG)C[ui] ui の候補頂点集合

M, M̂ 完全な埋め込みと部分埋め込み

D, Γ Dead-endパターンと dead-endマスクN(·) 頂点の隣接頂点集合

ℓ(·) 頂点のラベル

dom(·), ran(·) 埋め込みの定義域と値域Dead(·) 述語: 埋め込みは dead-endパターンであるか?

は埋め込みである.また dom(M) = {u1, u2, u3, u4}, ran(M) = {v1, v2, v5, v8}

である.

定義 5 (完全な埋め込み). 埋め込みM について,dom(M) = VQ であるときに

限り,M を完全な埋め込みと呼ぶ.

なお埋め込みが完全な埋め込みでない (かもしれない) ことを強調する文脈に

おいては,埋め込みを M̂ と表記し,M̂ を部分埋め込みと呼ぶ.完全な埋め込み

も部分埋め込みの一種として扱うことに注意されたい.

3.3.3 バックトラッキングによるサブグラフマッチング

サブグラフマッチング手法は近年提案されたものも含めバックトラッキング

による探索 [59, 89] を行うものが主流である.ナイーブなバックトラッキング

によるサブグラフマッチングアルゴリズムをアルゴリズム 5 に示す.再帰関数

Search は部分埋め込み M̂ と候補頂点集合 C を受け取る.C の抽出方法とし

ては,最も単純には次のように ui とラベルが一致するデータ頂点を候補頂点と

Page 61: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

3.3 事前準備 49

アルゴリズム 5 バックトラッキングによる探索入力: クエリグラフ Q,データグラフ G

出力: Gに含まれる全ての Qの埋め込みを報告する.

1: function Search(M̂, C)2: k ← |M̂ |3: if k = |VQ| then4: M̂ を完全な埋め込みとして報告する

5: return6: C ′ ← C のうち M̂ についてエッジ制約を満たす候補頂点 (式 3.2)7: for each v ∈ C ′[uk+1] do8: if v ̸∈ ran(M̂) then9: Search(M̂ ∪ {(uk+1, v)}, C ′)

する方法がある [89]:

C[ui] = { v ∈ VG | ℓ(v) = ℓ(ui) } . (3.1)

関数呼び出し Search(∅, C)によって探索が開始される.関数は最初に M̂ が完

全な埋め込みかどうかを確認し,そうであれば完全な埋め込みとして報告する

(2–5行目).M̂ が完全な埋め込みでない場合,次の再帰呼び出しで使用するため

C からエッジ制約を満たさない候補頂点を除外する (6行目).エッジ制約は,ク

エリ頂点 ui と u′i が隣接するならばそれらの割り当て先M [ui]とM [u′

i]も隣接

していることを要求する.従ってクエリ頂点 ui の割り当て先は,M̂ に含まれる

全ての隣接頂点 u′i の割り当て先と隣接する候補頂点でなければならない.つま

り,

C ′[ui] = C[ui] ∩∩

u′i∈N(ui)∩dom(M̂)N(M̂ [u′

i]). (3.2)

M̂ には u1, u2, . . . , uk の割り当てが含まれるので,次は uk+1 の候補頂点 v に

ついてループする (7行目).v が M̂ で使用されていないならば (8行目),M̂ に

uk+1 と v の割り当てを追加した部分埋め込み M̂ ∪ {(uk+1, v)}と C ′ を引数と

して関数 Searchを再帰呼び出しする.このようにラベル制約 (式 3.1),エッジ

Page 62: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

50 第 3章 高速サブグラフマッチング

制約 (6行目),単射制約 (8行目)を満たす割り当てを再帰的に部分埋め込みへ追

加していくことにより完全な埋め込みを探索する.

3.4 提案手法

本節ではまず提案手法の中心的なアイデアとアルゴリズムの全体像を説明し,

その後アルゴリズムの詳細を述べる.

3.4.1 提案手法のアイデア

候補頂点枝刈りやマッチング順序最適化のようなバックトラッキングの前処理

によって探索範囲を狭めることができるが,依然として多くの探索失敗が発生し

処理時間を増大させる.提案手法のアイデアはバックトラッキング中に発生した

探索失敗から学び,失敗を繰り返さないことによって探索を高速化することであ

る.具体的には,探索失敗は部分埋め込みに含まれる頂点の割り当てが定義 1で

示した 3つの制約のいずれかに違反することで発生する.違反の原因となる割り

当てを部分埋め込みが含んでいる限り,それ以外のクエリ頂点の割り当てをどの

ように変更しても探索失敗となる.そこで提案手法では制約に違反する割り当て

の組み合わせ (パターン) を探索失敗時に部分埋め込みから抽出し,それに符合

する部分埋め込みを枝刈りすることによって以降の探索失敗を削減する.既存手

法による探索範囲の絞り込みと提案手法を組み合わせることによって,既存手法

では削減しきれなかった探索失敗を削減し高速化することが可能である.

3.4.2 Dead-endパターンによる枝刈り

本節ではナイーブなバックトラッキングによる探索 (アルゴリズム 5) を参照

しつつ提案手法による探索の枝刈りを説明する.まず以降の説明で使用するため

次の通り定義を行う.

定義 6 (Dead-endパターン). D を部分埋め込みとする.D ⊆M であるような

完全な埋め込みM が存在しないとき,D を dead-endパターンと呼ぶ.記述を

Page 63: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

3.4 提案手法 51

簡潔にするため,単に「D は dead-endである」とも書く.また D が dead-end

である場合に限り Dead(D)が真になるような述語 Deadを導入する.

Dead-end (行き止まり)とは図 3.2のような探索ツリーにおける探索失敗 (図

中バツ印) を指す.Dead-end パターンを利用した枝刈りを行うため,提案手法

は関数 Searchに対して (i)関数末尾における dead-endパターンの抽出と (ii)

再帰呼び出しの前 (8, 9行目の間)における dead-endパターンとの照合という 2

つの変更を加える.1 つ目の dead-end パターンの抽出では部分埋め込み M̂ か

ら一部の頂点割り当てを dead-endパターン D として抽出し,dead-endパター

ンの集合Dへ追加する.具体的な抽出方法は後述する.Dead-endパターンの抽

出は関数呼び出し Search(M̂, C)またはそこからの再帰呼び出し内において埋

め込みの報告がなかった場合にのみ行われる.もし埋め込みの報告があったなら

ば M̂ に関する探索は成功したことになるため,M̂ から dead-endパターンを抽

出することはできない.2つ目の dead-endパターンとの照合では,新しい部分

埋め込み M̂ ∪{(uk+1, v)}がD ∈ Dのいずれかに符合するかどうかを確認する.

定義 7 (Dead-end パターンとの符合). 部分埋め込み M̂ と dead-end パターン

D が与えられたとき,D ⊆ M̂ であるならば「M̂ は D に符合する」と言う.

もし dead-endパターンに符合するならば再帰を行わないことで探索を打ち切

る.このような dead-endパターンの抽出と照合がナイーブなバックトラッキン

グに対する差分である.

3.4.3 Dead-endパターンの抽出

前述の通り部分埋め込み M̂ が dead-endパターン抽出の対象となるとき,M̂

を含む完全な埋め込みは存在しない.従って定義上 M̂ 自体も dead-endパター

ンである.しかし dead-endパターンとしての M̂ に符合する部分埋め込みは関

数呼び出し Search(M̂, C) において探索済みであるため,M̂ に枝刈り効果は

ない.以降の探索において多くの部分埋め込みを dead-endパターンと符合させ

るため,パターンは少数のクエリ頂点に対する割り当てのみを含むことが望ま

Page 64: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

52 第 3章 高速サブグラフマッチング

しい.しかし M̂ から一部の割り当てのみを取り出した部分埋め込みが必ずしも

dead-endであるとは限らない.そこで dead-endパターンの抽出では,M̂ の部

分集合であり,かつ依然として dead-endでもあるような部分埋め込みを作成す

る.その際次のような dead-endマスクという考え方を用いる.

定義 8 (Dead-endマスク). M̂ を dead-endである部分埋め込みとする.このと

き次式を満たすクエリ頂点の集合 Γを M̂ の dead-endマスクと呼ぶ.

Γ ⊆ dom(M̂) ∧ Dead({

(ui, v) ∈ M̂∣∣∣ ui ∈ Γ

})(3.3)

M̂ から抽出された Dead-end パターン D は,M̂ と Γ を用いて

D ={

(ui, v) ∈ M̂∣∣∣ ui ∈ Γ

}によって得られる.

Dead-endマスクの選択方法は探索失敗の原因によって異なる.アルゴリズム

5において探索失敗となる原因は次の 3つがある: (i)ラベル制約 (式 3.1)とエッ

ジ制約 (式 3.2) を満たす候補頂点 v ∈ C ′[uk+1] が存在しない (7 行目),(ii) 新

しい部分埋め込み M̂ ∪ {(uk+1, v)} が単射制約を満たさない (8 行目),(iii) 再

帰呼び出しした関数 Search が探索に失敗する (9 行目).さらに提案手法では

dead-endパターンとの照合を 8, 9行目の間で行うため,探索失敗となる原因は

合わせて 4つ存在する.以降ではこれら 4つの原因それぞれについて dead-end

マスクの選択方法を説明し,最後に失敗の原因別に得られたマスクを集約し M̂

のマスクを得る方法を述べる.

候補頂点が存在しない場合

候補頂点が存在しない状態とは C ′[uk+1] = ∅ である.実際には uk+1 に限ら

ず,いずれかのクエリ頂点が候補頂点を失った時点で M̂ の探索失敗が確定する.

このとき,dead-endマスクは次のように得られる.

補題 1 (候補頂点が存在しない場合の dead-endマスク). クエリ頂点 ui につい

て C ′[ui] = ∅ であるとき,Γ = N(ui) ∩ dom(M̂) は M̂ の dead-end マスクで

ある.

証明. Γ が dead-end マスクでない,即ち式 3.3 を満たさないと仮定する.こ

Page 65: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

3.4 提案手法 53

のとき Γ ⊆ dom(M̂) は自明なので,{ (uj , v) ∈ M̂ |uj ∈ Γ} ⊆ M である

ような埋め込み M が存在する.M はエッジ制約を満たす埋め込みなので,

式 3.2 の M̂ に M を代入して C ′M [ui] = C[ui] ∩

∩u′

i∈N(ui)N(M [u′

i]) と置く

と M [ui] ∈ C ′M [ui]. 一方 Γ ⊆ N(ui) 及び ∀uj ∈ Γ, M [uj ] = M̂ [uj ] より,

C ′M [ui] ⊆ C[ui] ∩

∩u′

i∈ΓN(M̂ [u′

i]) = C ′[ui] = ∅ である.従って M [ui] ∈

C ′M [ui]と矛盾する.ゆえに Γは式 3.3を満たす dead-endマスクである.

単射制約を満たさない場合

説明のため新しい部分埋め込みを M̂+ = M̂ ∪ {(uk+1, v)} と置く.アルゴリ

ズム 5では v ̸∈ ran(M̂) (8行目)によって M̂+ が単射制約を満たすことを確認

する.M̂+ が単射制約を満たさない場合の dead-end マスクは次のように得ら

れる.

補題 2 (単射制約を満たさない場合の dead-endマスク). M̂+ を単射制約を満た

さない部分埋め込みとする.単射でないので M̂+[ui1 ] = M̂+[ui2 ]であるような

クエリ頂点 ui1 , ui2 が存在する.ここで Γ+ = {ui1 , ui2}は M̂+ の dead-endマ

スクである.

証明. { (ui, v) ∈ M̂+[ui] |ui ∈ Γ+ } ⊆ M であるような埋め込みM は単射制約

を満たさない.また Γ+ ⊆ dom(M̂+).ゆえに Γ+ は M̂+ の dead-endマスクで

ある.

補題 1が M̂ の dead-endマスクを与えるのに対し,補題 2は M̂+ のマスクを

与えることに注意されたい.M̂+ のマスクを M̂ のマスクへ変換する方法は後述

する.

Dead-endパターンに符合する場合

新しい部分埋め込み M̂+ が記録済みの dead-endパターンDに符合する場合,

dead-endマスクは D より得られる.

補題 3 (Dead-endパターンに符合する場合の dead-endマスク). Dを dead-end

Page 66: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

54 第 3章 高速サブグラフマッチング

パターンとする.D ⊆ M̂+ であるとき,Γ+ = dom(D)は M̂+ の dead-endマ

スクである.

証明. D ⊆ M̂+ より Γ+ ⊆ dom(M̂+).D は dead-end パターンなので

Dead(D).ゆえに Γ+ は M̂+ の dead-endマスクである.

再帰呼び出しが探索失敗となる場合

アルゴリズム 5 は新しい部分埋め込み M̂+ について単射制約の確認と dead-

endパターンへの照合を行ったのち,関数 Searchを再帰呼び出しする.再帰呼

び出しから戻るまでに埋め込みの報告がなかった場合,M̂+ は dead-endであっ

たことが分かる.このとき,M̂+ からの dead-endパターンの抽出と記録は再帰

呼び出しされた関数内で完了している.つまり,再帰呼び出しから戻ったときに

は M̂+ と符合する dead-end パターンが記録されている.従って補題 3 と同様

にして M̂+ の dead-endマスクを得られる.

Dead-endマスクの集約

関数 Search は部分埋め込み M̂ から dead-end パターンを抽出するために

M̂ の dead-endマスクを必要としている.補題 1では直接 M̂ のマスクを得られ

るのに対し,補題 2及び 3で得られるのは新しい部分埋め込み M̂+ のマスクで

ある.式 3.3 より M̂ のマスク Γ は Γ ⊆ dom(M̂) = {u1, u2, . . . , uk} を満たす

が,M̂ に uk+1 の頂点割り当てを追加することで作られた M̂+ のマスクは uk+1

を含む可能性がある.従って M̂+ のマスクから M̂ のマスクを得るためには変換

が必要である.

補題 2と 3は v ∈ C ′[uk+1]についてのループ (7行目)の内部で適用されるた

め,ループ内で生成される新しい部分埋め込み M̂+ のそれぞれに対応するマス

クが得られる.従って次のような集合 Γ∗ を得ることが可能である:

Γ∗ =∪

v∈C′[uk+1]

(M̂ ∪ {(ui, v)}の dead-endマスク

). (3.4)

ここで Γ∗ について次のことが言える.

Page 67: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

3.4 提案手法 55

補題 4 (Dead-end マスクの集約). C ′[uk+1] ̸= ∅ であるとき,次の Γ は M̂ の

dead-endマスクである:

Γ ={

Γ∗ if uk+1 ̸∈ Γ∗(Γ∗ ∪N(uk+1)) ∩ dom(M̂) if uk+1 ∈ Γ∗.

(3.5)

証明. D ={

(ui, v) ∈ M̂∣∣∣ ui ∈ Γ

}と置く.Γ ⊆ dom(M̂) と Dead(D) を,

uk+1 ̸∈ Γ∗ と uk+1 ∈ Γ∗ の場合ぞれぞれについて示す.

■uk+1 ̸∈ Γ∗ のとき 補題の前提として,任意の v′ ∈ C ′[uk+1] について新

しい部分埋め込み M̂+ = M̂ ∪ {(uk+1, v′)} は dead-end であるため,その

dead-end マスク Γ+ が存在する.Γ+ ⊆ dom(M̂+) であり,今は uk+1 ̸∈ Γ∗

の場合を考えているので,Γ∗ ⊆ dom(M̂+) \ {uk+1}.また Γ∗ = Γ および

dom(M̂+) \ {uk+1} = dom(M̂)より Γ ⊆ dom(M̂).さらに Γ+ ⊆ Γ∗ より,

∀v′ ∈ C ′[uk+1], Dead({

(ui, v) ∈(

M̂ ∪ {(uk+1, v′)}) ∣∣∣ ui ∈ Γ∗

}). (3.6)

uk+1 ̸∈ Γ∗なので v′の全称量化子は除去できてDead({

(ui, v) ∈ M̂∣∣∣ ui ∈ Γ∗

}).

Γ∗ = Γなので Dead(D).

■uk+1 ∈ Γ∗ のとき まず Γ は Γ∗ ∪ N(uk+1) と dom(M̂) の積集合なので

Γ ⊆ dom(M̂).次に Dead(D) を背理法で考える.Γ が M̂ の dead-end マスク

でないと仮定すると,D ⊆ M であるような完全な埋め込み M が存在する.

N(uk+1) ∩ dom(M̂) ⊆ Γおよび ∀ui ∈ Γ, M̂ [ui] = D[ui] = M [ui]より,

∀ui ∈ N(uk+1) ∩ dom(M̂), M̂ [ui] = M [ui]. (3.7)

M はエッジ制約を満たすため,

M [uk+1] ∈ C[uk+1] ∩∩

u′i∈N(uk+1)

N(M [u′i]) (3.8)

⊆ C[uk+1] ∩∩

u′i∈N(uk+1)∩dom(M̂)

N(M̂ [u′i]) ∵ 式 3.7 (3.9)

= C ′[uk+1]. ∵ 式 3.2 (3.10)

Page 68: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

56 第 3章 高速サブグラフマッチング

ところで,uk+1 ∈ Γ∗ の場合において式 3.6を変形すると,

∀v′ ∈ C ′[uk+1], Dead({

(ui, v) ∈ M̂∣∣∣ ui ∈ Γ∗ \ {uk+1}

}∪ {(uk+1, v′)}

).

(3.11)

Γ∗ \ {uk+1} ⊆ Γより,

∀v′ ∈ C ′[uk+1], Dead({

(ui, v) ∈ M̂∣∣∣ ui ∈ Γ

}∪ {(uk+1, v′)}

)(3.12)

⇔ ∀v′ ∈ C ′[uk+1], Dead (D ∪ {(uk+1, v′)}) . (3.13)

ところが,完全な埋め込みM は D ⊆M かつ式 3.10よりM [uk+1] ∈ C ′[uk+1]

を満たすので,式 3.13と矛盾する.ゆえに Dead(D).

以上より,uk+1 ̸∈ Γ∗ と uk+1 ∈ Γ∗ の両方の場合において Γ ⊆ dom(M̂)かつ

Dead(D)であるから,Γは M̂ の dead-endマスクである.

関数 Search の末尾では以上のように抽出された dead-end マスク Γ を用い

て dead-endパターンを M̂ から抽出する.

3.4.4 Dead-endパターンの管理

3.4.2 節では簡単のため,dead-end パターンを集合 D に記録し,照合時には

D に部分埋め込みと符合するパターンが存在するかどうかを確認すると述べた.

しかしながら実際には空間的,時間的制約がそれぞれ存在し,実装は現実的でな

い.まず空間的には,dead-endパターンは最悪の場合存在し得る部分埋め込み

と同数,即ち |C[u1]||C[u2]| . . . |C[un]|個抽出される.そのため,D はメモリに

収まらない可能性がある.さらに時間的には,性能向上のために部分埋め込み

M̂ と符合する dead-end パターンを高速に検索できなければならない.そこで

本節では,実用的な枝刈りを可能にするための 2つのテクニックを説明する.

連想配列への dead-endパターンの格納

探索中に抽出された全ての dead-endパターンを保存しておくことは,メモリ

消費量とパターンの検索速度の両面において現実的でない.そこで dead-endパ

Page 69: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

3.4 提案手法 57

ターンの一部をキーとして使用し,連想配列へ保存する方法を取る.キーが一致

したパターンは上書き保存することによって,一定数以上のパターンが保存され

ないようにする.具体的には,探索に失敗した部分埋め込みへ最後に追加され

たクエリ頂点とその割り当て先データ頂点のペアをキーとする.つまり,∆ を

連想配列,M̂ = {(u1, vi1), (u2, vi2), . . . , (uk, vik)}を dead-endである部分埋め

込みだとすれば,M̂ から抽出されたパターンは ∆[uk, vik]に格納される.これ

により,保存される dead-endパターンの数は候補頂点数の合計∑

ui∈VQ|C[ui]|

以下に保たれる.最後に割り当てたクエリ頂点とデータ頂点をキーにするのは,

その組み合わせが最も上書きされる頻度が少ないためである.枝刈りのために

dead-endパターンを検索する際は,部分埋め込みへ最後に割り当てたクエリ頂

点とデータ頂点をキーとして連想配列を参照する.この処理は O(1) で可能で

ある.

Dead-endパターンの整数表現

Dead-endパターンを連想配列に保存することでメモリ消費と検索コストは実

用レベルまで低下する.しかしながら,dead-endパターンDには最大で |VQ|個

の割り当てが含まれることから,部分埋め込み M̂ との符合を確認する (D ⊆ M̂

をテストする)ためには O(|VQ|)の時間計算量を要する.符合の確認は頻繁に行

われるためこの計算コストの影響は大きく,枝刈り処理がかえって処理時間の増

加を招く原因となる.

そこで提案手法では dead-end パターンを整数によって表現することで符合

の確認を O(1)時間で行う.Dead-endパターンの整数表現のアイデアはバック

トラッキングの再帰呼び出しの性質に基づく.具体的には,関数 Search に引

数として渡される部分埋め込み M̂ が呼び出しごとに必ず異なることを利用す

る.これにより,M̂ を一意に識別する ID 番号 (埋め込み ID) として Search

の通算呼び出し回数を使用することができる.部分埋め込み M̂ からその埋め込

み ID を対応付ける関数を ν(M̂) と置くと,例えば図 3.2(b) の探索において,

ν({(u1, v1)}) = 1, ν({(u1, v1), (u2, v2)}) = 2, ν({(u1, v1), (u2, v2), (u3, v5)}) =

3, . . .となる.

Page 70: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

58 第 3章 高速サブグラフマッチング

しかしながら,埋め込み ID を使った dead-end パターンの記録にはさらに

2 つの課題がある.1 つ目は,埋め込み ID で表現可能な部分埋め込みが必ず

u1, u2, . . . と連続したクエリ頂点に対する割り当てを含むことである.そのた

め,dead-endマスクによって一部のクエリ頂点のみを抽出した dead-endパター

ンを表現できない.この問題の影響を緩和するため,dead-endパターンを連想

配列へ格納していることを利用する.Dead-end パターンの連想配列 ∆ におい

て,M̂ から抽出されたパターンの保存先は∆[uk, M̂ [uk]] (ただし k = |M̂ |)に固

定されている.その場所より自明であるため,dead-endパターンが (uk, M̂ [uk])

を含んでいることを明示する必要はない.そこで M̂ の dead-endマスク Γから

uk を除いて dead-endパターンを作成し,その埋め込み IDを連想配列へ格納す

る.2つ目の課題は,部分埋め込みから埋め込み IDへの変換である.埋め込み

IDは関数 Searchの通算呼び出し回数と同じ数だけ存在するため,全てを記録

しておくことはできない.そこで現在探索中の部分埋め込み M̂ に含まれる埋め

込みについてのみ IDを保持する.具体的には,M̂ と別に埋め込み IDの配列 Φ

を定義し,Φ[µ] = ν({(ui, v) ∈ M̂ | i ≤ µ})となるように保持する.これには関

数呼び出し Search(M̂, C)において Φ[uk]へその時点の関数呼び出し回数を記

録するだけでよい.

これら 2 つの課題とその対応策により,dead-end である部分埋め込み M̂ と

その dead-end マスク Γ が与えられたとき,dead-end パターンは (i) 埋め込み

ID,(ii)埋め込み IDが表す部分埋め込みの要素数,(iii)オリジナルの dead-end

マスクの 3つ組により表現される.具体的には次のように連想配列へ dead-end

パターンを保存する:

∆[uk, M̂ [uk]] = (Φ[µ], µ, Γ) . (3.14)

ただし µ = maxui∈Γ,i<k i である.3 つ組に含まれる dead-end マスク Γ は補

題 3 に基づき dead-end パターンを抽出するために必要である.部分埋め込み

M̂ (k = |M̂ |)とそれに対応する埋め込み IDの配列 Φが与えられたとき,M̂ が

dead-endパターンに符合するかどうかは次のように確認できる:

Φ[µ] = ϕ, ただし (ϕ, µ, Γ) = ∆[uk, M̂ [uk]]. (3.15)

Page 71: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

3.4 提案手法 59

∆の参照と埋め込み IDの比較は共に O(1)なので,照合処理全体としても O(1)

である.複雑になるため次に示す詳細なアルゴリズムでは dead-endパターンの

整数表現について省略しているが,内部で以上のような dead-endパターンの表

現を用いることで枝刈りのオーバーヘッドを削減している.

3.4.5 詳細なアルゴリズム

ここまでに説明した dead-endパターンの抽出及び管理手法を統合した具体的

な探索アルゴリズムをアルゴリズム 6に示す.なおアルゴリズムは dead-endパ

ターンの連想配列 ∆を大域変数として持つものとする.関数 Searchは部分埋

め込み M̂ と候補頂点集合 C を受け取り,M̂ が dead-end である場合は M̂ の

dead-endマスクを,そうでない場合は空集合を返却する.探索は関数呼び出し

Search(∅, C)によって開始される.アルゴリズム 5と比較したときアルゴリズ

ム 6 の差分は,dead-end マスクの抽出 (8 行目など),dead-end パターンとの

照合 (14 行目),記録 (20 行目) の 3 つを行う点である.1 つ目の dead-end マ

スクの抽出は探索失敗の確認とセットで行う.補題 1 の候補頂点が存在しない

場合 (7, 8行目),補題 2の単射制約を満たさない場合 (12, 13行目),補題 3の

dead-endパターンに符合する場合 (14, 15行目),そして 3.4.3節で述べた再帰呼

び出しが探索失敗となる場合 (17行目)である.候補頂点が存在しない場合を除

き,直接得られるのは新しい部分埋め込みM ∪ {(uk+1, v)}の dead-endマスク

である.そこでそれらは Γ∗ に蓄積し,候補頂点についてのループを終えた後で

式 3.5により M̂ の dead-endマスクに変換される (18行目).2つ目の dead-end

パターンとの照合は,連想配列の 1要素∆[uk+1, v]に対してのみ行われるため高

速である.なおもし dead-endパターンの記録がまだ行われておらず ∆[uk+1, v]

が未定義であった場合,∆[uk+1, v] ⊆ M̂ は偽になるものとして扱う.3つ目の

dead-endパターンの記録は,再帰呼び出し中に埋め込みの報告がない,即ち M̂

が dead-endであり,かつ M̂ が頂点割り当てを含むときにのみ行う (19行目).

後者の条件は M̂ = ∅のとき M̂ [uk]が未定義となってしまうため確認している.

最後に,M̂ が dead-end であるときは dead-end マスクを (21 行目),そうでな

Page 72: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

60 第 3章 高速サブグラフマッチング

アルゴリズム 6 探索アルゴリズムの詳細入力: クエリグラフ Q,データグラフ G.

出力: Gに含まれる全ての Qの埋め込みを報告する.

1: function Search(M̂, C)2: k ← |M̂ |3: if k = |VQ| then4: M̂ を埋め込みとして報告する

5: return ∅6: C ′ ← C のうち M̂ についてエッジ制約を満たす候補頂点 (式 3.2)7: if C ′[ui] = ∅であるクエリ頂点 ui が存在する then8: Γ← N(ui) ∩ dom(M̂) ▷ 補題 19: else

10: Γ∗ ← ∅11: for each v ∈ C ′[uk+1] do12: M̂+ ← M̂ ∪ {(uk+1, v)}13: if v ∈ dom(M̂) then14: Γ∗ ← Γ∗ ∪ {ui ∈ dom(M̂+) | M̂+[ui] = v } ▷ 補題 215: else if ∆[uk+1, v] ⊆ M̂+ then16: Γ∗ ← Γ∗ ∪∆[uk+1, v] ▷ 補題 317: else18: Γ∗ ← Γ∗ ∪ Search(M̂+, C)

19: Γ←式 3.5により変換された Γ∗ ▷ 補題 4

20: if 再帰呼び出し中に埋め込みの報告がなく,かつ M̂ ̸= ∅ then21: ∆[uk, M̂ [uk]]← { (ui, v) ∈ M̂ |ui ∈ Γ }22: return Γ23: return ∅

ければ空集合を返却する (22行目).以上のようにして実用的な時間計算量と空

間計算量の下で dead-endパターンによる枝刈りを実装することが可能である.

Page 73: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

3.4 提案手法 61

3.4.6 定性的議論

本節では提案手法の定性的性質として,全ての埋め込みを列挙すること (完全

性)を証明し,さらに dead-endパターンで枝刈り可能な探索について考察する.

完全性

提案手法は dead-endパターンによって探索を打ち切る.打ち切られる探索は

必ず完全な埋め込みを発見しない探索であるため,列挙される埋め込みに影響は

ない.具体的には,アルゴリズム 6に示した提案手法は次の性質を満たす.

定理 1 (完全性). アルゴリズム 6はデータグラフ Gに含まれるクエリグラフ Q

の全ての埋め込みを報告する.

証明. ナイーブなバックトラッキング (アルゴリズム 5) からの探索範囲の変

化は 14 行目における dead-end パターンとの照合によって発生する.補題 1,

2, 3, 4 より ∆[uk+1, v] は (値が代入されているならば) dead-end であるから,

∆[uk+1, v] ⊆ M̂ である部分埋め込み M̂ も dead-endである.定義 6より dead-

endである部分埋め込みは完全な埋め込みを生じないので,探索を打ち切っても

報告される埋め込みは変化しない.

Dead-endパターンにより枝刈り可能な範囲

3.4.3節ではシンプルなバックトラッキング (アルゴリズム 5)のコードに基づ

き探索失敗になる状況を分類し,それぞれに対して dead-endパターンの抽出方

法を示した.ここでは具体的にどのような状況が dead-endパターンによって枝

刈りされるかを考察する.

■候補頂点が存在しない場合 候補頂点が存在しない状態とはアルゴリズム 5の

7行目で C ′[uk+1] = ∅となった場合を意味する.候補頂点の絞り込みは 6行目

においてエッジ制約に基づいて行われている.それによって候補頂点集合が空に

なる具体的な状況を図 3.3 のクエリグラフ Q とデータグラフ G を例に考える.

Page 74: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

62 第 3章 高速サブグラフマッチング

探索中に部分埋め込み M̂ = { (u1, v1), (u2, v2), (u3, v4) }が発生したとする.次

に割り当てを行う u4 は u2 と u3 に隣接していることから,候補頂点は v2 と v4

に共通して隣接するラベル d の頂点となる.しかしそのようなデータ頂点は存

在しないため,候補頂点集合は空となる.このときの dead-endマスク Γは補題

1より,

Γ = N(u4) ∩ dom(M̂) (3.16)= { u2, u3, u5 } ∪ { u1, u2, u3 } (3.17)= { u2, u3 } (3.18)

である.従って抽出される dead-end パターンは { (u2, v2), (u3, v4) } となる.

このパターンが意味するところは「u2 と u3 をそれぞれ v2 と v4 に割り当てる

と探索が失敗する」であり,データグラフ G の構造を踏まえると正しいことが

分かる.クエリグラフ Qのように閉路を含む場合,候補頂点が複数のデータ頂

点に共通する隣接頂点に絞り込まれるため候補数が減少しやすい.この性質に着

目し,前処理としてクエリグラフ中の閉路部分から先に割り当てを行うマッチン

グ順序最適化手法が提案されている [7].一方でデータグラフに含まれる閉路を

発見することは極めて高コストであるため,これまで閉路に基づく効果的な枝刈

りは行われてこなかった.それに対し,提案手法は dead-endパターンによって

データグラフ上の閉路を捉えた枝刈りを行うことで高速な探索を可能にする.

■単射制約を満たさない場合 1つのデータ頂点に複数のクエリ頂点を割り当て

ると単射制約違反となる.アルゴリズム 5では 8行目の条件で同じデータ頂点を

重複して使用していないか確認している.この条件は容易に確認できるため,一

見 dead-end パターンによる枝刈りは不要であるように見える.しかしながら,

単射制約はクエリグラフに含まれるパスのマッチングにおいて大きな性能問題と

なる.パスの探索で単射制約違反が発生するのはデータグラフ中の閉路に遭遇し

た場合である.具体例として 3.1 節では図 3.1 のクエリグラフ Q とデータグラ

フ Gを用いて v1 の重複使用によって探索が失敗する状況を示した.この例にお

いてはラベル a–b–c–aのパス状クエリをラベル a, b, cの 3頂点から成るデータ

グラフ上の閉路に割り当てようとして探索失敗が生じている.実世界のグラフは

Page 75: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

3.5 評価 63

a

c

d

e

𝑢1

𝑢3

𝑢4

𝑢5

b𝑢2

(a) クエリグラフ Q

a

c c

𝑣1

e

d d𝑣6 𝑣7

𝑣8

b b𝑣2 𝑣3 𝑣4 𝑣5

(b) データグラフ G

図 3.3: 候補頂点が空になるクエリグラフとデータグラフの例.

複雑な接続関係を有し,大量の閉路が存在する.そのため,パス状クエリの探索

において閉路で単射制約違反を生じる場面は多いと考えられる.前述したように

データグラフ上の閉路を前処理で発見するためには高い計算コストを要するた

め,既存手法において閉路への割り当てを回避するような枝刈りは行われてこな

かった.それに対し,dead-endパターンは単射制約違反を回避する効果的な枝

刈りが可能である.

3.5 評価

本節では dead-endパターンによる枝刈りの効果を評価する.提案手法の実装

ではバックトラッキングによる探索に提案手法を用い,候補頂点の枝刈りとマッ

チング順序最適化に最新手法である CFL-Match [7]を組み合わせる.比較対象

の手法としては CFL-Matchに加え,文献 [59]において高い性能が確認されてい

る QuickSI [83] と GraphQL [43] の合計 3 つを用いる.QuickSI と GraphQL

の実装は文献 [59]の著者から,その他は論文の著者から入手した.実験に用いた

計算機は Intel Xeon E5-2697 v2を搭載し,256GBのメモリを持つ.グラフは

既存研究 [7, 42, 43, 81, 83, 97]で広く利用されている yeastと humanを用いる.

共にタンパク質相互作用ネットワークであり,yeastは 3,112頂点,12,519エッ

ジ,71種類の頂点ラベルを,humanは 4,674頂点,86,282エッジ,44種類の頂

Page 76: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

64 第 3章 高速サブグラフマッチング

4 8 12 16 20 24 28 32 36 40

Query size

10−5

10−4

10−3

10−2

10−1

100

101

102

103

Pro

cess

ing

tim

ep

erq

uer

y[s

ec]

DNF

Ours

QSI

GQL

CFL

(a) yeastデータセット

4 6 8 10 12 14

Query size

10−5

10−4

10−3

10−2

10−1

100

101

102

103

Pro

cess

ing

tim

ep

erq

uer

y[s

ec]

DNF

Ours

QSI

GQL

CFL

(b) humanデータセット

図 3.4: 各手法の 1クエリあたりの平均処理時間の比較

点ラベルをそれぞれ含む.クエリグラフはランダムウォークによってデータグラ

フからサブグラフを抽出することで生成する.クエリは頂点数を変化させながら

生成し,頂点数ごとに 1万クエリを 1つのクエリセットとする.クエリセットの

処理に 1 日以上を要する場合は処理不能 (Do-Not-Finish, DNF) とみなす.ク

エリによっては膨大な数の埋め込みが存在し全ての列挙が現実的でない場合があ

るため,文献 [42]と同様 1,000個の埋め込みを発見した時点で探索を打ち切る.

3.5.1 クエリ処理時間

まず dead-end パターンによる枝刈りによって得られる性能を確認するため,

既存手法とクエリの処理時間を比較する.実験結果を図 3.4 に示す.図中の

Ours, QSI, GQL, CFLはそれぞれ提案手法,QuickSI, GraphQL, CFL-Match

を意味する.yeastデータセットにおいては 40頂点,humanデータセットにお

いては 14頂点で全ての手法が DNFとなった.

全体傾向を見ると,提案手法は小規模なクエリから大規模なクエリまでバラ

ンスよく高速である.その中でも特に大規模なクエリにおいて性能差が顕著で

Page 77: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

3.5 評価 65

5 10 15 20

Query size

106

107

108

109

1010

1011

Nu

mb

erof

recu

rsiv

eca

lls

Ours

No pruning

(a) yeastデータセット

4 5 6 7 8 9

Query size

106

107

108

109

1010

1011

Nu

mb

erof

recu

rsiv

eca

lls

Ours

No pruning

(b) humanデータセット

図 3.5: 各クエリサイズにおいて 10,000クエリの探索で発生した再帰呼び出し回数の合計

ある.特に yeast の 26–36 頂点のクエリでは既存手法比でおよそ 4 桁の高速化

がみられる.図 3.1で例示したように,既存手法は候補頂点枝刈りなどバックト

ラッキングの前処理が有効でないクエリグラフにおいて網羅的な割り当ての試行

に陥ることがある.クエリが大規模化すると候補頂点の組み合わせ数が増大する

ため,処理時間が爆発的に増加する傾向にある.これに対し提案手法はクエリグ

ラフの構造によらず dead-endパターンに基づく枝刈りによって無駄な探索を削

減する.そのため大規模なクエリにおいても処理時間の増加を抑えることができ

ている.

3.5.2 Dead-endパターンによる枝刈りの回数

次に提案手法の性能が何によってもたらされているかを理解するため,

Search 関数 (アルゴリズム 6) の再帰呼び出し回数に着目して評価を行う.

本実験では dead-endパターンによる枝刈りを行う通常の提案手法 (“Ours”)と,

アルゴリズム 6の 14, 15行目をコメントアウトすることで枝刈りを省略した手

Page 78: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

66 第 3章 高速サブグラフマッチング

法 (“No pruning”)について,再帰呼び出しが行われた回数を比較する.これら

の再帰回数の差が枝刈りの効果である.結果を図 3.5 に示す.yeast では 20 頂

点,human では 9 頂点より大きいクエリに対して No pruning が DNF となっ

たため,それ以降の頂点数はプロットしていない.再帰回数を見ると,yeast,

humanとも小規模なクエリでは枝刈りがほぼ発生していないものの,クエリが

大規模化するに従って枝刈りの効果が増大している.yeast の 18 頂点のクエリ

における再帰回数は Oursが約 2.4× 107 回,No pruningが約 6.7× 1010 回であ

り,3桁以上の再帰を削減している.大規模なクエリほど削減率が大きいのは探

索失敗の発生頻度が高いためと考えられる.クエリの頂点数が多いほど同一デー

タ頂点への複数のクエリ頂点の割り当て (単射制約違反) が発生しやすい.また

エッジ数が増加するためエッジ制約違反も発生しやすい.それらによる探索失敗

を削減することで提案手法は大幅に性能を向上させている.対照的に小規模なク

エリでは探索失敗の削減率が小さい.それでも図 3.4の実験結果において既存手

法と比肩する性能を示すことができているのは,提案手法が 3.4.4節で述べたよ

うに dead-endパターンの効率的な管理と照合を行い,枝刈りに要するオーバー

ヘッドを極めて小さく抑えているためである.

3.5.3 議論

ここでは yeastと humanを用いた本章の実験から読み取れる提案手法の性質

について議論する.

サブグラフマッチングにおいては一般に頂点ラベルの種類が少なく,クエリグ

ラフのエッジ密度が高いほど複雑な問題となる.なぜならばラベルの種類が少な

いほどラベルに基づくフィルタリングで除外可能な候補頂点が減少し,またエッ

ジが多いほどエッジ制約による探索失敗が多発するためである.yeastと human

は頂点数が近い一方で,yeastと比べ humanはラベルが少なくエッジ密度が高

い.またデータグラフから抽出したサブグラフをクエリとしているため,human

からはエッジ密度の高いクエリが生成されやすい.従ってラベル数とエッジ密度

の観点で humanは yeastよりも複雑さの大きい問題設定となる.図 3.4に示さ

Page 79: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

3.6 結論 67

れているように,クエリサイズのスケールは異なるものの,yeast と human の

処理時間はどちらも似た形状のプロットとなっている.具体的には,性能は提

案手法,CFL-Match, GraphQL, QuickSI の順で高く,提案手法は既存手法が

DNF となるクエリサイズのおよそ 2 倍のサイズまで処理できている.yeast と

humanという 2つのグラフにおいて同じ傾向を示した本実験結果は,ラベル数

とエッジ密度に依存せず提案手法が既存手法よりも効率的であることを示して

いる.

データグラフの規模もまたサブグラフマッチングの複雑さに影響する.実験で

は最新手法である CFL-Match上に提案手法によるバックトラッキングを実装し

ているため,データグラフに対する性能の変化は CFL-Matchの評価結果を基に

議論することができる.人工的に合成したグラフを用いた実験 (文献 [7] 6.2節)

において CFL-Matchのクエリ処理時間はデータグラフの頂点数とエッジ数に対

しておおよそ線形に増加している.これは CFL-Matchがデータグラフとクエリ

グラフを前処理した結果生成される索引構造 (Compact Path Index [7])がデー

タグラフの規模に対して線形のサイズを示すためである.前処理後のバックト

ラッキングでは探索失敗を繰り返すことで索引サイズに対して線形以上に処理時

間が増加する.しかし提案手法を用いることで探索失敗を CFL-Matchよりも減

らすことができる.従って処理時間に占める索引サイズの影響はより顕著になる

ため,CFL-Matchを基にする限り提案手法もまたデータグラフの規模に対して

線形に処理時間が増加すると推測される.また CFL-Match の評価では 100 万

頂点の合成グラフが使用されており,提案手法もその程度の規模までは現実的な

時間で処理可能である可能性が高い.

3.6 結論

サブグラフマッチングは様々な場面で利用されるが,NP困難に属し高速化が

課題となっている.そこで本章では,失敗から学び,失敗を繰り返さないこと

により高速化するサブグラフマッチングアルゴリズムを提案した.具体的には

バックトラッキングによる探索中に発生した探索失敗の原因に基づき dead-end

Page 80: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

68 第 3章 高速サブグラフマッチング

パターンを生成し,パターンに符合する部分埋め込みの探索を打ち切る.実験の

結果提案手法は既存手法比で最大 4桁高速であることが確認された.

本研究では第 2章のリオーダリング手法で命令処理効率を向上させ,本章の枝

刈りによって発行命令数を削減するという役割分担をとっている.本章ではメモ

リアクセスについて言及していないが,サブグラフマッチング処理を開始する前

に第 2章の手法でグラフをリオーダリングすることにより局所性の向上を期待で

きる.このように 2つの技術の組み合わせによってクラウド上に高速なクエリ処

理エンジンを実現することができる.クラウド上でパーソナルデータを使用する

ための匿名化手法については次の第 4章で説明する.

提案手法の評価では yeastと humanという 2つのデータグラフを用い,クエ

リグラフの頂点数を変化させつつ実験を行った.実験ではラベル数およびクエリ

グラフのエッジ密度と頂点数に関する提案手法の傾向を確認することができた.

しかしながら,データグラフの規模による性能の変化や,パス,クリークなど

クエリグラフの形状別の性能評価など,よりよく提案手法の性質を理解するた

めに必要な実験の追加は今後の課題である.実験では提案手法に基づくバック

トラッキングと CFL-Match [7]を組み合わせた実装を使用しているため,特に

CFL-Matchの評価に使用されている実験設定においてどのような差分が生じる

か確認することが重要である.

また,本章の実験では既存手法と同様に提案手法もクエリサイズが大きくな

るにつれて処理時間が増大することが確認された (図 3.4).その原因としては次

の 2つの可能性が考えられる.1つ目の可能性は dead-endパターンの上書きに

よる枝刈り効果の低下である.3.4.4節で説明したように,dead-endパターンは

ハッシュテーブルに格納される.キーが衝突した場合は上書きによって古いパ

ターンが削除される.このとき枝刈り効果の大きいパターンが削除されると枝刈

りの効果が大幅に低下してしまう.2つ目の可能性は「失敗から学ぶ」という提

案手法のアイデア自体の限界である.実験においてはクエリグラフの頂点数を固

定したが,エッジ数はデータグラフからランダムに抽出された部分によって大き

く異なる.エッジ数が多いほど同型であるための制約は厳しくなるため,制約の

チェックに要する時間が増加する.このように,探索失敗を繰り返さないだけで

Page 81: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

3.6 結論 69

は解消することが難しい計算コストが性能に影響している可能性がある.これら

の可能性は,どちらも追加の実験を行うことで検証することができる.1つ目の

可能性については保存する dead-endパターンの数を変更しながら性能を比較す

ることで影響を確認できる.また 2 つ目の可能性についても,頂点数に対して

エッジ数が最大となるグラフ,即ちクリークをクエリとした場合の性能を既存手

法と比較することで提案手法の効果を確認できる.これらの確認が今後の課題と

なる.

Page 82: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International
Page 83: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

71

第 4章

最近傍グラフを用いた k-匿名化

4.1 序論

個人情報を含むデータは統計や医療のために様々な組織で収集されている.収

集されたデータは情報源として利用価値が高い反面,個人のプライバシを侵害す

る危険を孕んでいる.そこで,データ内の情報と個人を結び付けられない形への

データの匿名化が行われる.匿名化はクラウド環境にデータを保存する際の安全

性を高めるために用いることができる [82].本研究においても,1.2節で説明し

た枠組みに基づきクラウド上には匿名化したグラフデータを保存し,クエリ処理

に利用する.

匿名化の文脈においては表形式のデータが広く扱われてきた.例として架空の

Web ページの閲覧履歴を表 4.1 に示す.この表から閲覧したページを知られな

いよう匿名化するためには,名前や個人番号 (マイナンバーや米国の社会保障番

号)のような明確に個人を識別し得る属性を取り除くのみでは不十分である.な

ぜなら,年齢,性別,居住地といった単体では個人を特定できないような属性で

も,複数の属性を組み合わせることで個人を特定できてしまう場合があるからで

ある. このような他者でも比較的情報を入手しやすく且つ複数組み合わせるこ

とで個人を特定できてしまうような属性群を準識別子 (quasi-identifier) [23] と

本章は日本データベース学会論文誌 (©2014 The Database Society of Japan) に含まれる‘クラスタリングと空間分割の併用による効率的な k-匿名化’ [99]に基づく.

Page 84: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

72 第 4章 最近傍グラフを用いた k-匿名化

表 4.1: ページ閲覧データ

名前 年齢 性別 居住地 閲覧ページ

阪大 太郎 22 男 大阪府吹田市 https://www.osaka-u.ac.jp/佐藤 一子 41 女 大阪府大阪市 https://sato.com/鈴木 二子 30 女 大阪府大阪市 https://suzuki.edu/高橋 次郎 22 男 京都府京都市 https://takahashi.gov/田中 三郎 8 男 京都府京都市 https://tanaka.info/伊藤 三子 59 女 神奈川県横浜市 https://ito.net/渡辺 四子 65 女 東京都千代田区 https://watanabe.org/

呼ぶ.

準識別子から個人を特定できないようにする手法としては k-匿名化 [88]が代

表的である.k-匿名化とは,データを k-匿名性のある状態,即ち k人以上を準識

別子から区別できないようなデータへ変換することである.k = 2として表 4.1

を k-匿名化した結果の例を表 4.2と表 4.3に示す.表 4.2は数値を平均値へ,カ

テゴリ値を最頻値へ置き換えるミクロアグリゲーション [21, 27, 94]によって k-

匿名化されている.一方,表 4.3は年齢を数値の範囲へ置き換え,性別や居住地

のようなカテゴリ値をより大きな区分へ置き換える一般化 [87]によって k-匿名

化されている.表 4.2と 4.3のどちらも 2人以上が同じ準識別子を持つため,準

識別子を基にした閲覧ページの特定が難しくなっている.ただし,一般化による

匿名化ではデータを扱うプログラムが数値の範囲などの一般化された表現を扱え

るよう変更する必要がある.一方でミクロアグリゲーションによる匿名化では具

体的な値が保たれるため,第 2章と第 3章の手法を用いたクエリ処理エンジンを

そのまま利用可能である.そこで,本章ではミクロアグリゲーションによる k-

匿名化に焦点を当てる.

本研究では図 1.1に示すようなグラフデータを対象としているが,このような

データも個人に関する属性という観点で匿名化することができる.例えば表 4.1

に含まれる阪大太郎氏の情報は図 1.1の情報を表形式に変換したものである.年

齢と性別は人物に直接付与されたプロパティである.さらに LiveInエッジで接

Page 85: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

4.1 序論 73

表 4.2: ミクロアグリゲーションにより k-匿名化されたページ閲覧データ

名前 年齢 性別 居住地 閲覧ページ

— 31 女 大阪府大阪市 https://www.osaka-u.ac.jp/— 31 女 大阪府大阪市 https://sato.com/— 31 女 大阪府大阪市 https://suzuki.edu/— 15 男 京都府京都市 https://takahashi.gov/— 15 男 京都府京都市 https://tanaka.info/— 62 女 神奈川県横浜市 https://ito.net/— 62 女 神奈川県横浜市 https://watanabe.org/

表 4.3: 一般化により k-匿名化されたページ閲覧データ

名前 年齢 性別 居住地 閲覧ページ

— [22–41] 人 大阪府 https://www.osaka-u.ac.jp/— [22–41] 人 大阪府 https://sato.com/— [22–41] 人 大阪府 https://suzuki.edu/— [8–22] 男 京都府京都市 https://takahashi.gov/— [8–22] 男 京都府京都市 https://tanaka.info/— [59–65] 女 関東 https://ito.net/— [59–65] 女 関東 https://watanabe.org/

続された住所 (居住地)や,Browsedエッジで接続された URL (閲覧ページ)な

ども個人に関する情報とみなすことができる.匿名化による書き換えはプロパ

ティを直接変更するか,LiveIn, Browsedなどのエッジの接続先を変更すること

で元のグラフに反映できる.例えば表 4.2では匿名化によって阪大太郎氏の居住

地が大阪府吹田市から大阪府大阪市に変更されている.この場合は大阪府大阪市

を表現する頂点を (無ければ)作成し,LiveInエッジの接続先を大阪府大阪市に

変更すればよい.このようにグラフと表は相互に変換可能である.k-匿名化の研

究においては表データを対象とすることが多いため,本章でも表データに基づい

て議論を行う.

Page 86: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

74 第 4章 最近傍グラフを用いた k-匿名化

(a) 分散の大きいグループ (b) 理想的なグループ

図 4.1: 既存手法が分散の大きいグループを作る例 (k = 3)

以上のようにグラフや表から個人を特定できないように匿名化することができ

る.しかしながら,匿名化処理ではデータの変換によって情報が失われる.例え

ば表 4.1から表 4.2への匿名化によって,阪大太郎氏の年齢,性別,居住地は全

て書き換えられてしまっている.情報に損失の大きいデータに対するクエリは元

のデータと全く異なる結果を返却するため,有用性が低下する.情報損失を小さ

くするためには互いにデータの似通ったレコードを集めてグループを作り,同じ

準識別子に置き換える必要がある.k-匿名化では k人以上に同じ準識別子を与え

るため,各グループは k レコード以上を含む分割になっていなければならない.

このように分割された状態はしばしば k-分割と呼ばれている [26, 47, 86].つま

り,k-匿名化のためには情報損失の小さい k-分割を作成する必要がある.

情報損失の小さい k-分割を作成するため,これまで多くの手法が研究されてき

た.それらはクラスタリングに基づく手法 [12, 26, 47, 58, 67, 86]と kd-tree [33]

構築アルゴリズム等の空間分割に基づく手法 [48, 61]に分けられる.レコード数

nに対する計算量は前者が O(n2),後者が O (n log n)である.つまり空間分割

に基づく手法のほうが計算量は小さい.診療記録や購買履歴のように複数のレ

コードが 1人に対応するデータは人口を超えて際限なく増大し得るため,レコー

ド数に対する計算量の小ささは重要である.一方,クラスタリングのほうが空間

分割よりも柔軟に分割を行うことが可能であるため情報損失は小さい [12].この

ように,既存の手法では計算量と情報損失の小ささを両立できていない.

さらに,クラスタリングに基づく既存手法であってもレコードのクラスタ構

Page 87: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

4.1 序論 75

造を適切に捉えられない場合がある.例として図 4.1 のように 2 次元空間上に

分布したデータの k-分割を考える.図中の点はそれぞれ 2 次元情報のレコード

を表す.図 4.1(b)に示されているように,このデータには左下と右上に 2つの

クラスタが存在する.ところがこのデータに対して既存手法 [12, 47]を適用する

と,作成されるグループの数が ⌊n/k⌋(nはレコード数)に固定されているため図

4.1(a)のようにクラスタを無視したグループが作成されてしまう.グループ数が

可変である手法 [86]も同様にクラスタを正確に捉えられず図 4.1(a)のようなグ

ループを作ってしまう.

そこで本研究では 2つの手法を提案する.それらは (i)新しい k-分割アルゴリ

ズムの友引法,並びに (ii)空間分割とクラスタリングの併用である.

1つ目の提案である友引法は,ミクロアグリゲーションによる k-匿名化のため

の k-分割クラスタリングアルゴリズムである.友引法の特徴はグラフを用いて

既存手法より小さい情報損失を実現する点にある.グラフは k 近傍グラフのよ

うにレコードを頂点とし近傍点を接続して構築する.友引法は近傍のレコードを

貪欲に収集し分散の小さいグループを形成しつつ,グラフから発見されるクラス

タを考慮して総グループ数を変化させる.これによってより全体最適に近い分割

が可能になる.例えば図 4.1(b)のような分割を作成する.

2つ目の提案である空間分割とクラスタリングの併用では,2段階の処理を行

うことで情報損失を抑えつつ高速な分割を可能にする.具体的には,まずレコー

ド数 nに対し計算量 O (n log n)の空間分割アルゴリズムによって大まかな分割

を行い,次にクラスタリングに基づく計算量 O(n2)のアルゴリズムでさらに細

かく分割する.レコード全体の分布を分析する一般的なクラスタリングと異な

り,k-分割では近傍のレコードでグループを作成できさえすればよい.そのため

には局所的なレコードの分布が分かっていれば十分である.従って,クラスタリ

ングの対象が空間分割によって作られた狭い空間内のレコードに限定されても情

報損失への影響は小さい.計算量の小さい空間分割を途中まで使用することで

k-分割処理全体の計算量は O(n2)より小さくなるため,空間分割の併用によっ

て小さい情報損失と高速な処理を両立できる.本章では友引法と空間分割の併用

に焦点を当てるが,その他のクラスタリングに基づく分割手法と空間分割を組み

Page 88: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

76 第 4章 最近傍グラフを用いた k-匿名化

合わせることも可能である.

提案手法の特長は次の 3つにまとめられる:

1. 低情報損失:友引法は最近傍グラフの構築を通じてレコードのクラスタ構

造を発見する.これにより情報損失の少ない k-分割を作成することがで

きる.

2. 高速:友引法と高速な空間分割を併用することによって大量のデータを高

速に匿名化することができる.

3. パラメータによる制御:空間分割を併用する際には分割の粒度 k♯ をパラ

メータとして与える.この値によって情報損失の大きさと処理性能のどち

らを優先するか利用者が調整可能である.

友引法は既存手法と比べ最大 16%情報損失を減少させることが実験によって

分かった.空間分割を併用するとクラスタリングのみ用いた場合と比べ情報損失

が増大するが,友引法を使用することでこの損失を補うことができる.実験で

は,空間分割と友引法の併用はクラスタリングベースの既存手法のみを用いた場

合と同等の情報損失量を約 10倍高速に実現した.

本章の構成は次の通りである.4.2 節で k-匿名化に関する研究を紹介し,4.3

節で前提知識の説明を行う.4.4節においてクラスタリングに基づく k-分割アル

ゴリズムである友引法,および空間分割とクラスタリングを併用するアイデアの

詳細を説明し,4.5節で評価を行う.最後に 4.6節で結論を述べる.

4.2 関連研究

k-匿名化は (i) k-分割の作成と (ii) k レコードに同じ準識別子を与えるための

準識別子の変換という 2段階に分けられる.k-分割手法をクラスタリングと空間

分割に,準識別子の変換手法をミクロアグリゲーションと一般化に分類し,これ

までの研究と本研究を分類したものが表 4.4である.それぞれの分類について詳

しく説明した後,本研究の位置づけを述べる.

Page 89: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

4.2 関連研究 77

表 4.4: 既存研究と本研究の分類

準識別子の変換手法

ミクロアグリゲーション 一般化

分割手法クラスタリング [26, 47,58,86], 友引法 [12, 44,67]

空間分割 — [48,61]

4.2.1 分割手法

クラスタリングに基づく分割手法

クラスタリングに基づく手法はレコード間の距離を用いて分割を行う.一

般的なクラスタリングアルゴリズムでは 1 つのグループに k レコード以上含

まれることを保証できないため,k-分割専用のアルゴリズムが研究されてき

た [12, 26,47,58,67,86].

クラスタリングに基づく手法はグループ数が固定であるものと可変であ

るものに分けられる.前者においては Maximum Distance to Average Vector

(MDAV) [27,47]が,後者においてはMDAVを基にしたVariable-size Maximum

Distance to Average Vector (V-MDAV) [86]が代表的である.MDAVはグルー

プの中心とするレコードからユークリッド距離が最も近い k − 1レコードを収集

して 1 つのグループにする操作を繰り返す.グループのレコード数が k に固定

されているため,クラスタを無視して分散の大きいグループを作ってしまう場合

がある.このような結果になる原因の一つは,グループの作成によって周囲から

孤立したレコードが取り残されてしまうことにある.例えば図 4.1(a) の中央の

グループは,左下と右上のグループから取り残された 4 つのレコードで作られ

ている.そこで V-MDAVはMDAVで k レコードのグループを作成した後,グ

ループの周囲に孤立したレコードが存在する場合はそれらもグループに追加する

ことでまとまりのよいグループを作成する.しかしながら,V-MDAVで孤立レ

コードと判定されるのは 1つのレコードが単独で存在している場合のみであるた

め,2個以上 k 個未満のレコードがまとまって孤立している場合には無視されて

Page 90: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

78 第 4章 最近傍グラフを用いた k-匿名化

図 4.2: 空間分割に基づく手法で分割できない状態の例 (k = 2)

しまう.従って図 4.1の例ではMDAVと同様に図 4.1(a)のような分散の大きい

グループが作られる.さらに V-MDAVは孤立状態を判定するためのパラメータ

γ を要求し,適切な γ はデータによって異なる [86] ため設定が難しい.以上の

ように,既存手法には解決されていない問題がある.

空間分割に基づく分割手法

空間分割に基づく手法 [48, 61]ではレコードを多次元空間上の点と見做し,k

レコード以上含む空間を作れなくなるまで空間の分割を繰り返す.ここで言う空

間分割とは,例えばレコード全体を年齢が 30歳以下の集合と 30歳より大きい集

合に分割するような操作を指す.分割には kd-tree [33]や R-tree [41]のような

空間インデックスの構築アルゴリズムが使用される.

これらの手法は,レコード数に対する計算量がクラスタリングに基づく手法よ

りも小さく高速である一方で,情報損失が大きい [12].図 4.2がその理由の一端

を示している.図中には 5つのレコード (点)が存在するため,k = 2において 2

グループへ分割できるはずである.しかし実際には図中に示したいずれの点線で

分割してもレコード数 1のグループが生じるため,分割できない.結果として 5

レコード全体で 1つのグループとなってしまい,情報損失が増加する.

4.2.2 準識別子の変換手法

ミクロアグリゲーションによる k-匿名化

ミクロアグリゲーションとは同じグループに属する k 人以上のレコードの値

を平均値に書き換えることにより個人の特定を防ぐ手法で,統計的開示抑制技術

Page 91: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

4.2 関連研究 79

として 1980 年代から存在している [21, 94].元々ミクロアグリゲーションによ

る値の書き換えはレコードの全属性に対し行われていたが,書き換えを準識別子

に限定することによって k-匿名化にも利用される [27]. 表 4.1をミクロアグリ

ゲーションによって 3-匿名化したものが表 4.2である.

ミクロアグリゲーションは一般化に対して 2つの利点がある.1つ目の利点は

匿名化前のデータと匿名化後のデータに対して同じデータ分析手法を適用できる

ことである.表 4.3に示されているように,一般化では数値データが数値の範囲

と置き換えられる.つまり,データの種類が変化する.これに対し,ミクロアグ

リゲーションではデータの種類が匿名化前後で維持される.例えば数値は同じ数

値データである平均値と置き換えられる.従って元データと同じアルゴリズム

で分析が可能である.2つ目の利点は数値データの情報がより多く残ることであ

る.一般化によって数値の範囲に置き換えられた場合,元データの数値の分布情

報は残らない.例えば 5 つの整数の集合 {0, 0, 0, 0, 10} と {0, 10, 10, 10, 10} は

どちらも [0–10] へと一般化されるため区別できない.一方,ミクロアグリゲー

ションではそれぞれ平均値の 2と 8に置き換えられるため,集合に含まれる値の

大小関係が残る.これにより匿名化後のデータを用いた分析で有用な情報を抽出

できる可能性が高まる.

一般化による k-匿名化

表 4.3のように,数値を値の範囲へ,カテゴリをより大きな概念へ置き換える

変換手法は一般化 [87]と呼ばれる.

一般化による k-匿名化はさらに大域的再符号化 (global recoding)と局所的再

符号化 (local recoding)に分けられる [93].大域的再符号化ではレコードが持つ

属性値を一般化された値と対応付ける全レコード共通の関数が存在する.これ

に対し,局所的再符号化ではそのような関数を定義できない.例えば表 4.1から

表 4.3への変換において,年齢の 22という値は [22–41]と [8–22]の両方に一般

化されている.このことから使用された一般化関数が全レコード共通でないこと

が分かる.局所的再符号化は大域的再符号化よりも柔軟な一般化が可能であるた

め情報損失は減少する.一方で,一般的なデータ分析手法では局所的再符号化が

Page 92: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

80 第 4章 最近傍グラフを用いた k-匿名化

行われたデータを正しく処理できないことが指摘されている [34].例えば決定木

の作成において分類条件を定義するためには再符号化の意味を解釈する必要があ

る.具体的には,「神奈川県横浜市」が「関東」に含まれる地名であることや,重

なりや包含関係を持つ数値の範囲を考慮しなければならない.このように大域的

再符号化と局所的再符号化にはそれぞれ利点と欠点がある.

4.2.3 本研究の位置付け

1つ目の提案手法である友引法は分割手法としてクラスタリングを用い,準識

別子の変換手法としてミクロアグリゲーションを前提とした k-分割手法の一つ

である (表 4.4).友引法の主な特長はレコードのクラスタ構造を捉えることで既

存手法よりも小さい情報損失を実現することである.2つ目の提案手法である空

間分割とクラスタリングの併用は,2 つの異なるアイデアに基づく分割アルゴ

リズムを組み合わせることで低情報損失かつ高速な k-分割を可能にする処理の

枠組みである.このような組み合わせは我々が知る限りこれまで試みられてい

ない.

4.3 事前準備

4.3.1 空間分割に基づく k-分割

提案手法では空間分割に基づく k-分割手法として Mondrian [61] を使用す

るため,その概要を述べる.Mondrian の疑似コードをアルゴリズム 7 に示

す.Mondrian 関数はレコードの集合 R を引数として受け取り,k-分割され

たグループの集合,即ちレコードの集合の集合を返却する.k-分割処理は全

レコードの集合を引数として Mondrian 関数を呼び出すことで開始される.

Mondrian関数はまず Rを分割可能であるかどうかを判定する (2行目).前述

した図 4.2のように,k レコード以上のグループに 2分割可能な次元が存在しな

ければ分割できない.もし R が分割不可能であれば,そこに含まれる全てのレ

コードを 1つのグループとして返却する (3行目).そうでなければ R をさらに

Page 93: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

4.3 事前準備 81

アルゴリズム 7 Mondrian1: function Mondrian(R)2: if Rは分割不可能 then3: return {R}

4: d← Rを k レコード以上のグループに 2分割可能な次元5: m← dに関する Rの中央値

6: P ← { r ∈ R | r[d] ≤ m }7: Q← { r ∈ R | r[d] > m }8: return Mondrian(P ) ∪Mondrian(Q)

分割するため,分割する次元を決定する (4行目).k レコード以上のグループに

分割可能な次元が複数存在する場合は,Rに含まれる値の幅が最も大きい (最小

値と最大値の距離が最大であるような)次元を選ぶ.次に分割する次元に関して

Rの中での中央値を探す (5行目).中央値で分割することにより 2つの分割に含

まれるレコード数が均等に近くなる.最後に,中央値より大きいレコード群と小

さいレコード群の 2つのグループを作成し (6, 7行目),それぞれについて再帰的

にMondrian関数を適用した結果の和集合を返却する (8行目).

4.3.2 情報損失指標

ミクロアグリゲーションにおける情報損失の指標としては sum of squared

errors (SSE)を total sum of squares (SST)で割った値 SSE/SSTが広く用いら

れている [26, 47, 74, 86].そのため本研究でも同じ指標を用いる.SSEはグルー

プ内のデータがどの程度似通っている (同質である) かを表し,次のように定義

される.

SSE =g∑

i=1

ni∑j=1

(xij − xi)2. (4.1)

ただし g は構成されたグループの数,ni は i番目のグループの要素数,xij は i

番目のグループの j 番目のレコード,xi は i番目のグループに属するレコード値

の平均を表す.SSE が小さいほどグループ内のデータの同質性は高い.さらに

Page 94: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

82 第 4章 最近傍グラフを用いた k-匿名化

グループ間のデータの差異の大きさを treatment sum of squares (SSA)として

次のように定義する.

SSA =g∑

i=1ni(xi − x)2. (4.2)

ただし xは匿名化対象レコードすべてのデータの平均である.SSEと SSAの和

として SSTを次のように定義する.

SST = SSE + SSA =g∑

i=1

ni∑j=1

(xij − x)2. (4.3)

最適な k-分割とは SSE を最小化する (同時に SSA を最大化する) ことなので,

[0, 1] に正規化された情報損失は SSE/SST で表される.k-分割が最適に近いほ

ど SSE/SSTは小さくなる.

最適な k-分割の作成は NP困難である [74]ため,ヒューリスティクスが用い

られる.提案手法もまたヒューリスティクスである.

4.4 提案手法

本節では k-分割のためのクラスタリングアルゴリズムである友引法と,空間

分割とクラスタリングを併用した k-分割について詳しく説明する.友引法は情

報損失を減少させ,空間分割の併用は計算量を下げることから,これらを組み合

わせることで低情報損失かつ高速な匿名化が可能となる.

4.4.1 最近傍グラフを用いたクラスタリング

友引法の処理は 2段階に分けられる.即ち,友引法はまず最近傍グラフを構築

することで連結成分としてレコードのクラスタを発見する.次に連結成分を頂点

数 k 以上の小さいグループへ分割することで k-分割を作成する.以降ではこれ

ら 2段階の処理について順に詳しく説明する.

グラフの構築では,レコードを頂点とみなし,近傍に存在する頂点同士の間に

エッジを追加する.なおエッジの向きは考慮しない.近傍点を接続したグラフと

Page 95: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

4.4 提案手法 83

アルゴリズム 8 (k, m)-近傍グラフの構築入力: レコードの集合 R,匿名化のパラメータ k,グラフ構築のパラメータm.

出力: (k, m)-近傍グラフ G

1: G← (R, ∅) ▷ レコードを頂点としエッジのないグラフ

2: repeat3: C ← {Gc ∈ G内の連結成分 | |V (Gc)| < k }4: for each Gc ∈ C do5: V (Gc)と V (G) \ V (Gc)の間で最近傍の頂点m組を G上で接続

6: until C = ∅

しては,各頂点をその最近傍にある k 頂点と接続した k 近傍グラフ [28]が知ら

れている.k 近傍グラフと k-匿名性は同じ k を用い混乱を招くため,ここでは

k 近傍グラフを m近傍グラフと呼ぶことにする.友引法の第 2段階では連結成

分を分割することで k-分割を作成するため,構築されるグラフの連結成分は全

て k 頂点以上を含む必要がある.しかしm < k のとき,m近傍グラフでは k 頂

点未満の連結成分が生じ得る.そこで,友引法では k 頂点未満の連結成分がな

くなるまでエッジの追加を繰り返すことで構築される (k, m)-近傍グラフを用い

る.具体的な構築手順をアルゴリズム 8 に示す.ただし V (G) と E(G) はそれ

ぞれグラフ Gに含まれる頂点の集合とエッジの集合を表す.アルゴリズムはレ

コードの集合 Rに加え,k-匿名化の k と,最近傍グラフ構築のパラメータmを

受け取る.初期状態のグラフ G はレコードを頂点としエッジを含まない (1 行

目).まずアルゴリズムはそのグラフから k頂点未満の連結成分を抽出する (3行

目).次に,各連結成分 Gc に含まれる頂点 v ∈ Gc と連結成分に含まれない頂

点 v′ ∈ V (G) \ V (Gc)の組み合わせ (v, v′)のうち,最も近傍にあるm組の間に

エッジを追加する (5行目).このような処理を k頂点未満の連結成分がなくなる

まで繰り返す (6行目).以上のようにエッジを追加することで,全ての連結成分

が k 頂点以上含むグラフを構築することができる.

次に友引法の第 2 段階の処理であるグラフの分割を説明する.グラフの分割

では (k, m)-近傍グラフの連結成分を k 頂点以上のさらに小さいグループへ分割

Page 96: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

84 第 4章 最近傍グラフを用いた k-匿名化

アルゴリズム 9 グラフの分割 (Partition関数)入力: (k, m)-近傍グラフ G,匿名化のパラメータ k

出力: k-分割の結果 (レコードの集合の集合)1: function Partition(G)2: return

∪Gc∈G 内の連結成分PartitionCC(Gc)

3: function PartitionCC(Gc)4: if |V (Gc)| < 2k then5: return {V (Gc)}

6: G1 ← Gc

7: v ← Gc 上でランダムに選んだ頂点から最も遠い頂点

8: loop9: G1 から v を切除し,さらに k 頂点未満の連結成分も取り除く

10: G2 ← Gc から V (G1)を除いたグラフ11: if |V (G2)| ≥ k then12: break13: v ← Gc における V (G2)の隣接頂点で V (G2)の重心に最も近い頂点

14: if V (G1) = ∅ then15: return {V (Gc)}

16: return Partition(G1) ∪Partition(G2)

する.この際グラフの連結成分を利用してクラスタ構造を捉える点が友引法の

特徴である.(k, m)-近傍グラフでは近傍の頂点が接続されていることから,近

傍に存在するレコードの集団は互いに密に接続された連結成分として抽出され

る.この性質を利用し情報損失の小さいグループを形成するため,k 頂点以上の

グループとなるまで次の 2 つの処理を繰り返す.まず形成中のグループの重心

から最も近傍にある頂点をグループに追加すると共に,連結成分から切除する.

このとき,切除された頂点を経由して大きい連結成分に接続されていた頂点は別

の連結成分に分離される.そこで,次に k頂点未満の連結成分をグループに追加

する.これにより密に接続された頂点を一つのグループに含めることができる.

詳細な処理の手順をアルゴリズム 9に Partition関数として示す.Partition

Page 97: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

4.4 提案手法 85

関数は (k, m)-近傍グラフ G に含まれる各連結成分に対して PartitionCC 関

数を適用した結果を集約して返却する.PartitionCC関数は連結成分 Gc を k

頂点以上の 2 つのサブグラフ G1 と G2 へ再帰的に分割する.処理は G1 = Gc

から開始し,徐々に G1 から G2 へ頂点を移動することによって行われる.ま

とまりの良い連結成分へ分離するため,移動は Gc の端にある頂点から開始す

る.具体的には,Gc 内でランダムに選んだ頂点から最も遠い頂点を選び,v と

置く (7 行目).次に,G1 から v を切除し,それによって生成された k 頂点未

満の連結成分も取り除く (9 行目).Gc から V (G1) を除いたグラフは G2 と置

く (10 行目).G2 の頂点数が k 以上になった場合はループを抜ける (11, 12 行

目).そうでない場合は,V (G2) の重心に最も近い頂点を v と置き直し,もう

一度ループする (13 行目).重心から遠い頂点に対する無駄な計算を避けるた

め,重心の最近傍点は V (G2)の隣接頂点から探す.V (G2)の隣接頂点集合とは

{ v | (u, v) ∈ E(Gc), u ∈ V (G2), v ̸∈ V (G2) } である.この手順を繰り返すと,

k 頂点未満の連結成分の除去 (9 行目) において G1 の頂点がなくなる場合があ

る.その場合は Gc を分割せずそのまま返却し (15 行目),そうでなければさら

に分割できる可能性があるため,再帰する (16行目).友引法は以上のような分

割によって情報損失の少ない k-分割を得る.

アルゴリズムの流れを図 4.3を用いて説明する.ただしm = 2, k = 3とする.

まずアルゴリズム 8により構築される (k, m)-近傍グラフが図 4.3(a)である.図

4.3(a)の左下の連結成分は 2k 頂点未満なのでこれ以上分割されず,そのまま一

つのグループとなる.グループとなった頂点は取り除き,図 4.3(a) の大きい連

結成分の分割だけを考える.グループ形成の始点が右下の頂点になったとする

と,最初に最近傍の 2頂点が収集されグラフから取り除かれる (図 4.3(b)).次に

その 2 頂点の重心から最も近い頂点を収集する (図 4.3(c)).これにより頂点数

2の連結成分ができるため,それも同じグループに含める.結果として図 4.3(c)

の右下点線で囲われた頂点が一つのグループとなる.同様にしてグループに含ま

れない頂点がなくなるまでグループの作成を繰り返す.最終的に作成される k-

分割の一例は図 4.3(d) である.グループ形成の始点がどのように選ばれるかに

よって分割結果は変化するため,結果は一意に定まらない.図 4.3(c) に見られ

Page 98: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

86 第 4章 最近傍グラフを用いた k-匿名化

(a) (k, m)-近傍グラフ (b) 成長中のグループ

(c) グループ完成 (d) 最終的にできる k-分割

図 4.3: 友引法の過程

るように連結成分から切除した頂点と接続されている頂点 (友人)も一緒に切除

されることから,本研究ではこのアルゴリズムを友引法と呼んでいる.

4.4.2 空間分割とクラスタリングの併用

空間分割とクラスタリングの併用は,具体的には次の 2段階の処理によって行

われる.

1. 粗粒度分割 パラメータ k♯ (k♯ ≥ k)を受け取り,空間分割によってレコード

全体を k♯ レコード以上含むグループへ分割する.

2. 細粒度分割 粗粒度分割で得た各グループに対してさらにクラスタリングに

基づく分割を行い,k-分割を作成する.

本章では粗粒度分割時の分割手法としてMondrianを用いるが,Iwuchukwuら

による R-treeベースの手法 [48]等を用いることもできる.ただし格子状に空間

Page 99: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

4.4 提案手法 87

(a) 与えるレコード (b) 粗粒度分割後 (c) 細粒度分割後

図 4.4: 空間分割とクラスタリングを併用した匿名化の過程 (k = 2, k♯ = 4)

を分割するアプローチは匿名化に適さない.理由は 2つある.まず k♯ レコード

未満の空間が作成されてしまう可能性がある.さらに各空間に含まれるレコード

の数に偏りが生じる可能性がある.細粒度分割では計算量 O(n2) 以上であるア

ルゴリズムの利用を想定しているため,全体の計算量を最小化するため粗粒度

分割で作られるグループはなるべく均等な数のレコードを含むことが望ましい.

Mondrian を併用して k-分割を行う過程の例を図 4.4 に示す.図 4.4(b) では空

間分割によって 4 レコード以上含むグループへ分割され,図 4.4(c) ではクラス

タリングによって 2レコード以上のグループへ分割されている.

クラスタリングによる匿名化に空間分割を併用する利点は 3つある.第 1に,

小さい情報損失と高速な処理を両立できる.匿名化は実用上 k = 5 程度の利用

が多い [29].そのためレコード全体の大域的分布を考慮せず,粗粒度分割で作ら

れたグループに含まれる局所性なレコードの分布のみ考慮して k-分割を行った

としても情報損失への影響は限定的である.第 2 に,情報損失と処理時間のど

ちらを優先するか,利用時の状況に応じて連続的に調整できる.小さい情報損失

と高速な処理を両立する中でも k♯ の大きさによって結果は変化する.大きい k♯

では空間分割の特徴が強く現れ高速・高情報損失になる.逆に小さい k♯ ではク

ラスタリングの特徴が現れ低速・低情報損失となる.第 3に,メモリに格納しき

Page 100: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

88 第 4章 最近傍グラフを用いた k-匿名化

れないほど巨大なデータに対する k-分割処理を高速化できる.細粒度分割時は

粗粒度分割で生成されたグループを一つずつ処理するため,処理中でないグルー

プはストレージ上へスワップアウトできる.また,buffer tree [4, 24] を用いる

ことにより,空間分割で巨大なデータを扱う際の I/O 効率を高められることが

Iwuchukwuらによって指摘されている [48].

4.4.3 定性的議論

友引法と空間分割併用のそれぞれについて,入力データおよびパラメータに対

する振る舞いを分析するため計算量を求める.なお,空間分割の併用では本研究

の提案である友引法と組み合わせた場合について分析を行う.

友引法

n レコード含むデータを k-分割する場合について考える.議論をシンプルに

するため,kは nの約数とし,全てのグループが kレコードを含むように分割さ

れるものとする.友引法は (k, m)-近傍グラフの構築とその分割という 2段階に

分けることができる.まずグラフの構築では,各連結成分の大きさが k頂点以上

となるように最近傍の m頂点と接続する.連結成分の大きさはエッジ追加の際

に 2つの連結成分の大きさの和を求め随時更新することで得られる.一方最近傍

の連結成分を発見するために全頂点間で距離の計算が必要になる.従ってグラフ

構築の計算量は O(n2)である.

次にグラフの分割について考える.Partition関数 (アルゴリズム 9)に示さ

れているように,分割は連結成分ごとに行う.ある連結成分 Gc が与えられたと

きの分割処理は PartitionCC 関数が行う.この関数内で計算量に注目すべき

処理は次の 3つである.1つ目は 7行目のランダムに選んだ頂点から最も遠い頂

点の選択である.最も遠い頂点の探索は Gc の全頂点が対象になるため,計算量

は O(|V (Gc)|)である.2つ目は 9行目における連結成分の検出である.DFSに

よる連結成分検出の計算量は O(|V (Gc)|+ |E(Gc)|)である.3つ目は 13行目に

おける重心に最も近い頂点の探索である.ここではグラフ構造に基づき,V (G2)

の隣接頂点の中から探索を行う.ここでは全てのグループが k 頂点含むように

Page 101: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

4.4 提案手法 89

分割される場合を考えているため,G2 の頂点数は最大で k である.従って Gc

の平均次数を dとおくとグループの隣接頂点数は O(dk)である.以上の処理を

最大 k 回繰り返すことでグループを 1つ作成する.G2 はちょうど k 頂点を含む

ので,16 行目の Partition(G2) の呼び出しはこれ以上再帰しない.従って連

結成分 Gc 内で 1つのグループを分割するための計算量は次のとおりである:

O (k (|V (G)|+ (|V (G)|+ |E(G)|) + dk)) = O (k (|V (G)|+ |E(G)|)) .(4.4)

この変形では dk ≤ |V (G)|を利用している.式 4.4から読み取れるように,1つ

のグループの分割はグラフサイズに対して線形の計算量である.従って,ここま

で 1 つの連結成分 Gc について考えてきたが,グラフ全体 G についても同様に

計算量を考えることができる.グラフ全体では頂点数 n であり,また最近傍の

m 頂点と接続しているのでエッジ数は最大で mn である.従ってグラフ全体か

ら 1つのグループを分割する計算量は

O (k (n + mn)) = O (kmn) (4.5)

となる.グループは nk 個作成されるので,全体の計算量は次のとおりである.

O(

kmnn

k

)= O

(mn2)

. (4.6)

この計算量は (k, m)-近傍グラフのエッジ数を最悪ケースである mnと見積もる

ことで得られている.しかし実際には 2 つの頂点が相互にエッジを張り 1 つの

エッジに統合される場合があるため,実際にはこれよりも小さい計算量になると

考えられる.

空間分割の併用

Mondrian による粗粒度分割で k♯ レコードを含むグループへ分割し,その

後各グループ内に友引法を適用して k-分割を作成する場合について考える.議

論をシンプルにするため,k♯ は n の約数であり,粗粒度分割ではちょうど k♯

レコードのグループへ分割できるものとする.k-分割処理全体の計算量は粗粒

度分割と友引法それぞれの計算量の和である.まず粗粒度分割の計算量を考え

Page 102: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

90 第 4章 最近傍グラフを用いた k-匿名化

る.Mondrian で 1 回分割するときの計算量は O(n) である [61].分割の度に

グループの数は 2 倍になる.分割を繰り返し nk♯グループを作成するので,粗

粒度分割の計算量は O(

n log nk♯

)である.次に友引法の計算量を考える.粗粒

度分割の結果 k♯ レコードを含むグループが nk♯個作られているので,計算量は

O(

nk♯

mk2♯

)= O (nmk♯)である.以上より空間分割を併用した場合の計算量は

次のように求められる:

O

(n log n

k♯+ nmk♯

)= O

(n

(log n

k♯+ mk♯

)). (4.7)

ここで k♯ に対する振る舞いを見るために nとmを定数とみなすと,

O

(n

(log n

k♯+ mk♯

))= O (− log k♯ + k♯) (4.8)

= O (k♯) (4.9)

となる.つまりmを固定して同じデータを匿名化する限りは k♯ に線形に計算量

が増加することが分かる.

4.5 評価

実際にいくつかのデータセットを匿名化し,友引法および空間分割併用の効

果を情報損失と処理速度の観点で既存手法と比較する.実験に使用した計算機

の CPUは Intel Core i7-4770K 3.50GHz,メモリは 32.0GBである.実験用プ

ログラムの実装には Haskell を用いた.実験に使用した統計データを表 4.5 に

示す.Census, EIA, Tarragona はミクロアグリゲーションの,Adult は k-匿

名化の既存研究においてそれぞれデファクトスタンダードのデータセットであ

る [6, 12, 27, 49, 58, 60, 61, 64, 86]. Census と Tarragona は配布データに含ま

れる全ての属性を用いる.EIAからは UTILITYID, UTILNAME, YEARの 3

属性を除く.UTILITYIDと UTILNAMEは個人 (団体)を特定する一意な識別

子であり,YEAR は全レコードで同一の値を持つためである.Adult は既存研

究 [6,49,61]に倣い,次の 8属性を用いる:age, work class, education, marital

status, occupation, race, gender, native country.カテゴリ値には適当な数値

Page 103: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

4.5 評価 91

表 4.5: 匿名化するデータセット

名前 レコード数 属性数

Census*1 1080 13EIA*1 4092 12

Tarragona*1 834 13Adult [25] 30162 8

Random (一様分布) 3000 2

表現を与えた上で,各データセットのそれぞれの属性について,データセット中

に登場する値の最大値が 1.0,最小値が 0.0となるように正規化する.値の範囲

が大きいレコードがあるとその属性がレコード間距離の算出において支配的に

なってしまうためである.比較対象のアルゴリズムには V-MDAVを使用する.

V-MDAVはミクロアグリゲーションの研究で手法のベースや比較対象としてし

ばしば使用されている [46, 50, 54, 68].さらに友引法と同様生成されるグループ

の数が可変であるため,比較に適している.グループの大きさ k は実用上 k = 5

の利用が多い [29]ことから,実験でも特に指定がない限り k = 5を使用する.

評価は友引法に次いで空間分割併用の順序で行う.空間分割併用の評価には併

用するためのクラスタリング手法が必要となるため,先にクラスタリング手法で

ある友引法を単独で評価し,その性能を明らかにする.その後に,空間分割併用

によって情報損失と処理速度がどのように変化するかを評価する.

4.5.1 友引法の評価

まず空間分割を併用せず友引法単体の性能を評価する.

mの最適値

友引法ではグラフの構築時に各頂点を接続する最近傍頂点の数 mを受け取り

(k, m)-近傍グラフを構築する.mの値によって構築されるグラフの構造が変化

*1 http://neon.vb.cbs.nl/casc/CASCtestsets.htm

Page 104: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

92 第 4章 最近傍グラフを用いた k-匿名化

0

0.2

0.4

0.6

0.8

1

1 2 3 4 5 6 7 8 0

2

4

6

8

10

12

14

16

18

20

Information Loss (relative)

Time (relative)

m

Census (loss)EIA (loss)

Tarragona (loss)Adult (loss)

Random (loss)

Census (time)EIA (time)

Tarragona (time)Adult (time)Random (time)

図 4.5: mに対する情報損失と処理時間

するため,k-分割の結果も変化する.最適な mを探すため,mの値を変化させ

つつ各データセットの匿名化で生じる情報損失と実行時間を調査した.結果を

図 4.5に示す.データセットごとの差異が大きいため,各データセットについて

m = 1 で得られる値を 1 として情報損失と実行時間を正規化した.実行時間は

いずれのデータセットでもmの値と共に増加している.mが大きいほど (k, m)-

近傍グラフが多くのエッジを含むようになり,グラフ構造の処理コストが増大

するためである.特に Tarragona, Adult, Randomはほぼmに対して線形に増

加しており,4.4.3節で明らかにした友引法の計算量 O(mn2)に符合する結果と

なった.一方,情報損失は m = 3までに大きく減少し,そこからはデータセッ

トごとに差はあるものの小幅の増減が続いている.グループに追加する頂点はグ

ループの隣接頂点から選択されるため,m が大きいほど隣接頂点の数が増加し

選択肢が広がる.そのため,1 ≤ m ≤ 3 の間では選択肢の増加によってまとま

りの良いグループを作成しやすくなり,情報損失が減少したと考えられる.しか

し実験結果ではm < 3においてほぼ情報損失が減少していないため,m = 3の

時点でほとんどのデータセットにおいて十分な選択肢が存在していることが分か

Page 105: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

4.5 評価 93

0

0.02

0.04

0.06

0.08

0.1

0.12

3 5 7 10

Information Loss

k

Census

V-MDAV(0.2) (loss)

V-MDAV(1.1) (loss)

Tomobiki (loss)

0

0.01

0.02

0.03

0.04

0.05

0.06

3 5 7 10

Information Loss

k

EIA

V-MDAV(0.2) (loss)

V-MDAV(1.1) (loss)

Tomobiki (loss)

0

0.05

0.1

0.15

0.2

0.25

0.3

0.35

3 5 7 10

Information Loss

k

Tarragona

V-MDAV(0.2) (loss)V-MDAV(1.1) (loss)

Tomobiki (loss)

0

0.005

0.01

0.015

0.02

0.025

0.03

0.035

3 5 7 10

Information Loss

k

Adult

V-MDAV(0.2) (loss)

V-MDAV(1.1) (loss)

Tomobiki (loss)

0

0.0005

0.001

0.0015

0.002

0.0025

0.003

0.0035

0.004

3 5 7 10

Information Loss

k

Random

V-MDAV(0.2) (loss)

V-MDAV(1.1) (loss)

Tomobiki (loss)

図 4.6: k に対する情報損失量の変化

る.全データセットで最小の情報損失を示す共通の m は見つからないものの,

mを大きくするにつれ実行時間が増大することも踏まえるとm = 3が標準のパ

ラメータとして適当であると言える.

Page 106: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

94 第 4章 最近傍グラフを用いた k-匿名化

情報損失

次に,データセット毎にグループの大きさ k を変化させ情報損失の大きさを

比較した.文献 [86] にならい,比較対象である V-MDAV に与えるパラメータ

γ は 0.2 と 1.1 を用いた.また最高の性能を調査するため (k, m)-近傍グラフの

mはデータセット毎に最適値を用いた.即ち Censusは 5,EIAと Randomは

4,他は 3である.結果を図 4.6に示す.全体の傾向として k が大きいほど情報

損失も大きい.グループに含まれるレコードが多いほど値の分散も大きく,平

均値で置き換えたときに値の変動が大きいためである.また情報損失量は使用

するデータセットによって大きく異なる.レコードの属性数が少ない Adult と

Randomは比較的情報損失が小さく,属性数 12または 13である他のデータセッ

トは大きい.この差は次元の呪い [1]によって属性数が多いほどレコード間の距

離が遠くなることの影響と考えられる.友引法の性能に着目すると,多くのデー

タセットにおいて V-MDAVより小さい情報損失量となっている.特に EIAの

k = 3では V-MDAV (γ = 0.2)と比べ約 16%情報損失を減少させている.一方

で Tarragonaの k ≥ 5では V-MDAV (γ = 0.2)よりも友引法の情報損失が大き

い.Tarragonaは Censusと比べ疎なデータの分布になっていることが指摘され

ている [14].友引法はグラフの構築を通じてレコードのクラスタを発見しようと

しているが,疎なデータ分布のためにクラスタを発見できないことが情報損失増

大の原因となっている可能性がある.

レコード数に対する実行時間の変化

友引法のスケール性を評価するため,Adultデータセットの一部を用い,処理

対象のレコード数に対する実行時間の変化を調査した (図 4.7).ただし m = 3

である.レコード数 nに対し O(n2)である V-MDAVと沿うように友引法も実

行時間が増加している.従って友引法も n2 に比例して計算時間が増大している

と考えられる.この振る舞いは 4.4.3節で得た計算量 O(mn2)とも符合する.

Page 107: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

4.5 評価 95

0

20

40

60

80

100

120

140

160

180

2000 4000 6000 8000 10000

Time [sec]

# of records

V-MDAV(0.2) (time)

V-MDAV(1.1) (time)

Tomobiki (time)

図 4.7: レコード数に対する情報損失と処理時間の変化

4.5.2 空間分割併用の評価

次に空間分割と友引法を併用した場合の情報損失と実行時間について調査し

た.便宜上空間分割を併用する友引法を友引 ♯と呼ぶことにする.データセット

はレコード数が多い EIAと Adultを用いた.Mondrianのみ用いた場合,およ

び空間分割によって作られる空間のレコード数 k♯ を 5から各データセットのレ

コード数まで変化させた場合の結果を図 4.8に示す.横軸左端のMondrianは最

も大きい情報損失を示す一方,最も高速である.そこから横軸右へ向かって k♯

が増大するにつれ徐々に友引法の影響が支配的となり,処理時間が延びる代わり

に情報損失は減少していく.AdultではMondrianよりも k♯ = 5の場合の情報

損失が小さい.これはMondrianのみの場合図 4.2のように 2k レコード以上含

むグループが作られ得るが,k♯ = 5 では友引法によってそのようなグループを

さらに分割できるためである.k♯ がデータセットのレコード数と等しい場合 (横

軸右端)は一切空間分割が行われず,全て友引法で処理される.そのため情報損

失は最小となるが,同時に処理時間は最大となる.計算時間は k♯ に対してほぼ

Page 108: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

96 第 4章 最近傍グラフを用いた k-匿名化

0

0.01

0.02

0.03

0.04

0.05

0.06

0.07

Mondrian

5 10

20

40

80

1603206401280

4092

0

5

10

15

20

25Information Loss

Time [sec]

k#

EIA

Loss Time

0

0.05

0.1

0.15

0.2

0.25

0.3

Mondrian

5 102040801603206401280

2560

5120

10240

30162

0

100

200

300

400

500

600

700

800

900

1000

Information Loss

Time [sec]

k#

Adult

Loss Time

図 4.8: k♯ に対する情報損失と処理時間の変化

線形に増加しており,この振る舞いは 4.4.3節で得た計算量 O(k♯)と符合する.

k が小さい場合,レコード全体を見ずに近傍にあるレコードにのみ着目しても

良い k-分割が可能である,という仮説が空間分割の併用の基にあるアイデアで

ある.そこで空間分割の粒度と情報損失の観点で図 4.8 を見ると,この仮説に

従った結果を得ることができている.細かい数値での比較のため EIAにおいて

Page 109: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

4.6 結論 97

表 4.6: EIAデータセットにおける友引 ♯と V-MDAVの比較

アルゴリズム 情報損失 処理時間 [秒]友引 ♯ (k♯ = 5) 0.0617 0.0776友引 ♯ (k♯ = 320) 0.0233 2.47友引 ♯ (k♯ = 4092) 0.0211 23.5

Mondrian 0.0617 0.0400V-MDAV (γ = 0.2) 0.0240 25.0V-MDAV (γ = 1.1) 0.0311 40.0

特徴的な点の値を表 4.6 にまとめた.空間分割を用いない場合 (k♯ = 4092) と

k♯ = 320における情報損失はそれぞれ 0.0211と 0.0233であり,ほぼ変化がな

い.一方で処理時間はそれぞれ 23.5秒と 2.47秒であるため,k♯ = 320では情報

損失の変化を抑えつつ空間分割の併用により約 10 倍の高速化を達成している.

また V-MDAV との比較では,V-MDAV (γ = 0.2) で 25.00 秒かかった情報損

失量 0.0240を友引 ♯は k♯ = 320において 2.47秒で実現しており,こちらも約

10倍高速である.

以上のように,友引法は多くのデータセットにおいて既存手法よりも小さい情

報損失を示し,さらに友引 ♯は空間分割の併用によって情報損失の増大を抑えつ

つ大幅な高速化が可能であることを確認できた.

4.6 結論

プライバシ保護のため k-匿名化が利用されている.これまでクラスタリング

に基づく手法と空間分割に基づく手法が k-匿名化のために提案されてきたが,前

者は情報損失が大きく,後者は処理が遅い.そこで本研究では 2 つの手法を提

案した.1つ目は,最初にレコードを頂点とするグラフを構築することでクラス

タ構造を捉える新しい k-分割アルゴリズムの友引法である.2つ目は,空間分割

を併用することにより,クラスタリングに基づく手法が持つ情報損失の少なさを

保ちつつ匿名化処理を高速化する手法である.実際の統計データを用いた実験に

Page 110: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

98 第 4章 最近傍グラフを用いた k-匿名化

より,友引法は既存手法と比べ最大 16%情報損失を減少させることが分かった.

さらに空間分割を併用することで既存手法と同等の情報損失のデータを約 10倍

高速に得ることができた.

本研究において匿名化手法はクラウド環境上でパーソナルデータを利用するた

めに利用される.そのため,匿名化時の情報損失が小さいことはクラウド上での

グラフクエリ処理自体の有用性に関わる.また,匿名化はデータ所有者の計算環

境で行われるため,限られた計算資源で大量のデータを処理できなければならな

い.提案手法はこのような要求条件を小さい情報損失と高速な処理の両立によっ

て達成した.提案手法の大きな特徴の一つは,表形式のデータを入力としつつ

も匿名化のためにグラフを利用することである.4.1節で示したように,プロパ

ティグラフはパーソナルデータに着目すると表として捉えることができる.その

ため本章では k-匿名化の研究としてより一般的な表形式のデータを題材に手法

の説明と評価を行った.一方で,提案手法は表形式のデータからグラフ ((k, m)-

近傍グラフ) を再構築する.このことは情報損失の削減に役立つと同時に,第

2 章のリオーダリング手法を適用することによる局所性向上の余地を生んでい

る.(k, m)-近傍グラフは匿名化処理時に作成されるグラフであるため,処理中

に直ちにリオーダリングする必要がある.従って高速なリオーダリングが可能な

Rabbit Orderにとって特に適した用途であると言える.

将来の課題としてはパラメータフリー化が挙げられる.空間分割の併用では

k♯ をパラメータとして指定する必要がある.また,友引法で使用する (k, m)-近

傍グラフの mや V-MDAVの γ のように,グループ内のレコード数が可変であ

るような k-分割アルゴリズムはパラメータを持っている.最適なパラメータを

推定する技術や,パラメータを受け取らずに多様なレコード分布のデータに対応

できるアルゴリズムが必要である.

Page 111: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

99

第 5章

結論と今後の課題

5.1 本論文のまとめ

大規模なグラフデータを活用するため,本論文ではクラウド上の計算資源を利

用した高速なクエリ処理を実現する手法について議論した.

第 1 章では本研究が取り組む研究の背景と目的を説明した.グラフは柔軟性

と表現力が高いデータ形式であり,実世界の様々な場面で利用されている.特に

グラフに対するサブグラフマッチングクエリは最も典型的なクエリである.クラ

ウド環境の計算資源は大規模なグラフをインメモリで処理するために有用である

ことから,本研究ではクラウド環境上のグラフクエリ処理に焦点を当てることを

説明した.ただしクラウド環境ではパーソナルデータの利用にリスクと規制が存

在するため,本研究では匿名加工情報と高速なクエリ処理エンジンをクラウド環

境に配置し,クラウド環境上でクエリ処理を行うという枠組みを用いることを述

べた.

第 2章では,グラフ処理全般において性能上の足枷となる局所性の低さを改善

するためのリオーダリング手法を提案した.グラフ分析におけるメモリアクセス

の局所性を向上させるため,リオーダリングによってデータ配置を事前に最適化

するアプローチが広く用いられている.しかしながら既存のアルゴリズムは効果

的な頂点順序の生成に長い時間を要するため,リオーダリングと後続のグラフ分

析を合計した全体の処理時間をむしろ増加させてしまうという問題がある.本章

Page 112: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

100 第 5章 結論と今後の課題

において全体の処理時間を短縮するための並列リオーダリングアルゴリズムであ

る Rabbit Orderを提案した.Rabbit Orderは高い局所性と高速なリオーダリ

ングを同時に達成するとともに,効率的な並列処理により高いスケーラビリティ

を示す.実験の結果,全体処理時間の観点で Rabbit Orderは平均 2.2倍グラフ

分析を高速化することが確認された.

第 3 章ではグラフクエリ処理における無駄な探索を削減するため,効果的な

枝刈りを行うサブグラフマッチングアルゴリズムを提案した.サブグラフマッチ

ングの解法としてはバックトラッキングによる探索が一般的である.即ち前のス

テップで得られた部分的な埋め込みを基に新しい埋め込みを生成する手続きを再

帰的に適用することで完全な埋め込みを発見する.探索中,完全な埋め込みに到

達しないことが判明した部分埋め込みは探索失敗として破棄される.既存のサブ

グラフマッチング手法はグラフの構造を分析する前処理によってバックトラッキ

ングの探索範囲を狭めることで失敗を削減してきた.しかし前処理は単純なルー

ルに基づいているため,削減可能な失敗は限定的である.本章では,「失敗から

学ぶ」サブグラフマッチングアルゴリズムを提案した.提案手法はバックトラッ

キングの最中に探索失敗の履歴から失敗となる部分埋め込みのパターンを抽出す

る.そしてパターンに符合した部分埋め込みを早期に破棄することで余分な探索

を枝刈りする.実験の結果提案手法は既存手法比で最大 4桁高速であることが確

認された.

第 4 章では,クラウド環境へアップロードする匿名加工情報を小さい情報損

失で高速に作成するための k-匿名化手法を提案した.k-匿名化のためには与え

られたレコードの集合を k レコード以上から成るグループの集合へと分割する

必要がある.その際,データの変換で生じる情報損失を抑えられるようなグルー

プを高速に作成できることが望ましい.これまで空間分割に基づく分割手法とク

ラスタリングに基づく分割手法が提案されてきたが,これらは小さい情報損失と

高速な処理を両立できていない.本章では 2つの手法を提案した.1つ目は,レ

コードを頂点とするグラフの構築によりクラスタを捉え,情報損失の小さい分割

を作成するアルゴリズムである.2つ目は,小さい情報損失と高速な処理を両立

するための,空間分割とクラスタリングの併用である.2つの手法を組み合わせ

Page 113: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

5.2 今後の課題 101

ることで,既存手法と比べ最大 10倍高速に情報損失の小さい分割を作成可能で

あることが確認された.

パーソナルデータの匿名化を通じて安全にクラウド環境を利用するという枠組

みは新しいものではない [82].本研究の貢献として本質的なのは,その枠組みに

おいてグラフクエリを可能にするにあたり必要となる要素技術について効率的な

アルゴリズムを提案したことである.情報社会で生み出されるデータはますます

増加している.グラフ表現を用いることでデータに含まれる事物を柔軟に関連付

けて蓄積することが可能である.しかし大規模なデータを蓄積するのみでは意味

がなく,そこから情報を得ることができなければならない.サブグラフマッチン

グによるグラフクエリはグラフから情報を得るための最も基礎的な技術である.

本研究の提案手法を用いることにより,データ所有者は手元にある大規模データ

を小さい情報損失で高速に匿名化し,クラウド上ではリオーダリングによって局

所性の向上したグラフに対する効率的な探索によってクエリを処理することがで

きる.手元の計算資源に縛られることなく大量の情報を活用していくために本研

究の成果は大きく貢献すると期待される.

5.2 今後の課題

データの規模およびそれを活用するために必要な計算資源の増大と呼応するよ

うに,クラウド環境で提供される計算機の性能も向上し柔軟性を増している.実

際に,AWSにおいて 12TBものメモリを搭載したインスタンスの提供が始まっ

たのは 2018年 9月末のことである*1.このような計算資源の活用が大規模デー

タの利用において重要であることは今後も変化しないと考えている.また個人

データに対する法的な規制も今後大幅に緩和されるとは考え難い.2017年施行

の改正個人情報保護法において匿名加工情報に対し自由度の高い利用が認められ

たことから,匿名化は個人データの利用において暗号化など他の安全確保手段と

は一線を画す技術となるだろう.以上のように本研究の背景となった状況は今後

*1 https://aws.amazon.com/jp/about-aws/whats-new/2018/09/introducing-amazon-ec2-high-memory-instances-purpose-built-to-run-large-in-memory-databases/

Page 114: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

102 第 5章 結論と今後の課題

も続いていくと考えられる.

このような状況に鑑み,本研究の今後の展開として考えられる課題は 3 つあ

る.1つ目は効率的な並列処理の実現である.1CPUコアあたりの性能向上は鈍

化傾向にあるため,並列処理の重要性はますます高まっている [77].また,クラ

ウドサービスにおいて大容量のメモリを搭載したインスタンスは同時に多くの

(仮想)コアを搭載している.例えば 2019年 1月時点では,パブリッククラウド

の主要なベンダである AWS, Microsoft, Googleにおいて 1TB以上のメモリを

搭載したインスタンスは少なくとも 64コアを備える*2.並列化は逐次処理アル

ゴリズムを基にしつつ,さらにコア間通信や並行性制御などのコストを考慮しな

がら行われる.そのため第 2章の提案手法に対して行ったように,まず効率的な

逐次処理アルゴリズムを確立し,次にそれを並列化するという 2段階のアプロー

チが効果的である.本研究ではサブグラフマッチングと匿名化について高速な逐

次処理アルゴリズムを提案した.そこで今後は第 2 段階としてこれらを並列化

し,計算資源の効果的な利用を可能にすることが課題である.

2 つ目は本研究で提案した手法を一つのシステムとして統合することである.

本研究はクラウド環境上のクエリ処理に必要とされる要素技術の確立を目的とし

ているため,各提案手法の位置づけを明確にしつつ,評価は個別に行った.提案

手法はそれぞれ本研究全体としての目的にとらわれない高い汎用性を持ち,単独

でも多くの利用シーンを持つ重要な技術である.しかしながらクラウド環境上の

クエリ処理を実際に行うためにはこれらを一体化して動作させる必要がある.ま

た一体化によって明らかになる新たな課題が存在する可能性もある.そこで提案

手法をインメモリグラフデータベースとして統合すると共に,その状態で評価を

行うことで本研究の貢献はより実用に寄り添ったものになると期待される.

3つ目は省メモリかつ効率的なグラフクエリ処理の検討である.本研究の枠組

みは大容量のメモリを搭載したクラウド上の計算環境を利用するために匿名化を

*2 AWSの x1e.16xlargeは 64コア (https://aws.amazon.com/jp/ec2/instance-types/x1e/),Microsoftの Standard_M64sも同じく 64コア (https://docs.microsoft.com/ja-jp/azure/virtual-machines/linux/sizes-memory),Google の n1-ultramem-80は 80コア (https://cloud.google.com/compute/docs/machine-types)を提供する.

Page 115: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

5.2 今後の課題 103

用いる.しかし匿名化はデータの変動を伴う.第 4 章の匿名化手法は変動を低

減するものの,多くの場合匿名化前のデータと匿名化後のデータではクエリの結

果が一致しない.従ってその差異を許容できない用途では本研究の枠組みを適用

することが困難である.低コストに大規模グラフの利用を可能にするためのアプ

ローチとしては,他にも外部メモリの利用やグラフの圧縮がある.外部メモリの

利用では,グラフデータの一部のみをメモリに格納し,その他を SSDのような

メモリよりも低速だが安価なストレージに格納する.グラフの圧縮では,メモリ

上のデータを圧縮したグラフに置き替えることで大規模グラフ処理のメモリフッ

トプリントを削減する.これらのアプローチの先行研究としては文献 [15, 80]が

あるが,非圧縮のグラフデータ全体をメモリに格納する場合と同等の性能の実現

は極めて挑戦的な課題である.なぜならば外部メモリの利用ではメモリにない

データへのアクセスが発生した際のレイテンシが大きく,グラフの圧縮では展開

のための計算時間が追加で生じるためである.しかし 2章のリオーダリングアル

ゴリズムによって局所性を向上させることで,メモリ上に存在するデータへのア

クセスを増やすことができる.また 3 章のサブグラフマッチングアルゴリズム

では探索の枝刈りによってグラフデータに対するメモリアクセスが削減される.

従ってメモリにグラフデータ全体を格納できない場合においても高い性能を達成

する余地はあると考えている.

Page 116: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International
Page 117: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

105

謝辞

本研究の実施にあたり,懇切なるご指導と格別のご高配を賜りました大阪大学

大学院情報科学研究科マルチメディア工学専攻 鬼塚真教授に謹んで御礼申し上

げます.本論文の執筆にあたり多数の有益なご助言をくださいました大阪大学大

学院情報科学研究科マルチメディア工学専攻 原隆浩教授,藤原融教授に心より

感謝申し上げます.講義,学生生活を通じて,学問に取り組む姿勢をご教授頂き

ました大阪大学大学院情報科学研究科マルチメディア工学専攻 松下康之教授,

下條真司教授に厚く感謝申し上げます.本研究を共に推進し,熱心にご指導くだ

さいました筑波大学計算科学研究センター 塩川浩昭助教,北海道大学産学・地

域協働推進機構 岩村相哲産学協働マネージャー,日本電信電話株式会社サービ

スイノベーション総合研究所 藤原靖宏特別研究員,山室健研究主任に深謝いた

します.研究環境の確保にご配慮,ご協力いただき,また学術と産業の両観点か

らご助言をくださいました日本電信電話株式会社サービスイノベーション総合研

究所 木原誠司主席研究員,飯田恭弘主任研究員,内山寛之主任研究員,及び同総

合研究所ソフトウェアイノベーションセンタ分散処理基盤技術プロジェクト分散

システムアーキテクチャ基盤グループの諸氏に御礼申し上げます.最後に,私の

これまでの人生,そして研究生活を送る上で暖かい支援と理解をいただきました

家族や友人,特に妻の真理に心から感謝いたします.

Page 118: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International
Page 119: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

107

参考文献

[1] Charu C. Aggarwal. On k-Anonymity and the Curse of Dimensionality.

In Proceedings of the 31st International Conference on Very Large Data

Bases, pp. 901–909, 2005.

[2] Kadir Akbudak, Enver Kayaaslan, and Cevdet Aykanat. Hypergraph

Partitioning Based Models and Methods for Exploiting Cache Locality

in Sparse Matrix-Vector Multiplication. SIAM Journal on Scientific

Computing, Vol. 35, No. 3, pp. C237–C262, 2013.

[3] Junya Arai, Hiroaki Shiokawa, Takeshi Yamamuro, Makoto Onizuka,

and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering

for Fast Graph Analysis. In Proceedings of the 30th IEEE International

Parallel and Distributed Processing Symposium, pp. 22–31, 2016.

[4] Lars Arge. The Buffer Tree: A New Technique for Optimal I/O-

Algorithms. In Selim G. Akl, Frank Dehne, Jörg-Rüdiger Sack, and

Nicola Santoro, editors, Algorithms and Data Structures, Vol. 955, pp.

334–345. 1995.

[5] David A. Bader, Henning Meyerhenke, Peter Sanders, Christian Schulz,

Andrea Kappes, and Dorothea Wagner. Benchmarking for Graph Clus-

tering and Partitioning. In Reda Alhajj and Jon Rokne, editors, Ency-

clopedia of Social Network Analysis and Mining, pp. 73–82. 2014.

[6] Roberto J. Bayardo and Rakesh Agrawal. Data Privacy through Op-

timal k-Anonymization. In Proceedings of the 21st IEEE International

Page 120: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

108 参考文献

Conference on Data Engineering, pp. 217–228, 2005.

[7] Fei Bi, Lijun Chang, Xuemin Lin, Lu Qin, and Wenjie Zhang. Efficient

Subgraph Matching by Postponing Cartesian Products. In Proceedings

of the 2016 International Conference on Management of Data, Vol. 1,

pp. 1199–1214, 2016.

[8] Paolo Boldi, Marco Rosa, Massimo Santini, and Sebastiano Vigna. Lay-

ered Label Propagation: A MultiResolution Coordinate-Free Ordering

for Compressing Social Networks. In Proceedings of the 20th Interna-

tional Conference on World Wide Web, pp. 587–596, 2011.

[9] Paolo Boldi and Sebastiano Vigna. The Webgraph Framework I: Com-

pression Techniques. In Proceedings of the 13th International Confer-

ence on World Wide Web, pp. 595–602, 2004.

[10] Vincenzo Bonnici, Alfredo Ferro, Rosalba Giugno, Alfredo Pulvirenti,

and Dennis Shasha. Enhancing Graph Database Indexing by Suffix Tree

Structure. In Proceedings of the 5th IAPR International Conference on

Pattern Recognition in Bioinformatics, pp. 195–203, 2010.

[11] Andrei Z. Broder. On the resemblance and containment of documents.

In Proceedings of the Compression and Complexity of Sequences 1997,

pp. 21–29, 1997.

[12] Ji-Won Byun, Ashish Kamra, Elisa Bertino, and Ninghui Li. Efficient

k-Anonymization Using Clustering Techniques. In Ramamohanarao

Kotagiri, P. Radha Krishna, Mukesh Mohania, and Ekawit Nantajee-

warawat, editors, Advances in Databases: Concepts, Systems and Ap-

plications SE - 18, Vol. 4443, pp. 188–200. 2007.

[13] Umit V. Catalyurek, Mehmet Deveci, Kamer Kaya, and Bora Ucar.

Multithreaded Clustering for Multi-level Hypergraph Partitioning. In

Proceedings of the 26th IEEE International Parallel and Distributed

Processing Symposium, pp. 848–859, 2012.

[14] Chin-Chen Chang, Yu-Chiang Li, and Wen-Hung Huang. TFRP: An

Page 121: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

109

Efficient Microaggregation Algorithm for Statistical Disclosure Control.

Journal of Systems and Software, Vol. 80, No. 11, pp. 1866–1878, 2007.

[15] Xiaoyang Chen, Hongwei Huo, Jun Huan, and Jeffrey Scott Vitter.

Efficient Graph Similarity Search in External Memory. IEEE Access,

Vol. 5, pp. 4551–4560, 2017.

[16] James Cheng, Yiping Ke, Wilfred Ng, and An Lu. Fg-index: Towards

Verification-free Query Processing on Graph Databases. In Proceedings

of the 2007 ACM SIGMOD International Conference on Management

of Data, pp. 857–872, 2007.

[17] Flavio Chierichetti, Ravi Kumar, Silvio Lattanzi, Michael Mitzen-

macher, Alessandro Panconesi, and Prabhakar Raghavan. On Com-

pressing Social Networks. In Proceedings of the 15th ACM SIGKDD

International Conference on Knowledge Discovery and Data Mining,

pp. 219–228, 2009.

[18] Avery Ching. Giraph: Large-scale graph processing infrastructure on

Hadoop. In Hadoop Summit, 2011.

[19] Aaron Clauset, Cristopher Moore, and Mark E. J. Newman. Structural

Inference of Hierarchies in Networks. In Edoardo Airoldi, David M.

Blei, Stephen E. Fienberg, Anna Goldenberg, Eric P. Xing, and Alice X.

Zheng, editors, Proceedings of the Statistical Network Analysis: Models,

Issues, and New Directions, pp. 1–13, 2007.

[20] Luigi P. Cordella, Pasquale Foggia, Carlo Sansone, and Mario Vento. A

(Sub)Graph Isomorphism Algorithm for Matching Large Graphs. IEEE

Transactions on Pattern Analysis and Machine Intelligence, Vol. 26,

No. 10, pp. 1367–1372, 2004.

[21] Lawrence Cox, Bruce Johnson, Sarah-Kathryn McDonald, Dawn Nel-

son, and Violeta Vazquez. Confidentiality Issues at the Census Bureau.

In Proceedings of the First Annaul Census Bureau Research Conference,

pp. 199–218, 1985.

Page 122: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

110 参考文献

[22] Elizabeth H. Cuthill and Jon McKee. Reducing the Bandwidth of

Sparse Symmetric Matrices. In Proceedings of the 1969 24th National

Conference, pp. 157–172, 1969.

[23] Tore Dalenius. Finding a needle in a haystack or identifying anonymous

census records. Journal of Official Statistics, Vol. 2, No. 3, pp. 329–336,

1986.

[24] Jochen Van den Bercken, Bernhard Seeger, and Peter Widmayer. A

Generic Approach to Bulk Loading Multidimensional Index Structures.

In Proceedings of the 23rd International Conference on Very Large Data

Bases, pp. 406–415, 1997.

[25] Dua Dheeru and Efi Karra Taniskidou. UCI Machine Learning Repos-

itory, 2017.

[26] Josep Domingo-Ferrer and Josep M. Mateo-Sanz. Practical Data-

Oriented Microaggregation for Statistical Disclosure Control. IEEE

Transactions on Knowledge and Data Engineering, Vol. 14, No. 1, pp.

189–201, 2002.

[27] Josep Domingo-Ferrer and Vicenç Torra. Ordinal, Continuous and Het-

erogeneous k-Anonymity Through Microaggregation. Data Mining and

Knowledge Discovery, Vol. 11, No. 2, pp. 195–212, 2005.

[28] Wei Dong, Charikar Moses, and Kai Li. Efficient K-nearest Neighbor

Graph Construction for Generic Similarity Measures. In Proceedings of

the 20th International Conference on World Wide Web, pp. 577–586,

2011.

[29] Khaled El Emam, Fida Kamal Dankar, Romeo Issa, Elizabeth Jonker,

Daniel Amyot, Elise Cogo, Jean-Pierre Corriveau, Mark Walker, Sadrul

Chowdhury, Regis Vaillancourt, Tyson Roffey, and Jim Bottomley. A

Globally Optimal k-Anonymity Method for the De-Identification of

Health Data. Journal of the American Medical Informatics Associa-

tion, Vol. 16, No. 5, pp. 670–82, 2009.

Page 123: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

111

[30] Michalis Faloutsos, Petros Faloutsos, and Christos Faloutsos. On

Power-law Relationships of the Internet Topology. In Proceedings of

the Conference on Applications, Technologies, Architectures, and Pro-

tocols for Computer Communication, pp. 251–262, 1999.

[31] Yuan Fang, Wenqing Lin, Vincent W. Zheng, Min Wu, Kevin Chen-

Chuan Chang, and Xiao-Li Li. Semantic Proximity Search on Graphs

with Metagraph-based Learning. In Proceedings of the 32nd IEEE In-

ternational Conference on Data Engineering, pp. 277–288, 2016.

[32] Michael Frasca, Kamesh Madduri, and Padma Raghavan. NUMA-

aware Graph Mining Techniques for Performance and Energy Efficiency.

In Proceedings of the International Conference on High Performance

Computing, Networking, Storage and Analysis, pp. 1–11, 2012.

[33] Jerome H. Freidman, Jon Louis Bentley, and Raphael Ari Finkel. An

Algorithm for Finding Best Matches in Logarithmic Expected Time.

ACM Transactions on Mathematical Software, Vol. 3, No. 3, pp. 209–

226, 1977.

[34] Benjamin C. M. Fung, Ke Wang, Rui Chen, and Philip S. Yu. Privacy-

preserving Data Publishing: A Survey of Recent Developments. ACM

Computing Surveys, Vol. 42, No. 4, pp. 14:1—-14:53, 2010.

[35] Pin Gao, Mingxing Zhang, Kang Chen, Yongwei Wu, and Weimin

Zheng. High Performance Graph Processing with Locality Oriented

Design. IEEE Transactions on Computers, Vol. 66, No. 7, pp. 1261–

1267, 2017.

[36] J. Alan George. Computer Implementation of the Finite Element

Method. PhD thesis, 1971.

[37] J. Alan George. Nested Dissection of a Regular Finite Element Mesh.

SIAM Journal on Numerical Analysis, Vol. 10, No. 2, pp. 345–363,

1973.

[38] Rosalba Giugno, Vincenzo Bonnici, Nicola Bombieri, Alfredo Pul-

Page 124: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

112 参考文献

virenti, Alfredo Ferro, and Dennis Shasha. GRAPES: A Software for

Parallel Searching on Biological Graphs Targeting Multi-Core Archi-

tectures. PLoS One, Vol. 8, No. 10, 2013.

[39] Joseph E. Gonzalez, Reynold S. Xin, Ankur Dave, Daniel Crankshaw,

Michael J. Franklin, and Ion Stoica. GraphX: Graph Processing in a

Distributed Dataflow Framework. In Proceedings of the 11th USENIX

Conference on Operating Systems Design and Implementation, pp. 599–

613, 2014.

[40] Brendan Gregg. Systems Performance: Enterprise and the Cloud. 1st

edition, 2013.

[41] Antonin Guttman. R-Trees: A Dynamic Index Structure for Spatial

Searching. In Proceedings of the 1984 ACM SIGMOD International

Conference on Management of Data, Vol. 14, p. 47, 1984.

[42] Wook-Shin Han, Sangyeon Lee, Kyungyeol Park, Jeong-Hoon Lee, Min-

Soo Kim, Jinha Kim, and Hwanjo Yu. TurboGraph: A Fast Parallel

Graph Engine Handling Billion-scale Graphs in a Single PC. In Proceed-

ings of the 19th ACM SIGKDD International Conference on Knowledge

Discovery and Data Mining, pp. 77–85, 2013.

[43] Huahai He and Ambuj K. Singh. Graphs-at-a-time: Query Language

and Access Methods for Graph Databases. In Proceedings of the 2008

ACM SIGMOD International Conference on Management of Data, pp.

405–418, 2008.

[44] Xianmang He, HuaHui Chen, Yefang Chen, Yihong Dong, Peng Wang,

and Zhenhua Huang. Clustering-Based k-Anonymity. In Pang-Ning

Tan, Sanjay Chawla, ChinKuan Ho, and James Bailey, editors, Ad-

vances in Knowledge Discovery and Data Mining SE - 34, Vol. 7301,

pp. 405–417. 2012.

[45] Qingbo Hu, Sihong Xie, Jiawei Zhang, Qiang Zhu, Songtao Guo, and

Philip S. Yu. HeteroSales: Utilizing Heterogeneous Social Networks

Page 125: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

113

to Identify the Next Enterprise Customer. In Proceedings of the 25th

International Conference on World Wide Web, pp. 41–50, 2016.

[46] Kuan Lun Huang, Salil S. Kanhere, and Wen Hu. Towards Privacy-

Sensitive Participatory Sensing. In Proceedings of the 2009 IEEE In-

ternational Conference on Pervasive Computing and Communications,

pp. 1–6, 2009.

[47] Anco Hundepool, Aad van de Wetering, Ramya Ramaswamy, Luisa

Franconi, Silvia Polettini, Alessandra Capobianchi, Peter-Paul de Wolf,

Josep Domingo, Vicenc Torra, Ruth Brand, and Sarah Giessing. Âţ-

ARGUS version 4.2 User’s Manual, 2008.

[48] Tochukwu Iwuchukwu and Jeffrey F. Naughton. K-anonymization As

Spatial Indexing: Toward Scalable and Incremental Anonymization. In

Proceedings of the 33rd International Conference on Very Large Data

Bases, pp. 746–757, 2007.

[49] Vijay S. Iyengar. Transforming Data to Satisfy Privacy Constraints.

In Proceedings of the 8th ACM SIGKDD International Conference on

Knowledge Discovery and Data Mining, pp. 279–288, 2002.

[50] Han Jian-min, Cen Ting-ting, and Yu Hui-qun. An Improved V-MDAV

Algorithm for l-Diversity. In Proceedings of the 2008 International Sym-

posiums on Information Processing, pp. 733–739, 2008.

[51] U Kang, Charalampos E. Tsourakakis, and Christos Faloutsos. PEGA-

SUS: A Peta-Scale Graph Mining System Implementation and Obser-

vations. In Proceedings of the Ninth IEEE International Conference on

Data Mining, pp. 229–238, 2009.

[52] Konstantinos I. Karantasis, Andrew Lenharth, Donald Nguyen,

María J. Garzarán, and Keshav Pingali. Parallelization of Reorder-

ing Algorithms for Bandwidth and Wavefront Reduction. In Proceed-

ings of the International Conference for High Performance Computing,

Networking, Storage and Analysis, pp. 921–932, 2014.

Page 126: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

114 参考文献

[53] Foteini Katsarou, Nikos Ntarmos, and Peter Triantafillou. Subgraph

Querying with Parallel Use of Query Rewritings and Alternative Algo-

rithms. In Proceedings of 20th International Conference on Extending

Database Technology, pp. 25–36, 2017.

[54] Sarat kr. Chettri and Bhogeswar Borah. MDAV2K: a Variable-Size

Microaggregation Technique for Privacy Preservation. In Proceedings of

the International Conference on Information Technology Convergence

and Services, pp. 105–118, 2012.

[55] Haewoon Kwak, Changhyun Lee, Hosung Park, and Sue Moon. What

is Twitter, a Social Network or a News Media? In Proceedings of the

19th International Conference on World Wide Web, pp. 591–600, 2010.

[56] Amy N. Langville and Carl D. Meyer. A Reordering for the PageRank

Problem. SIAM Journal on Scientific Computing, Vol. 27, No. 6, pp.

2112–2120, 2006.

[57] Dominique LaSalle and George Karypis. Multi-threaded Graph Parti-

tioning. In Proceedings of the 27th IEEE International Symposium on

Parallel and Distributed Processing, pp. 225–236, 2013.

[58] Michael Laszlo and Sumitra Mukherjee. Minimum Spanning Tree Parti-

tioning Algorithm for Microaggregation. IEEE Transactions on Knowl-

edge and Data Engineering, Vol. 17, No. 7, pp. 902–911, 2005.

[59] Jinsoo Lee, Wook-Shin Han, Romans Kasperovics, and Jeong-Hoon

Lee. An In-depth Comparison of Subgraph Isomorphism Algorithms in

Graph Databases. Proceedings of the VLDB Endowment, Vol. 6, No. 2,

pp. 133–144, 2012.

[60] Kristen LeFevre, David J. DeWitt, and Raghu Ramakrishnan. Incog-

nito: Efficient Full-Domain K-Anonymity. In Proceedings of the 2005

ACM SIGMOD International Conference on Management of Data, pp.

49–60, 2005.

[61] Kristen LeFevre, David J. DeWitt, and Raghu Ramakrishnan. Mon-

Page 127: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

115

drian Multidimensional K-Anonymity. In Proceedings of the 22nd In-

ternational Conference on Data Engineering, pp. 25–25, 2006.

[62] Andrew Lenharth, Donald Nguyen, and Keshav Pingali. Parallel Graph

Analytics. Communications of the ACM, Vol. 59, No. 5, pp. 78–87,

2016.

[63] Jure Leskovec, Kevin J. Lang, Anirban Dasgupta, and Michael W. Ma-

honey. Community Structure in Large Networks: Natural Cluster Sizes

and the Absence of Large Well-Defined Clusters. Internet Mathematics,

Vol. 6, No. 1, pp. 29–123, 2009.

[64] Ninghui Li, Tiancheng Li, and Suresh Venkatasubramanian. t-

Closeness: Privacy Beyond k-Anonymity and l-Diversity. In Proceed-

ings of the 23rd IEEE International Conference on Data Engineering,

pp. 106–115, 2007.

[65] Zhongmou Li, Hui Xiong, Yanchi Liu, and Aoying Zhou. Detecting

Blackhole and Volcano Patterns in Directed Networks. In Proceedings

of the 2010 IEEE International Conference on Data Mining, pp. 294–

303, 2010.

[66] Yongsub Lim, U Kang, and Christos Faloutsos. SlashBurn: Graph

Compression and Mining beyond Caveman Communities. IEEE Trans-

actions on Knowledge and Data Engineering, Vol. 26, No. 12, pp. 3077–

3089, 2014.

[67] Jun-Lin Lin and Meng-Cheng Wei. An Efficient Clustering Method for

k-Anonymization. In Proceedings of the 2008 International Workshop

on Privacy and Anonymity in Information Society, pp. 46–50, 2008.

[68] Jun-Lin Lin, Tsung-Hsien Wen, Jui-Chien Hsieh, and Pei-Chann

Chang. Density-based microaggregation for statistical disclosure con-

trol. Expert Systems with Applications, Vol. 37, No. 4, pp. 3256–3263,

2010.

[69] Yucheng Low, Danny Bickson, Joseph Gonzalez, Carlos Guestrin, Aapo

Page 128: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

116 参考文献

Kyrola, and Joseph M. Hellerstein. Distributed GraphLab: A Frame-

work for Machine Learning and Data Mining in the Cloud. Proceedings

of the VLDB Endowment, Vol. 5, No. 8, pp. 716–727, 2012.

[70] Andrew Lumsdaine, Douglas Gregor, Bruce Hendrickson, and Jonathan

Berry. Challenges in Parallel Graph Processing. Parallel Processing

Letters, Vol. 17, No. 01, pp. 5–20, 2007.

[71] Steffen Maass, Changwoo Min, Sanidhya Kashyap, Woonhak Kang,

Mohan Kumar, and Taesoo Kim. Mosaic: Processing a Trillion-Edge

Graph on a Single Machine. In Proceedings of the Twelfth European

Conference on Computer Systems, pp. 527–543, 2017.

[72] Frank McSherry, Michael Isard, and Derek G. Murray. Scalability! But

at what COST? In Proceedings of the 15th Workshop on Hot Topics in

Operating Systems, 2015.

[73] Mark E. J. Newman and Michelle Girvan. Finding and evaluating

community structure in networks. Physical Review E, Vol. 69, No. 2,

p. 026113, 2004.

[74] Anna Oganian and Josep Domingo-Ferrer. On the Complexity of Op-

timal Microaggregation for Statistical Disclosure Control. Statistical

Journal of the United Nations Economic Comission for Europe, Vol. 18,

No. 4, pp. 345–353, 2001.

[75] Lawrence Page, Sergey Brin, Rajeev Motwani, and Terry Winograd.

The PageRank citation ranking: Bringing order to the web. 1999.

[76] Younghee Park, Douglas Reeves, Vikram Mulukutla, and Balaji Sun-

daravel. Fast Malware Classification by Automated Behavioral Graph

Matching. In Proceedings of the Sixth Annual Workshop on Cyber Se-

curity and Information Intelligence Research, pp. 45:1—-45:4, 2010.

[77] Juan C. Pichel, David E. Singh, and Jesús Carretero. Reordering Algo-

rithms for Increasing Locality on Multicore Processors. In Proceedings

of the 2008 10th IEEE International Conference on High Performance

Page 129: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

117

Computing and Communications, pp. 123–130, 2008.

[78] Ali Pinar and Michael T. Heath. Improving Performance of Sparse

Matrix-vector Multiplication. In Proceedings of the 1999 ACM/IEEE

Conference on Supercomputing, 1999.

[79] Arnau Prat-Pérez, David Dominguez-Sal, and Josep L. Larriba-Pey.

Social Based Layouts for the Increase of Locality in Graph Operations.

In Proceedings of the 16th International Conference on Database Sys-

tems for Advanced Applications - Volume Part I, pp. 558–569, 2011.

[80] Miao Qiao, Hao Zhang, and Hong Cheng. Subgraph Matching: On

Compression and Computation. Proceedings of the VLDB Endowment,

Vol. 11, No. 2, pp. 176–188, 2017.

[81] Xuguang Ren and Junhu Wang. Exploiting Vertex Relationships in

Speeding up Subgraph Isomorphism over Large Graphs. Proceedings of

the VLDB Endowment, Vol. 8, No. 5, pp. 617–628, 2015.

[82] Jeff Sedayao. Enhancing Cloud Security Using Data Anonymization.

Intel White Paper, pp. 1–8, 2012.

[83] Haichuan Shang, Ying Zhang, Xuemin Lin, and Jeffrey Xu Yu. Taming

Verification Hardness: An Efficient Algorithm for Testing Subgraph

Isomorphism. Proceedings of the VLDB Endowment, Vol. 1, No. 1, pp.

364–375, 2008.

[84] Hiroaki Shiokawa. Efficient Clustering Algorithms for Large-scale

Graphs. PhD thesis, University of Tsukuba, 2015.

[85] Hiroaki Shiokawa, Yasuhiro Fujiwara, and Makoto Onizuka. Fast Al-

gorithm for Modularity-Based Graph Clustering. In Proceedings of the

Twenty-Seventh AAAI Conference on Artificial Intelligence, pp. 1170–

1176, 2013.

[86] Agusti Solanas and Antoni Martinez-Balleste. V-MDAV: A Multivari-

ate Microaggregation With Variable Group Size. In Proceedings of the

17th COMPSTAT Symposium of the IASC, 2006.

Page 130: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

118 参考文献

[87] Latanya Sweeney. Achieving k-anonymity privacy protection using

generalization and suppression. International Journal of Uncertainty,

Fuzziness and Knowledge-Based Systems, Vol. 10, No. 5, pp. 571–588,

2002.

[88] Latanya Sweeney. k-anonymity: a model for protecting privacy. Inter-

national Journal of Uncertainty, Fuzziness and Knowledge-Based Sys-

tems, Vol. 10, No. 5, pp. 557–570, 2002.

[89] Julian R. Ullmann. An Algorithm for Subgraph Isomorphism. Journal

of the ACM, Vol. 23, No. 1, pp. 31–42, 1976.

[90] Hannes Voigt. Declarative Multidimensional Graph Queries. In Patrick

Marcel and Esteban Zimányi, editors, Business Intelligence: 6th Eu-

ropean Summer School, eBISS 2016, Tours, France, July 3-8, 2016,

Tutorial Lectures, pp. 1–37. 2017.

[91] Duncan J. Watts and Steven H. Strogatz. Collective dynamics of ‘small-

world’ networks. Nature, Vol. 393, p. 440, 1998.

[92] Hao Wei, Jeffrey Xu Yu, Can Lu, and Xuemin Lin. Speedup Graph

Processing by Graph Ordering. In Proceedings of the 2016 International

Conference on Management of Data, pp. 1813–1828, 2016.

[93] Leon Willenborg and Ton de Waal. Elements of Statistical Disclosure

Control. 2000.

[94] Michael K. Wolf. Microaggregation and Disclosure Avoidance for Eco-

nomic Establishment Data. In Annual Meeting of the American Statis-

tical Association, 1988.

[95] Kaiyuan Zhang, Rong Chen, and Haibo Chen. NUMA-aware Graph-

structured Analytics. In Proceedings of the 20th ACM SIGPLAN Sym-

posium on Principles and Practice of Parallel Programming, pp. 183–

193, 2015.

[96] Yunming Zhang, Vladimir Kiriansky, Charith Mendis, Saman Amaras-

inghe, and Matei Zaharia. Making Caches Work for Graph Analytics.

Page 131: Osaka University Knowledge Archive : OUKA · and Sotetsu Iwamura. Rabbit Order: Just-in-Time Parallel Reordering for Fast Graph Analysis. In Proceedings of the 30th IEEE International

119

In Proceedings of 2017 IEEE International Conference on Big Data,

pp. 293–302, 2017.

[97] Peixiang Zhao and Jiawei Han. On Graph Query Optimization in Large

Networks. Proceedings of the VLDB Endowment, Vol. 3, No. 1-2, pp.

340–351, 2010.

[98] 新井淳也, 塩川浩昭, 山室健, 鬼塚真, 岩村相哲. 効率的なグラフ分析の

ための実行時並列リオーダリング. 電子情報通信学会和文論文誌 D, Vol.

J102-D, No. 4, 2019.

[99] 新井淳也, 鬼塚真, 塩川浩昭. クラスタリングと空間分割の併用による効率

的な k-匿名化. 日本データベース学会和文論文誌, Vol. 13-J, No. 1, pp.

72–77, 2014.

[100] 総務省. 平成 29年版 情報通信白書. 2017.

[101] 総務省. 平成 30年版 情報通信白書. 2018.