Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
グラフと木
グラフ
●頂点と辺の集合
●辺は頂点と頂点を結ぶ
●辺に向きがあるものを有向グラフ、向きのない
ものを無向グラフという
頂点
辺
無向グラフ
グラフ
●頂点と辺の集合
●辺は頂点と頂点を結ぶ
●辺に向きがあるものを有向グラフ、向きのない
ものを無向グラフという
頂点
辺
有向グラフ
グラフに関する用語
●道(パス):一続きの頂点の列
グラフに関する用語
●閉路(サイクル):始点と終点が同じパス
グラフに関する用語
●距離:2頂点を結ぶ最短の道の長さ
距離: 2
グラフに関する用語
●直径:距離の最大値
直径: 2
グラフに関する用語
●ループ:辺の両端が同じ頂点になっているもの
グラフに関する用語
●多重辺:辺の両端の組が等しい複数の辺
グラフに関する用語
●単純グラフ:ループも多重辺も無いグラフ
単純グラフでない
グラフに関する用語
●単純グラフ:ループも多重辺も無いグラフ
単純グラフである
グラフに関する用語
●連結グラフ:どの2点間にも道があるグラフ
連結でない
グラフに関する用語
●連結グラフ:どの2点間にも道があるグラフ
連結である
グラフに関する用語
●次数:頂点に接続している辺の本数
3
4
5
4
5
3
グラフに関する用語
●正則グラフ:全頂点の次数が等しいグラフ
4
4
4
4
4
4
グラフに関する用語
●完全グラフ:どの2点間にも辺があるグラフ
プログラムでグラフを扱う
●隣接行列
●頂点 から頂点 に伸びる辺の数を とする
●辺に情報がある場合、多重辺に対応できない
●メモリの制約上    ぐらいまでしか使えない
●実装は楽
●隣接リスト
●頂点 から伸びる辺のリストを  に格納する...
プログラムでグラフを扱う
●隣接行列
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
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
●すでに通った場所に行かないように注意すれ
ば、木と同じように全探索できる
Upcoming SlideShare
Loading in …5
×

グラフと木

4,167 views

Published on

競技プログラミング練習会2014 Normalで使ったスライドです。グラフと木に関する用語についてまとめています。

Published in: Technology
  • Be the first to comment

グラフと木

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

×