グラフアルゴリズムの可視化 数理科学コース 福永研究室 高橋 優子 2018/12/29.

Slides:



Advertisements
Similar presentations
有限幾何学 第 2 回. 有限幾何学 第 2 回 1. 様々なグラフの例 2. 道と最短経路問題 1. 用語の説明 2. 最短経路問題 3. ダイキストラのアルゴリズム.
Advertisements

2015 年度 有限幾何学 期末試験 次の各問に答えよ.( (1), (2), (3), (4), (5), (7), (8), (10) は答えだけでよい) (1) 有向閉路が存在しない位数 4 のトーナメントを描け. (2) 内点の個数が 10 個の正則 2 分木の葉の個数を求めよ. (3) グラフ.
算法数理工学 第 7 回 定兼 邦彦 1. グラフ グラフ G = (V, E) –V: 頂点 ( 節点 ) 集合 {1,2,…,n} –E: 枝集合, E  V  V = {(u,v) | u, v  V} 無向グラフ – 枝は両方向にたどれる 有向グラフ – 枝 (u,v) は u から.
自動映像生成のための パーティクルフィルタによるボールの追 跡 2007 年 3 月 21 日 神戸大学大学院自然科学研究科 矢野 一樹.
ハノイグラフの生成と最短経路の導出 東京電機大学 理工学部 村田和也 松浦昭洋
MPIを用いたグラフの並列計算 情報論理工学研究室 藤本 涼一.
初年次セミナー 第13回 2次元グラフィックス(1).
区間グラフにおける区間表現からMPQ-treeを効率よく構成するアルゴリズム
3次元nクイーン問題の 解に関する研究 論理工学研究室 伊藤精一
情報処理演習 (9)グラフィックス システム科学領域 日浦 慎作.
点対応の外れ値除去の最適化によるカメラの動的校正手法の精度向上
2009/12/4 グラフ (2) 第10講: 平成21年12月4日 (金) 4限 E252教室 コンピュータアルゴリズム.
REIMEI EISA Viewerの使い方
極小集合被覆を列挙する 実用的高速アルゴリズム
データ構造と アルゴリズム 第十二回 知能情報学部 知能情報学科 新田直也.
ラベル付き区間グラフを列挙するBDDとその応用
    有限幾何学        第8回.
