2009/11/27 グラフ (1) 第9講: 平成21年11月27日 (金) 4限 E252教室 コンピュータアルゴリズム.

Slides:



Advertisements
Similar presentations
組合せ最適化輪講 2.3 連結性 川原 純. 2.3 連結性 内容 – グラフ上の節点をすべてたどるアルゴリズム 計算機上でのグラフの表現 – 強連結成分を求めるアルゴリズム トポロジカル順序を求める方法も – k- 連結、 k- 辺連結について – 2- 連結グラフの耳分解について.
Advertisements

有限幾何学 第 2 回. 有限幾何学 第 2 回 1. 様々なグラフの例 2. 道と最短経路問題 1. 用語の説明 2. 最短経路問題 3. ダイキストラのアルゴリズム.
©2008 Ikuo Tahara探索 状態空間と探索木 基本的な探索アルゴリズム 横形探索と縦形探索 評価関数を利用した探索アルゴリズム 分岐限定法 山登り法 最良優先探索 A ( A* )アルゴリズム.
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 から.
人工知能 ( Artificial Intelligence ) 状態空間表現と探索 State Space Representation and Search Lecture 2 田中美栄子.
区間グラフにおける区間表現からMPQ-treeを効率よく構成するアルゴリズム
アルゴリズムとデータ構造 2011年7月7日
2009/12/4 グラフ (2) 第10講: 平成21年12月4日 (金) 4限 E252教室 コンピュータアルゴリズム.
データ構造と アルゴリズム 第十二回 知能情報学部 知能情報学科 新田直也.
ラベル付き区間グラフを列挙するBDDとその応用
コンパイラ 2011年10月17日
算法数理工学 第9回 定兼 邦彦.
    有限幾何学        第8回.
数理科学コース・ 倉田 和浩 2007/11/3 大学祭オープンラボ
2章 データ構造.
5.チューリングマシンと計算.
5.チューリングマシンと計算.
第8回  問題解決.
Probabilistic Method 6-3,4
データ構造とアルゴリズム 第6回の2 木 ~ データ構造(3)~.
第11講: 平成18年12月 8日 (金) 4限 E352教室 グラフ (1).
第4章 空間解析 2.ネットワーク分析 (3) ネットワーク構造分析
コンパイラ 2012年10月15日
s a b f c e d 2016年度 有限幾何学 期末試験 問1:15点
5.5 The Linear Arboricity of Graphs (グラフの線形樹化数)
アルゴリズムとデータ構造 2012年7月12日
二分探索木によるサーチ.
2009/10/16 いろいろなデータ構造 第3講: 平成21年10月16日 (金) 4限 E252教室 コンピュータアルゴリズム.
茨城大学 工学部 知能システム工学科 井上 康介 E2棟801号室
アルゴリズムとデータ構造 2011年7月4日
第25章 単一始点最短路 3節 Bellman-Fordのアルゴリズム
算法数理工学 第8回 定兼 邦彦.
アルゴリズムとデータ構造 2013年7月16日
離散数学 08. グラフの探索 五島.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
人工知能概論 第2回 探索(1) 状態空間モデル,基本的な探索
WWW上の効率的な ハブ探索法の提案と実装
本時のねらい 「図形の中から相似な三角形を見出し、相似条件を用いて証明することができる。」
タンパク質の進化 タンパク質は進化の過程でどのようにドメインを獲得してきたのだろうか? 今のタンパク質を調べることでわからないだろうか?
25. Randomized Algorithms
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
A Simple Algorithm for Generating Unordered Rooted Trees
離散数学 07. 木 五島.
基本情報技術概論(第6回) 埼玉大学 理工学研究科 堀山 貴史
2009/10/23 整列アルゴリズム (1) 第4講: 平成21年10月23日 (金) 4限 E252教室 コンピュータアルゴリズム.
中点連結定理 本時の目標 「中点連結定理を理解する。」
算法数理工学 第8回 定兼 邦彦.
アルゴリズムとデータ構造 2011年7月8日課題の復習
算法数理工学 第7回 定兼 邦彦.
情報知能学科「アルゴリズムとデータ構造」
第2回  発見的探索(1).
問題作成、解説担当:中島 副担当:坪坂、松本
第9回 優先度つき待ち行列,ヒープ,二分探索木
離散数学 06. グラフ 序論 五島.
5.チューリングマシンと計算.
アルゴリズムとデータ構造 2011年7月11日
基本情報技術概論(第6回) 埼玉大学 理工学研究科 堀山 貴史
アルゴリズムとデータ構造 2013年7月8日
アルゴリズムとデータ構造 第2章 リスト構造 5月24日分
ヒープソート.
コストのついたグラフの探索 分枝限定法 A*アルゴリズム.
立方体の切り口の形は?  3点を通る平面はただ1つに決まります。
離散数学 11. その他のアルゴリズム 五島.
第4章 空間解析 2.ネットワーク分析 (2) 最大流問題
アルゴリズムとデータ構造 2012年7月9日
Presentation transcript:

