SlideShare a Scribd company logo
グラフと木
グラフ
●頂点と辺の集合
●辺は頂点と頂点を結ぶ
●辺に向きがあるものを有向グラフ、向きのない
ものを無向グラフという
頂点
辺
無向グラフ
グラフ
●頂点と辺の集合
●辺は頂点と頂点を結ぶ
●辺に向きがあるものを有向グラフ、向きのない
ものを無向グラフという
頂点
辺
有向グラフ
グラフに関する用語
●道(パス):一続きの頂点の列
グラフに関する用語
●閉路(サイクル):始点と終点が同じパス
グラフに関する用語
●距離:2頂点を結ぶ最短の道の長さ
距離: 2
グラフに関する用語
●直径:距離の最大値
直径: 2
グラフに関する用語
●ループ:辺の両端が同じ頂点になっているもの
グラフに関する用語
●多重辺:辺の両端の組が等しい複数の辺
グラフに関する用語
●単純グラフ:ループも多重辺も無いグラフ
単純グラフでない
グラフに関する用語
●単純グラフ:ループも多重辺も無いグラフ
単純グラフである
グラフに関する用語
●連結グラフ:どの2点間にも道があるグラフ
連結でない
グラフに関する用語
●連結グラフ:どの2点間にも道があるグラフ
連結である
グラフに関する用語
●次数:頂点に接続している辺の本数
3
4
5
4
5
3
グラフに関する用語
●正則グラフ:全頂点の次数が等しいグラフ
4
4
4
4
4
4
グラフに関する用語
●完全グラフ:どの2点間にも辺があるグラフ
プログラムでグラフを扱う
●隣接行列
●頂点 から頂点 に伸びる辺の数を とする
●辺に情報がある場合、多重辺に対応できない
●メモリの制約上    ぐらいまでしか使えない
●実装は楽
●隣接リスト
●頂点 から伸びる辺のリストを  に格納する
●多重辺にも対応、頂点数が多くても大丈夫
i j aij
n≤1000
i a[i]
プログラムでグラフを扱う
●隣接行列
1
2
3
4
6
5
1 2 3 4 5 6
1 0 2 1 0 0 0
2 2 0 1 1 0 0
3 1 1 0 1 1 1
4 0 1 1 0 1 1
5 0 0 1 1 0 1
6 0 0 1 1 1 1
プログラムでグラフを扱う
●隣接リスト
1
2
3
4
6
5
1 2,2,3
2 1,1,3,4
3 1,2,4,5,6
4 2,3,5,6
5 3,4,6
6 3,4,5,6
木
●閉路のない連結グラフを木という
●辺に向きがあるものを有向木、向きがないもの
を無向木という
根付き木
●頂点の一つを「根」とすることがある
●その頂点の一つ上の頂点を「親」、一つ下の頂
点を「子」と呼ぶ
根
親
子
根付き木の表現
●隣接行列、隣接リストを使う
●親の頂点番号を格納した配列でも表現できる
●図にすると根に向かう有向木
木における全探索
●根から子をたどっていく
●深さ優先探索、幅優先探索
●根のない場合は適当な頂点を根にする
グラフにおける全探索
●すでに通った場所を保存しておく配列を用意
●各頂点について通ったなら1、通ってないなら0
●すでに通った場所に行かないように注意すれ
ば、木と同じように全探索できる

More Related Content

PDF
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
PDF
プログラミングコンテストでのデータ構造
PDF
指数時間アルゴリズム入門
PDF
双対性
PDF
ウェーブレット木の世界
PDF
平面グラフと交通ネットワークのアルゴリズム
PDF
直交領域探索
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造
指数時間アルゴリズム入門
双対性
ウェーブレット木の世界
平面グラフと交通ネットワークのアルゴリズム
直交領域探索

What's hot (20)