Problem D: Double Sorting 原案: oxy, 解答作成: oxy, nya.
群論とルービックキューブ 白柳研究室  水野貴裕.
2章 データ構造.
An Algorithm for Enumerating Maximal Matchings of a Graph
原案:阿部 担当:福澤, 笠原 英訳:寺島 解説:福澤
JAG Regional Practice Contest 2012 問題C: Median Tree
Handel-Cによる       エアホッケー.
EMアルゴリズム クラスタリングへの応用と最近の発展
Real Time Graph 指定された計測のデータを実時間収集サーバ(LABCOM)から取得し、リアルタイムにグラフとして表示する。
第11講: 平成18年12月 8日 (金) 4限 E352教室 グラフ (1).
CSP記述によるモデル設計と ツールによる検証
5.5 The Linear Arboricity of Graphs (グラフの線形樹化数)
アルゴリズム入門.
A First Course in Combinatorial Optimization Chapter 3(前半)
二分探索木によるサーチ.
7-3.高度な木 (平衡木) AVL木 平衡2分木。回転操作に基づくバランス回復機構により平衡を保つ。 B木
MPIを用いた並列処理 ~GAによるTSPの解法~
アルゴリズムとデータ構造 2011年7月4日
第25章 単一始点最短路 3節 Bellman-Fordのアルゴリズム
決定木とランダムフォレスト 和田 俊和.
定兼邦彦 今井浩 東京大学理学系研究科 情報科学専攻
アルゴリズムとデータ構造 2013年7月16日
OpenGLを使ったプログラム作成 澤見研究室
OpenGLライブラリを用いた3次元フラクタルの描画
第14章 モデルの結合 修士2年 山川佳洋.
プリムのアルゴリズム 重み付きグラフG=(V,E)の任意の点集合 U⊂Vに対して一方の端点がUの中にあり、他方の端点がV-Uの中にあるような枝の中で最小の重みを持つものをlとすれば、枝lを含むような最小木が存在する。
構造情報に基づく特徴量を用いた グラフマッチングによる物体識別 情報工学科 藤吉研究室  EP02086 永橋知行.
早わかりアントコロニー最適化 (Ant Colony Optimization)
2018/9/10 ACL読み会 名古屋大学大学院 M2 佐藤・松崎研 土居裕典.
b f c a d e g h a b c d e f g 図1 図2 2012年度 有限幾何学 期末試験
アルゴリズムとデータ構造 2012年7月17日
First Course in Combinatorial Optimization
ベイジアンネットワーク概説 Loopy Belief Propagation 茨城大学工学部 佐々木稔
需要点,供給点,辺容量を持つ木の分割アルゴリズム
アルゴリズムとデータ構造 --- 理論編 --- 山本 真基
離散数学 06. グラフ 序論 五島.
パターン認識 ークラスタリングとEMアルゴリズムー 担当:和田 俊和 部屋 A513
8方向補間ブロックマッチングの実装 福永研究室 数理科学コース 学部4年 能城 真幸.
アルゴリズムとデータ構造 2011年7月11日
パターン認識 ークラスタリングとEMアルゴリズムー 担当:和田 俊和 部屋 A513
アルゴリズムとデータ構造 2011年6月16日
アルゴリズムとデータ構造 2013年7月8日
バネモデルの シミュレータ作成 精密工学科プログラミング基礎 資料.
コストのついたグラフの探索 分枝限定法 A*アルゴリズム.
卒業研究 Treedecompositionを生成するヒューリスティックアルゴリズムの幅に関する評価実験
離散数学 11. その他のアルゴリズム 五島.
アルゴリズムとデータ構造 2013年6月20日
C問題 高所恐怖症 原案・ライタ : 伊藤 テスタ : 青木・西出.
MPIを用いた 並列処理 情報論理工学研究室 06‐1‐037‐0246 杉所 拓也.
無向グラフが与えられたとき、最大位数の完全部分グラフを求める問題
7.木構造 7-1.データ構造としての木 7-2.2分探索木 7-3.高度な木.
計算機プログラミングI 第5回 2002年11月7日(木) 配列: 沢山のデータをまとめたデータ どんなものか どうやって使うのか
アルゴリズムとデータ構造 2012年7月9日
Presentation transcript:

グラフアルゴリズムの可視化 数理科学コース 福永研究室 高橋 優子 2018/12/29

目次 研究背景・目標 ダイクストラ法 クラスカル法 OpenGLを用いた実装 まとめ 2018/12/29

OpenGLを用いて 三次元のグラフアルゴリズムを可視化 1.研究背景・目標 グラフアルゴリズムの学習 C言語にてダイクストラ法・クラスカル法を実装 処理結果をPGM形式にして出力 OpenGLを用いて 三次元のグラフアルゴリズムを可視化 結果だけでなく過程も見えるようにする 2018/12/29

2.ダイクストラ法 2.1 ダイクストラ法とは Edsger Wybe Dijkstra による(1959) 2.1 ダイクストラ法とは Edsger Wybe Dijkstra による(1959) グラフ理論における最短経路問題を解く手法 スタートノードからゴールノードまでの最短距離を求める ダイクストラ法の利用先 カーナビゲーションの経路探索 鉄道の経路案内 など 今回はゴールノードを指定しない 全ノードへの最短距離を求められる 2018/12/29

