slide1 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
06. グラフ 序論 PowerPoint Presentation
Download Presentation
06. グラフ 序論

Loading in 2 Seconds...

play fullscreen
1 / 33

06. グラフ 序論 - PowerPoint PPT Presentation


  • 160 Views
  • Uploaded on

06. グラフ 序論. 五島. 絵で書けばこういうもの 頂点 ( vertex , node )の集合 と , 辺 ( edge, arc ) の集合 ただし ,幾何的な 情報: 点 の位置 , 線分 の長さや , そもそも 線分であること など は 重要ではない 2 点間に「関係がある」という情報だけが重要. グラフとは. どんな 問題を考えるか ?. ありとあらゆる無数の 問題 最短路 全域木,最小木 最大流れ 最小カット マッチング 彩色 最長路 巡回 平衡分割 同型判定 埋め込み判定 etc.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about '06. グラフ 序論' - buffy


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide2

絵で書けばこういうもの

    • 頂点(vertex, node)の集合 と,
    • 辺(edge, arc) の集合
  • ただし,幾何的な情報:
    • 点の位置,
    • 線分の長さや,
    • そもそも線分であることなど

は重要ではない

  • 2点間に「関係がある」という情報だけが重要

離散数学

グラフとは
slide3
離散数学どんな問題を考えるか?
  • ありとあらゆる無数の問題
    • 最短路
    • 全域木,最小木
    • 最大流れ
    • 最小カット
    • マッチング
    • 彩色
    • 最長路
    • 巡回
    • 平衡分割
    • 同型判定
    • 埋め込み判定
    • etc.
slide4

様々な問題がグラフ上の問題としてモデル化,定式化される様々な問題がグラフ上の問題としてモデル化,定式化される

離散数学

グラフと現実はどのように対応しているか
slide5

交通網

    • 頂点: 都市や駅
    • 辺: 道路や路線
  • コンピュータ・ネットワーク
    • 頂点: 端末やスイッチ
    • 辺: ケーブル
  • WWW
    • 頂点: ページ
    • 辺: リンク
  • ディジタル回路
    • 頂点: 論理素子
    • 辺: 配線
  • 分子構造
    • 頂点: 原子
    • 辺: 結合
  • 履修ガイド
    • 頂点: 科目
    • 辺: 科目間の依存関係
  • 人間関係 (social network)
    • 頂点: 人間,
    • 辺: 関係(知人,etc.)

離散数学

「わかりやすい」例
slide6

地図

    • 頂点: 国や地域
    • 辺: 隣接関係
  • 迷路
    • 頂点: 交差点
    • 辺: 隣の交差点
  • 機械語プログラム(コントロール・フロー・グラフ)
    • 頂点:命令
    • 辺:「次の命令」
      • 非分岐命令: その直後の命令
      • 分岐命令: そのターゲット

離散数学

少し自明でない例 (1/2)
slide7