2009/11/27 グラフ (1) 第9講: 平成21年11月27日 (金) 4限 E252教室 コンピュータアルゴリズム

本日の講義内容 グラフ(graph) グラフとは グラフの表現 グラフの探索 深さ優先探索 幅優先探索 2009/11/27

グラフとは グラフ: Graph 頂点(vertex,node,節点)の集合と辺(edge,arc,branch,枝)の集合からなる グラフ G は頂点の集合 V と辺の集合 E を用いて,G = (V, E) と表される v1 e2 G = (V, E) V = {v1, v2, v3, v4} E = {e1, e2, e3, e4, e5} e3 v3 e4 v4 v2 e5 頂点 vi, vj 間の辺 eij を 辺 (vi, vj) と書く 2009/11/27

グラフの種類 有向グラフと無向グラフ 重みつきグラフ 辺に向きのあるグラフが有向グラフ 辺に向きのないグラフが無向グラフ v1 有向グラフと無向グラフ 辺に向きのあるグラフが有向グラフ directed graph,矢印付きの辺 辺に向きのないグラフが無向グラフ undirected graph,矢印なしの辺 重みつきグラフ 辺は属性として重み(weight)を持つことがある コスト,長さと呼ぶこともある 例: 電車の路線図 頂点は駅,辺は区間,辺の重みは運賃 v2 有向グラフの場合, 辺 (v1, v2) と辺 (v2, v1) は別物 2009/11/27

グラフの用語 道(path,路) 閉路(cycle,closed path) 単純路(simple path) 頂点と頂点を結ぶ経路 有向グラフの場合は向きも揃っていないといけない 例: 頂点 v1,v4 間の道は,辺 (v1, v2),(v2, v4) の列 閉路(cycle,closed path) 頂点からその頂点自身への道が存在するとき,その道を閉路という 例: 辺 (v1, v2),(v2, v3),(v3, v1) は閉路 単純路(simple path) 道のうちで閉路を含まないもの,つまり同じ頂点を 2 回以上通らない道 木(tree)は閉路のない無向グラフ v1 e2 v3 v4 e3 e4 v2 e5 2009/11/27

頂点の次数 頂点への接続する辺の数:次数 有向グラフの場合 無向グラフの場合 内向き:入次数(Inner Demi-Degree) 外向き:出次数(Outer Demi-Degree) 無向グラフの場合 次数(degree) 2009/11/27

グラフの計算量 頂点の数: n 辺の数: m 無向グラフでは m は最小 0 ,最大 有向グラフでは最大 n(n - 1) 辺の数最大のグラフ: 完全グラフ(Complete Graph) すべての頂点間に辺がある グラフの計算量は,頂点数 n と辺数 m に依存し,例えば O(m + n) のアルゴリズムと O(n log n) のアルゴリズムがあった場合,m が n に比べて小さければ前者を,大きければ後者を選ぶ 2009/11/27

グラフの表現 (1) 有向グラフ G=(V,E) の表現 頂点を 1,…,n の番号で表現 1 2 3 4 対象とする有向グラフの例 2009/11/27

グラフの表現 (2) 隣接行列: Adjacency Matrix n 次の正方行列 辺 (vi,vj) が存在するときに i 行 j 列の要素 aij を 1 とし,存在しない場合に 0 とする 1 2 v1 v2 v3 v4 3 4 自身への辺は 0 とする場合 自身への辺が常にあるとする場合 (vi, vi) =1 2009/11/27

グラフの表現 (3) 重みつきグラフの場合 通常は隣接行列の他に重み行列が必要 辺が存在しないことを無限大などの特別な値で表現すれば隣接行列のみで表現可能 v1 v2 v3 v4 2 1 2 v1 v2 v3 v4 2 1 2 3 4 3 自分自身への辺の重みは 0 辺がない場合の重みは ∞ 2009/11/27

グラフの表現 (4) リスト表現 リスト 1 本 1 本を隣接リストと呼ぶ それぞれの頂点を始点とする辺のリストを頂点毎に作成 2 3 4 1 1 2 3 4 2009/11/27

グラフの探索 グラフの探索(search) 探索法の種類 グラフ全体を組織的に調べ,すべての頂点や辺を辿るアルゴリズム 前回までの探索と違って,目的の頂点を探すわけではなく,すべての頂点を調べることである 探索の過程でそれぞれの頂点を調べに行くことをその頂点の訪問(visit)と呼ぶ 探索法の種類 深さ優先探索(Depth First Search) 幅優先探索(Breadth First Search) 2009/11/27