2.ダイクストラ法 2.2 アルゴリズム 全ノード間のコスト(距離)を+∞に初期化し さらに状態を「未使用」としておく. 2.2 アルゴリズム 全ノード間のコスト(距離)を+∞に初期化し さらに状態を「未使用」としておく. 全ノードの座標と, 辺の有無とをランダムに決定し 辺がある場合はその長さをコストとする. また, スタートノードSを指定する. 1 3 4 S 2 【現時点でのコスト】 ノード1…1 ノード2…3 ノード3…+∞ 2018/12/29

2.ダイクストラ法 2.2 アルゴリズム ③ Sからのコストが最小となる未使用ノードXを探す. 【現時点でのコスト】 ノード1…1(確定) 2.2 アルゴリズム ③ Sからのコストが最小となる未使用ノードXを探す. また, Xにつながる全てのノードYに対し, 「Yの現在のコスト」>(「X→Yの距離」+「Xのコスト」) を満たした場合, Yのコストを更新する. アルゴリズムを終了する. 1 3 4 S 2 【現時点でのコスト】 ノード1…1(確定) ノード2…2(コスト更新) ノード3…5(コスト更新) 2018/12/29

2.ダイクストラ法 2.2 アルゴリズム ③ Sからのコストが最小となる未使用ノードXを探す. 【現時点でのコスト】 ノード1…1(確定) 2.2 アルゴリズム ③ Sからのコストが最小となる未使用ノードXを探す. また, Xにつながる全てのノードYに対し, 「Yの現在のコスト」>(「X→Yの距離」+「Xのコスト」) を満たした場合, Yのコストを更新する. アルゴリズムを終了する. 1 3 4 S 2 【現時点でのコスト】 ノード1…1(確定) ノード2…2(確定) ノード3…5 2018/12/29

2.ダイクストラ法 2.2 アルゴリズム ③ Sからのコストが最小となる未使用ノードXを探す. 【現時点でのコスト】 ノード1…1(確定) 2.2 アルゴリズム ③ Sからのコストが最小となる未使用ノードXを探す. また, Xにつながる全てのノードYに対し, 「Yの現在のコスト」>(「X→Yの距離」+「Xのコスト」) を満たした場合, Yのコストを更新する. アルゴリズムを終了する. 1 3 4 S 2 【現時点でのコスト】 ノード1…1(確定) ノード2…2(確定) ノード3…5(確定) 2018/12/29

2.ダイクストラ法 2.3 実装 ノードの構造体 2018/12/29

2.ダイクストラ法 2.3 実装 確定ノード決定・コスト更新 確定ノード決定 コスト更新 2018/12/29

3.クラスカル法 3.1 クラスカル法とは Joseph Kruskal による(1956) グラフ理論における最小全域木問題を解く手法 3.1 クラスカル法とは Joseph Kruskal による(1956) グラフ理論における最小全域木問題を解く手法 全てのノードを閉路が含まれないように結合し, 辺の重みの総和が最小となるような木を求める. 貪欲アルゴリズムの一種 2018/12/29

3.クラスカル法 3.2 アルゴリズム グラフの各頂点がそれぞれの木に属するように 森(木の集合) F を生成する. 3.2 アルゴリズム グラフの各頂点がそれぞれの木に属するように 森(木の集合) F を生成する. グラフの全ての辺を含む集合 S を生成する. 11 4 7 8 1 14 6 c e d a b 2018/12/29

3.クラスカル法 3.2 アルゴリズム ③ S が空集合になるまで以下を繰り返す. S から重みが最小の辺を削除する. 3.2 アルゴリズム ③ S が空集合になるまで以下を繰り返す. S から重みが最小の辺を削除する. その辺が2つの木を連結するものならば それを森に加え, 2つの木を1つにまとめる. そうでない場合は単に捨てる. 11 4 7 8 1 14 6 c e b d a 2018/12/29

