グラフを奇麗に描画するアルゴリズム

13
グラフを奇麗に描画す るアルゴリズム

Upload: mfumi

Post on 24-May-2015

540 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: グラフを奇麗に描画するアルゴリズム

グラフを奇麗に描画するアルゴリズム

Page 2: グラフを奇麗に描画するアルゴリズム

同じグラフ?

Page 3: グラフを奇麗に描画するアルゴリズム

力学モデル

• グラフの描画方法の一つ

• 各ノードに力学的エネルギーが加わるとしてそれが安定する位置を探す

Page 4: グラフを奇麗に描画するアルゴリズム

Fruchterman-Reingold アルゴリズム

• 力学モデルの一つ

• 各ノードは自分以外のノードから斥力,自分と繋がっているノードから引力をうける

• 受ける力に応じて位置を修正することを有限回繰り返す

Page 5: グラフを奇麗に描画するアルゴリズム

• 引力

• 斥力

• ただしcを定数,areaを領域の面積として

引力と斥力

Fa(d) =d2

k

Fr(d) = �k2

d

k = c

rarea

|V |

Page 6: グラフを奇麗に描画するアルゴリズム

引力と斥力の関係

Page 7: グラフを奇麗に描画するアルゴリズム

温度パラメータt

• Fruchterman-Reingold アルゴリズムの重要なパラメータの一つ

• ノードの位置の変位の最大値を決める

• 例えば最初tは横幅の10分の1とし,徐々に減少させていく

Page 8: グラフを奇麗に描画するアルゴリズム

アルゴリズムの流れ1. 各頂点に働く引力/斥力を計算

2. 1. で計算した値をもとに頂点を動かす.ただしこのとき枠外に出ないようにする.また変位は温度パラメータt以下とする

3. 温度パラメータtを下げる

4. 以上の処理をある一定回数繰り返す

• 基本的なオーダは (高速アルゴリズム有)O(|V |2 + |E|)

Page 9: グラフを奇麗に描画するアルゴリズム

実際のノードの動き

Page 10: グラフを奇麗に描画するアルゴリズム

before / after

Page 11: グラフを奇麗に描画するアルゴリズム

別の例

Page 12: グラフを奇麗に描画するアルゴリズム

before / after

Page 13: グラフを奇麗に描画するアルゴリズム

参考• Graph Drawing by Force-directed Placement (1991) by Thomas M. J. Fruchterman , Edward , Edward M. Reingoldhttp://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.13.8444

• グラフ(ネットワーク)を奇麗に描画するアルゴリズム http://d.hatena.ne.jp/mFumi/20140213/1392287682