ゲームetc.の状態遷移

    • 頂点:状態
    • 辺 : 1手で移れる状態の対
  • 時刻(分刻み)を考慮した乗り換え案内
    • 頂点: (時刻, 駅)
    • 辺 :可能な移動(または移動しない)手段
      • (t, A)  (t + 1, A) : A駅で 1分 待つ
      • (t, A)  (t', B) : 時刻 t にA駅,t'にB駅を通る電車がある
  • 文書クラスタリング
    • 頂点:文書
    • 辺 :文書の対がどのくらい似ているか?

離散数学

少し自明でない例 (2/2)
slide9
離散数学数学的定義
  • グラフ G = V, E
    • V : 頂点の集合
    • E : 辺の集合
      • E V  V:頂点間の関係
  • よく使われる記号
      • 頂点:u, v, i, j, a, b, ...
      • 辺 :e, (u, v), uv, ...
  • 右のグラフ G = V, E
    • V = {a, b, c, d}
    • E = {e1, e2} ={(a, b), (b, c)}

d

a

e1

e2

c

b

G

slide10
離散数学有向 / 無向 グラフ
  • 有向(ゆうこう,directed)グラフ
    • (a, b) と (b, a) を区別する
      • a→ b
  • 無向(むこう,undirected)グラフ
    • (a, b) と (b, a) を区別しない

無向グラフ

有向グラフ

slide11

次数 (degree)

    • ある頂点につながっている辺の数
      • 入次数 と 出次数(有向グラフの場合)
  • k-正則グラフ
    • すべての頂点の次数が k

離散数学

次数
slide12

重み無し (unweighted) グラフ

    • 辺があるかないか
  • 重みつき (weighted) グラフ
    • 辺があるかないか +
    • 辺に数値を付加
      • 「重み」,「コスト」

離散数学

重み
subgraph
離散数学部分グラフ (subgraph)
  • G'= V', E' と G = V, E に対し,V'⊆ VかつE' ⊆ E
    • G: G'の親グラフ,拡大グラフ (supergraph?)
    • G': Gの部分グラフ (subgraph)
slide14

道 (path)

    • 隣接する頂点の系列(からなる部分グラフ)
  • 表記:
    • u1  u2  ...  un
    • u1 * un (推移的閉包の記号)
  • u1から un へ到達可能 (reachable):
    • u1 から unへの道が存在する

離散数学

道 (1/2)

u1

u3

un−1

u2

un

slide15
離散数学道 (2/2)
  • 単純路 (simple path)
    • 同じ頂点を2度含まない道
  • 閉路 (closed path),ループ (loop)
    • 始点と終点が一致する道 (u1 = un)
  • 単純閉路 (simple closed path, simple loop)
    • 同じ頂点を2度含まない閉路(始点と終点以外)

u3

u2

u1

単純路ではない道

u3

u2

u1

単純閉路ではない閉路

slide16

連結 (connected)(無向グラフの場合)

    • 「全体がひとつにつながっている」
    • 任意の2頂点間に道が存在する
  • 有向グラフの場合:
    • 連結 (connected)
      • 辺の向きを無視して,任意の2頂点間に道
        • 無向グラフが連結
    • 強連結 (strongly connected)
      • 辺の向きも考えて,任意の2頂点間に道

離散数学

連結

強連結

連結だが強連結でない

slide17

(強)連結成分:

    • あるグラフの部分グラフで,(強)連結かつ極大なもの.
    • (強)連結で極大:
      • それ以上頂点を加えると(強)連結でなくなる
  • (有向グラフの)強連結成分の言い換え:
    • ある頂点 u に対して,
      • u 自身と
      • u*vと v*u がともに存在するような vのすべて

を頂点とする部分グラフ

    • 「行って帰ってこれる頂点全部」

離散数学

連結成分
slide18
離散数学循環 / 非循環グラフ

  • 木 (tree):
    • 森のうち,連結であるもの
      • 木 ⊆ 森
      • 森の各連結成分は木
      • 森は木の集合
slide19
離散数学根 (root)
  • (連結非循環グラフの)根 (root):
    • 頂点を1つ選んで,

それが一番「上」にあると考える

  • 木(無向):
    • どの頂点も根になり得る
    • 根付き木 (rooted tree)
  • DAG(有向):
    • 根がない場合もある

どれが根?

根のない DAG

slide20
離散数学循環 / 非循環グラフの例

非循環グラフ

循環グラフ

無向循環グラフ

DAG

DAG

DAG

有向循環グラフ

slide21

疎 (sparse) なグラフ

    • 辺の数が少ない
      • 通常,頂点数 nに対して O(n),O(n log n)
  • 密 (dense) なグラフ
    • 辺の数が多い
  • 完全グラフ (complete graph)
    • すべての頂点間を結ぶ辺が存在するグラフ (E = V  V)

離散数学

疎 と 密
slide23

操作

    • adjacents(u) :
      • 頂点 uに隣接する頂点を(すべて)列挙する
    • (u, v) E :
      • 2頂点 u, v間に辺が存在するかどうかを調べるまたはその重みを得る
  • これらの操作が,少ないメモリで効率的に行えることが目標

離散数学

グラフに対する基本的な操作
slide24

典型的なデータ構造

    • 行列表現(密なグラフ用)
    • リスト表現(疎なグラフ用)

離散数学

グラフ表現に用いるデータ構造
slide25

頂点の集合 V = { 0, 1, ..., n – 1 } とする

  • 辺の情報を2次元行列 M[i,j] (0  i < n, 0 j < n) に格納
    • 重みなしグラフ
      • M[i,j] = 1 iff(i, j)  E
      • M[i,j] = 0 iff(i, j)  E
    • 重みつきグラフ
      • M[i,j] が辺 (i, j) の重み
        • 「重み 0」と「辺がない」の区別に注意

離散数学

密なグラフ用の表現(2次元行列)
slide26
離散数学

0

2

7

1

3

6

4

5

行列による表現

0

1

2

3

4

5

6

7

0

1

1

1

1

1

2

1

1

空欄は0

3

1

1

1

1

1

4

1

1

5

1

1

6

1

1

1

7

1

1

slide27

各頂点 i に対し,その隣接頂点の集合を格納

    • 「0 にメモリを使わない」
      • 辺の数に比例したメモリしか使わない
      • 疎な行列に向いている
  • 「隣接頂点の集合」の実現
    • 配列,リンクリスト,平衡木,ハッシュ表
      • ただし,疎行列(次数が定数かせいぜい log n)が前提であれば
      • 配列・リンクリストで十分

離散数学

疎なグラフ用の表現(リスト)
slide28
離散数学

0

2

7

1

3

6

4

5

リストによる表現

0

1

1

0

2

3

2

1

3

3

1

4

5

6

7

4

3

5

5

4

6

6

3

5

7

7

3

6

slide29
離散数学オブジェクトとポインタによる表現
  • 頂点:任意のオブジェクト (Java, C++) や構造体 (C)
  • 辺:ポインタ(参照)

C/C++ ポインタ,Java オブジェクト参照

Java:class node { ... node[] adjacents;}

C++:class node { ...intn_adjacents; node *adjacents[];}

C++/Javaオブジェクト,C 構造体 etc.

slide30
離散数学利害得失
  • ただし:
    • 頂点数 n, 辺の数 mとする
    • 次数の最大値を dとする
    • オブジェクト+ポインタを用いた表現はリストに準ずる
slide31

通常,

    • n: 頂点数
    • m: 辺の数 (m n2)

の関数として計算量を評価する

  • n と m
    • nのみで表す
      • m n2なので n, mの関数は nだけの関数として上から押さえられる
    • nとm で表す
      • とくに,疎なグラフ(m << n2)に対して効率の良いアルゴリズム
        • 例:O(n + m) は,疎なグラフに対しては O(n2) よりも優れている

離散数学

グラフアルゴリズム計算量のパラメータ
slide32

そのほかの有用なパラメータ

    • 最大次数
    • グラフの直径(単純な道の最大長)

離散数学

グラフ・アルゴリズム計算量のパラメータ
slide33

易しい(多項式時間アルゴリズムが存在する)問題易しい(多項式時間アルゴリズムが存在する)問題

    • 問題とアルゴリズム
      • 頂点の探索とその応用
      • 最短路(shortest path)
      • 全域木,最小木 (minimum spanning tree; MST)
      • 最大流と最小カット (max flow/min cut)
  • 難しい(計算困難な)問題
    • 有名な問題の紹介
      • 同型判定
      • 彩色
      • クリーク(完全部分グラフ)の発見
      • 平衡分割

離散数学

これから議論する問題とアルゴリズム