3.クラスカル法 3.2 アルゴリズム ③ S が空集合になるまで以下を繰り返す. S から重みが最小の辺を削除する. 3.2 アルゴリズム ③ S が空集合になるまで以下を繰り返す. S から重みが最小の辺を削除する. その辺が2つの木を連結するものならば それを森に加え, 2つの木を1つにまとめる. そうでない場合は単に捨てる. 11 4 7 8 1 14 6 c e b d a 2018/12/29

3.クラスカル法 3.2 アルゴリズム ③ S が空集合になるまで以下を繰り返す. S から重みが最小の辺を削除する. 3.2 アルゴリズム ③ S が空集合になるまで以下を繰り返す. S から重みが最小の辺を削除する. その辺が2つの木を連結するものならば それを森に加え, 2つの木を1つにまとめる. そうでない場合は単に捨てる. 11 4 7 8 1 14 6 c e b d a 2018/12/29

3.クラスカル法 3.2 アルゴリズム ③ S が空集合になるまで以下を繰り返す. S から重みが最小の辺を削除する. 3.2 アルゴリズム ③ S が空集合になるまで以下を繰り返す. S から重みが最小の辺を削除する. その辺が2つの木を連結するものならば それを森に加え, 2つの木を1つにまとめる. そうでない場合は単に捨てる. 11 4 7 8 1 14 6 c e b d a 2018/12/29

3.クラスカル法 3.3 実装 辺の構造体 2018/12/29

3.クラスカル法 3.3 実装 最小経路を発見・木を結合 重みの配列をソート 最短経路発見 2018/12/29

4.OpenGLを用いた実装 4.1 ノードの描画 例:ダイクストラのノード描画 不確定ノードは水色 確定ノードは青 2018/12/29

4.OpenGLを用いた実装 4.2 エッジの描画 例:クラスカルの辺 最短経路は黄色 使ってない経路は水色 2018/12/29

4.OpenGLを用いた実装 4.3 視点変更 図を回転表示するときの工夫 視点の位置によって 画面の上方向を変える 2018/12/29

4.OpenGLを用いた実装 4.4 ダイクストラ ランダムに ノードを10個生成 エッジを ランダムに生成 黄色は スタートノード 4.4 ダイクストラ ランダムに ノードを10個生成 エッジを ランダムに生成 黄色は スタートノード 2018/12/29

4.OpenGLを用いた実装 4.4 ダイクストラ マウスを クリックするごとに 1ステップ進める 確定ノードは 青く塗る 4.4 ダイクストラ マウスを クリックするごとに 1ステップ進める 確定ノードは 青く塗る 使用するエッジは 黄色く塗る 2018/12/29

4.OpenGLを用いた実装 4.4 ダイクストラ 全てのノードへの最短経路を 見つける 2018/12/29

4.OpenGLを用いた実装 4.4 ダイクストラ キーボード操作によって回転 2018/12/29

4.OpenGLを用いた実装 4.4 ダイクストラ キーボード操作によって拡大・縮小 2018/12/29

4.OpenGLを用いた実装 4.5 クラスカル ランダムにノードを10個生成 全てのノードを つなぐエッジを生成 4.5 クラスカル ランダムにノードを10個生成 全てのノードを つなぐエッジを生成 道を増やすため さらにランダムに エッジを生成 2018/12/29

4.OpenGLを用いた実装 4.5 クラスカル マウスを クリックするごとに 1ステップ進める 確定エッジを 黄色く塗る 4.5 クラスカル マウスを クリックするごとに 1ステップ進める 確定エッジを 黄色く塗る 2018/12/29

4.OpenGLを用いた実装 4.5 クラスカル マウスを クリックするごとに 1ステップ進める 確定エッジを 黄色く塗る 4.5 クラスカル マウスを クリックするごとに 1ステップ進める 確定エッジを 黄色く塗る 2018/12/29

5.まとめ 苦労したこと 工夫したこと OpenGLの処理に合わせたプログラムの分割. 図を回転させる際の視点の設定. 図を見やすくするために, ランダムに定める ノードの間隔を調整した. 2018/12/29