PDF
新しい暗号技術
PDF
プログラミングコンテストでの乱択アルゴリズム
PDF
プログラミングコンテストでのデータ構造 2 ~動的木編~
PDF
二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方
PDF
Rolling Hashを殺す話
PDF
AtCoder Regular Contest 039 解説
PDF
はじパタ 10章 クラスタリング 前半
PDF
ユークリッド最小全域木
PDF
色々なダイクストラ高速化
PDF
AtCoder Beginner Contest 006 解説
PDF
ダブリング
PPTX
Chokudai search
PDF
AtCoder Beginner Contest 035 解説
PDF
遺伝的アルゴリズム (Genetic Algorithm)を始めよう!
PDF
数学で解き明かす深層学習の原理
PDF
最適輸送の計算アルゴリズムの研究動向
新しい暗号技術
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでのデータ構造 2 ~動的木編~
二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方
Rolling Hashを殺す話
AtCoder Regular Contest 039 解説
はじパタ 10章 クラスタリング 前半
ユークリッド最小全域木
色々なダイクストラ高速化
AtCoder Beginner Contest 006 解説
ダブリング
Chokudai search
AtCoder Beginner Contest 035 解説
遺伝的アルゴリズム (Genetic Algorithm)を始めよう!
数学で解き明かす深層学習の原理
最適輸送の計算アルゴリズムの研究動向
Ad

Similar to グラフと木 (14)

PDF
2章グラフ理論スピード入門
PDF
競技プログラミング練習会2015 Normal 第3回
PDF
Alloyによるハミルトン閉路
PDF
Alloyへの挑戦
PDF
Image Slide ( Animal Companion in Maze )
PDF
図と実装で理解する『木構造入門』
PDF
AtCoder Beginner Contest 007 解説
PDF
グラフ理論入門 1
PDF
WUPC2nd E問題
PDF
Nazoki
PDF
大規模グラフアルゴリズムの最先端
PDF
Replace
PDF
大規模ネットワークの性質と先端グラフアルゴリズム
PDF
関数プログラミング入門
2章グラフ理論スピード入門
競技プログラミング練習会2015 Normal 第3回
Alloyによるハミルトン閉路
Alloyへの挑戦
Image Slide ( Animal Companion in Maze )
図と実装で理解する『木構造入門』
AtCoder Beginner Contest 007 解説
グラフ理論入門 1
WUPC2nd E問題
Nazoki
大規模グラフアルゴリズムの最先端
Replace
大規模ネットワークの性質と先端グラフアルゴリズム
関数プログラミング入門
Ad

More from 京大 マイコンクラブ (20)

PDF
テキストファイルを読む💪 第1回
PDF
かわいくなろうとしたら語彙力が下がった話
PDF
Common Lisp入門
PDF
多倍長整数の乗算と高速フーリエ変換
PDF
つくってあそぼ ラムダ計算インタプリタ
PDF
Geometry with Unity
PDF
セミコロンレスc++
PDF
エンジニアと健康
PPTX
女の子になれなかった人のために
PDF
Pietで競プロしよう
ODP
もし太陽のコアがIntelCoreだったら
PDF
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
PDF
プログラムを高速化する話Ⅱ 〜GPGPU編〜
PDF
ドット絵でプログラミング!難解言語『Piet』勉強会
PDF
No SSH (@nojima; KMC関東例会)
PDF
DTM練習会2017第1.5回 「伴奏の付け方」
PPTX
hideya流 テストプレイ観察術
PDF
暗号技術入門 秘密の国のアリス 総集編
PDF
C#でゲームを作る2016 第8回
テキストファイルを読む💪 第1回
かわいくなろうとしたら語彙力が下がった話
Common Lisp入門
多倍長整数の乗算と高速フーリエ変換
つくってあそぼ ラムダ計算インタプリタ
Geometry with Unity
セミコロンレスc++
エンジニアと健康
女の子になれなかった人のために
Pietで競プロしよう
もし太陽のコアがIntelCoreだったら
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
プログラムを高速化する話Ⅱ 〜GPGPU編〜
ドット絵でプログラミング!難解言語『Piet』勉強会
No SSH (@nojima; KMC関東例会)
DTM練習会2017第1.5回 「伴奏の付け方」
hideya流 テストプレイ観察術
暗号技術入門 秘密の国のアリス 総集編
C#でゲームを作る2016 第8回

グラフと木