研究概要 |
簡潔データ構造(succinct data structures)はある要素を情報理論的下界に近い大きさの空間に格納し,かつ,要素に対する多くの原始的操作を定数時間で行えるデータ構造である.我々は順序木に対する簡潔データ構造を提案した.このデータ構造は,知られている全ての基本演算を定数時間で実行でき,かつ,データ構造のサイズは順序木のある種のエントロピーを達成するものである. スケールフリーグラフとは,ノードの次数分布がべき乗則を満たすグラフのことであり,Webグラフのような実際に現れる大規模グラフのいくつかはスケールフリーであることが知られている.一般に,グラフのノードを探索する場合には同じノードを複数回訪れないように各ノードにフラグが必要である.しかし大規模グラフでは全ノードに対してフラグを用意することは計算機のメモリ量の制限により困難である.本研究ではスケールフリーグラフの性質を利用して,少ないメモリでノードの重複無くグラフを探索するアルゴリズムを提案した.探索アルゴリズムはAvis, Fukudaの逆探索に基づいている.あるノードの親ノードは,そのノードとその全隣接ノードのうち次数の最も大きいものとする.もしそのようなノードが複数ある場合はノードのIDの最も小さいものとする.あるノードの次数がその隣接ノードのどれよりも大きい場合は,そのノードは親ノードを持たない.つまり木の根ノードとなる.この方法で親ノードを定義すると,根ノードが複数現れる.つまりグラフが木ではなく森として表現されることになる.そこで逆探索アルゴリズムを変更し,1つの木の中での逆探索と,複数の根ノード問の通常の深さ優先探索を行うようにする.深さ優先探索では各根ノードを既に訪れたかどうかのフラグを用いる.このアルゴリズムの必要とするメモリは,根ノードの数に比例する.ランダムに作成したスケールフリーグラフにおいて実験を行うと,100万ノードの場合に根ノードの数は平均して4ないし5個になる.つまり数十バイトのメモリのみを用いて全ノードを重複無く列挙することができる.
|