深さ優先探索( Depth First Search, 縦型探索) 1 つの道を選んでいけるところまで行き,進めなくなったら引き返して別の道を選ぶ探索法 手順 頂点を 1 つ選び出発点とする そこから出る辺を 1 つ選びその先の頂点を訪問 この頂点からも同様に辺を選び先の頂点を訪問 以下,同様に行き止まりまで進む 行き止まり = 訪問済み頂点,辺のない頂点 行き止まりになったら引き返して調べてない辺の先の頂点を訪問 これを繰り返し,すべての頂点から出る辺を探索すれば終了 2009/11/27

深さ優先探索 3 C 2 B 4 F 5 E 1 A 7 D 6 G A から始める 同じ深さの場合は早いアルファベットから処理 処理順: {A, B, C, F, E, G, D} 2009/11/27

深い頂点(いま訪問した頂点の子)が優先なので,スタックを使う 深さ優先探索 C B F E A 深い頂点(いま訪問した頂点の子)が優先なので,スタックを使う (スタック = 後から入れたもの優先) D G 処理中: 「A」  スタック: {B,D} 処理済: φ 次は B 2009/11/27

深さ優先探索 C B F E A D G 処理中: 「B」  スタック: {C,E,D} 処理済: {A} 次は C 2009/11/27

深さ優先探索 C B F E A D G 処理中: 「C」  スタック: {F,E,D} 処理済: {A,B} 次は F 2009/11/27

深さ優先探索 C B F E A D G 処理中: 「F」  スタック: {E,D} 処理済: {A,B,C} 次は E 2009/11/27

深さ優先探索 C B F E A D G 処理中: 「E」 スタック: {G,D} 処理済: {A,B,C,F} 次は G 処理中: 「E」  スタック: {G,D} 処理済: {A,B,C,F} 次は G 2009/11/27

深さ優先探索 C B F E A D G 処理中: 「G」 スタック: {D} 処理済: {A,B,C,F,E} 次は D 処理中: 「G」  スタック: {D} 処理済: {A,B,C,F,E} 次は D 2009/11/27

深さ優先探索 C B F E A D G 処理中: 「D」 スタック: φ 処理済: {A,B,C,F,E,G} 次がないので終了 処理中: 「D」  スタック: φ 処理済: {A,B,C,F,E,G} 次がないので終了 2009/11/27

幅優先探索(Breadth First Search, 横型探索) 手順 最初の頂点を訪問 この頂点から到達可能な頂点(レベル 1 頂点)をすべて訪問 レベル 1 頂点のいずれかから到達可能な頂点(レベル 2 頂点)を訪問 以上を繰り返す 一度訪問した頂点は二度と訪問しない 2009/11/27

幅優先探索 4 C 2 B 7 F 5 E 1 A 3 D 6 G A から始める 同じ深さの場合は早いアルファベットから処理 処理順: {A, B, D, C, E, G, F} 2009/11/27

浅い頂点(いま訪問した頂点の兄弟)が優先なので,キューを使う(キュー = 先に入れたもの優先) 幅優先探索 C B F E A 浅い頂点(いま訪問した頂点の兄弟)が優先なので,キューを使う(キュー = 先に入れたもの優先) D G 処理中: 「A」  キュー: {B,D} 処理済: φ 次は B 2009/11/27

幅優先探索 C B F E A D G 処理中: 「B」  キュー: {D,C,E} 処理済: {A} 次は D 2009/11/27

幅優先探索 C B F E A D G 処理中: 「D」  キュー: {C,E,G} 処理済: {A,B} 次は C 2009/11/27

幅優先探索 C B F E A D G 処理中: 「C」  キュー: {E,G,F} 処理済: {A,B,D} 次は E 2009/11/27

幅優先探索 C B F E A D G 処理中: 「E」  キュー: {G,F} 処理済: {A,B,D,C} 次は G 2009/11/27

幅優先探索 C B F E A D G 処理中: 「G」  キュー: {F} 処理済: {A,B,D,C,E} 次は F 2009/11/27

幅優先探索 C B F E A D G 処理中: 「F」 キュー: φ 処理済:{ A,B,D,C,E,G} キューが空なので終了 処理中: 「F」  キュー: φ 処理済:{ A,B,D,C,E,G} キューが空なので終了 2009/11/27

比較 深さ優先探索 と   幅優先探索 34 34 12 56 12 56 6 24 44 78 6 24 44 78 32 66 87 32 66 87 92 92 2009/11/27

第 9 講のまとめ グラフ(graph) グラフとは グラフの表現 グラフの探索 深さ優先探索 幅優先探索 2009/11/27