Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

Graph Algorithms Part 1

500 visualizaciones

Publicado el

Graph Algorithms Part 1

Publicado en: Tecnología
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Graph Algorithms Part 1

  1. 1. グラフアルゴリズムその1 2017-11-07 宮川 拓
  2. 2.  グラフアルゴリズムを勉強しよう  背景  機械学習の部分問題として出てきがち  ex.物体検出, 形態素解析, ...  最短経路問題が多そう? 概要 2/57
  3. 3. 参考文献  コルメン他 『アルゴリズム・イントロダクショ ン』第3版(2013, 近代科学社) 3/57
  4. 4. アジェンダ  グラフに関する用語と概念  グラフの探索  トポロジカルソート  単一始点最短経路問題(次回) 4/57
  5. 5. グラフに関する用語と概念 5/57
  6. 6. グラフの構成  グラフ:=  頂点 (vertex) と、 頂点同士をつなぐ辺 (edge) 、 からなるデータ構造 6/57
  7. 7. グラフの構成  グラフG=(V, E)  ただしV={v0, v1, ... v5}, E={e0, e1, ... e5} v0 v1 v2 v5 v3 v4 e0 e1 e2 e3 e4 e5 e6 7/57
  8. 8. 有向グラフと無向グラフ 有向グラフ 無向グラフ 8/57
  9. 9. 有向グラフと無向グラフ  無向グラフは有向グラフの特殊な場合 とみなすこともできる  つまり、(v0, v1)がG.Eの元であるとき、 必ず(v1, v0)もG.Eの元であるような有 向グラフ、と考えれば良い 9/57
  10. 10. 道 (path)  列‹v0, v1, ... vk›について、 すべての(v[i], v[i+1])がG.Eの元で あれば、頂点v0からvkへの道 (path)と呼ぶ 10/57
  11. 11. 閉路 (cycle)  最初の要素と最後の要素が同じ頂点で あるような道を閉路(cycle)と呼ぶ 11/57
  12. 12. 有向非循環グラフ (DAG)  閉路のない有向グラフを有向非循環グ ラフ (Directed Acyclic Graph)と 呼ぶ  木はDAGの特殊な場合とみなせる  ただひとつの頂点(根)から他のすべて の頂点へ道がたどれること  根以外の頂点への根からの道はひとつだ けであること 12/57
  13. 13. プログラム上のグラフの表現  隣接リスト 0 1 2 5 3 4 0 → {2, 3} 1 → {1} 2 → {1, 3, 4} 3 → {} 4 → {2} 5 → {} 省メモリだけど転置グラフが作りづらい 13/57
  14. 14. プログラム上のグラフの表現  隣接行列 0 1 2 5 3 4 0 0 1 1 0 0 0 1 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 メモリ食いだけど転置グラフが作りやすい 14/57
  15. 15. グラフの探索 15/57
  16. 16. グラフの探索  幅優先探索  コード  辺の重みがすべて等しいときの、 最短経路問題の解法とかんがえられる  深さ優先探索  コード  トポロジカルソートなどの解法の一部と して使われる 16/57
  17. 17. グラフの探索  幅優先探索 a b c f d e Queue = ‹a› 0 ∞ ∞ ∞ ∞ ∞ 17/57
  18. 18. グラフの探索  幅優先探索 a b c f d e Queue = ‹c, d› 0 ∞ 1 1 ∞ ∞ 18/57
  19. 19. グラフの探索  幅優先探索 a b c f d e Queue = ‹d, b, e› 0 2 1 1 2 ∞ 19/57
  20. 20. グラフの探索  幅優先探索 a b c f d e Queue = ‹b, e› 0 2 1 1 2 ∞ 20/57
  21. 21. グラフの探索  幅優先探索 a b c f d e Queue = ‹e› 0 2 1 1 2 ∞ 21/57
  22. 22. グラフの探索  幅優先探索 a b c f d e Queue = ‹› 0 2 1 1 2 ∞ 22/57
  23. 23. グラフの探索  深さ優先探索 a b c f d e まずはaの探索を開始 23/57
  24. 24. グラフの探索  深さ優先探索 a b c f d e aが指している先であるcの探索を開始 24/57
  25. 25. グラフの探索  深さ優先探索 a b c f d e cが指している先であるbの探索を開始 25/57
  26. 26. グラフの探索  深さ優先探索 a b c f d e bが指している先(b自身)はすでに探索済み したがってbは探索終了 26/57
  27. 27. グラフの探索  深さ優先探索 a b c f d e 27/57
  28. 28. グラフの探索  深さ優先探索 a b c f d e 28/57
  29. 29. グラフの探索  深さ優先探索 a b c f d e 29/57
  30. 30. グラフの探索  深さ優先探索 a b c f d e 30/57
  31. 31. グラフの探索  深さ優先探索 a b c f d e cが指している先に未探索の頂点はない したがってcは探索終了 31/57
  32. 32. グラフの探索  深さ優先探索 a b c f d e aも探索終了 32/57
  33. 33. グラフの探索  深さ優先探索 a b c f d e 多くの場合深さ優先探索では全頂点をなめる トポロジカルソート等での使いやすさのため 33/57
  34. 34. グラフの探索  深さ優先探索 a b c f d e 34/57
  35. 35. トポロジカルソート 35/57
  36. 36. トポロジカルソート  トポロジカルソート:  DAGの頂点を、前後関係を保って一列 に並べること 36/57
  37. 37. トポロジカルソート  ある日の家事のDAG ア サ リ の 砂 抜 き ア ン チ ョ ビ す り つ ぶ す ニ ン ニ ク み じ ん 切 り ア ン チ ョ ビ と ニ ン ニ ク を 炒 め る 蓋 を し て 蒸 す 白 身 魚 と ア サ リ と ト マ ト を 投 入 ア ン チ ョ ビ つ ま み 食 い 洗 濯 物 取 り 入 れ る ア イ ロ ン 掛 け る 37/57
  38. 38. トポロジカルソート ア サ リ の 砂 抜 き ア ン チ ョ ビ す り つ ぶ す ニ ン ニ ク み じ ん 切 り ア ン チ ョ ビ と ニ ン ニ ク を 炒 め る ア ン チ ョ ビ つ ま み 食 い 洗 濯 物 を 取 り 入 れ る 白 身 魚 と ア サ リ と ト マ ト を 投 入 蓋 を し て 蒸 す ア イ ロ ン 掛 け る  手順の例 38/57
  39. 39. トポロジカルソート  アルゴリズム  全頂点を深さ優先探索する  探索が終わった頂点から順番に、 結果列の先頭に追加する  コード 39/57
  40. 40. トポロジカルソート ア サ リ の 砂 抜 き ア ン チ ョ ビ す り つ ぶ す ニ ン ニ ク み じ ん 切 り ア ン チ ョ ビ と ニ ン ニ ク を 炒 め る 蓋 を し て 蒸 す 白 身 魚 と ア サ リ と ト マ ト を 投 入 ア ン チ ョ ビ つ ま み 食 い 洗 濯 物 取 り 入 れ る ア イ ロ ン 掛 け る 結 果 : ∅ 40/57
  41. 41. トポロジカルソート ア サ リ の 砂 抜 き ア ン チ ョ ビ す り つ ぶ す ニ ン ニ ク み じ ん 切 り ア ン チ ョ ビ と ニ ン ニ ク を 炒 め る 蓋 を し て 蒸 す 白 身 魚 と ア サ リ と ト マ ト を 投 入 ア ン チ ョ ビ つ ま み 食 い 洗 濯 物 取 り 入 れ る ア イ ロ ン 掛 け る 結 果 : ∅ 41/57
  42. 42. トポロジカルソート ア サ リ の 砂 抜 き ア ン チ ョ ビ す り つ ぶ す ニ ン ニ ク み じ ん 切 り ア ン チ ョ ビ と ニ ン ニ ク を 炒 め る 蓋 を し て 蒸 す 白 身 魚 と ア サ リ と ト マ ト を 投 入 ア ン チ ョ ビ つ ま み 食 い 洗 濯 物 取 り 入 れ る ア イ ロ ン 掛 け る 結 果 : ∅ 42/57
  43. 43. トポロジカルソート ア サ リ の 砂 抜 き ア ン チ ョ ビ す り つ ぶ す ニ ン ニ ク み じ ん 切 り ア ン チ ョ ビ と ニ ン ニ ク を 炒 め る 蓋 を し て 蒸 す 白 身 魚 と ア サ リ と ト マ ト を 投 入 ア ン チ ョ ビ つ ま み 食 い 洗 濯 物 取 り 入 れ る ア イ ロ ン 掛 け る 結 果 : 蓋 を し て 蒸 す 43/57
  44. 44. トポロジカルソート ア サ リ の 砂 抜 き ア ン チ ョ ビ す り つ ぶ す ニ ン ニ ク み じ ん 切 り ア ン チ ョ ビ と ニ ン ニ ク を 炒 め る 蓋 を し て 蒸 す 白 身 魚 と ア サ リ と ト マ ト を 投 入 ア ン チ ョ ビ つ ま み 食 い 洗 濯 物 取 り 入 れ る ア イ ロ ン 掛 け る 結 果 : 白 身 魚 と ア サ リ と ト マ ト を 投 入 → 蓋 を し て 蒸 す 44/57
  45. 45. トポロジカルソート ア サ リ の 砂 抜 き ア ン チ ョ ビ す り つ ぶ す ニ ン ニ ク み じ ん 切 り ア ン チ ョ ビ と ニ ン ニ ク を 炒 め る 蓋 を し て 蒸 す 白 身 魚 と ア サ リ と ト マ ト を 投 入 ア ン チ ョ ビ つ ま み 食 い 洗 濯 物 取 り 入 れ る ア イ ロ ン 掛 け る 結 果 : 白 身 魚 と ア サ リ と ト マ ト を 投 入 → 蓋 を し て 蒸 す 45/57
  46. 46. トポロジカルソート ア サ リ の 砂 抜 き ア ン チ ョ ビ す り つ ぶ す ニ ン ニ ク み じ ん 切 り ア ン チ ョ ビ と ニ ン ニ ク を 炒 め る 蓋 を し て 蒸 す 白 身 魚 と ア サ リ と ト マ ト を 投 入 ア ン チ ョ ビ つ ま み 食 い 洗 濯 物 取 り 入 れ る ア イ ロ ン 掛 け る 結 果 : ア ン チ ョ ビ つ ま み 食 い → 白 身 魚 と ア サ リ と ト マ ト を 投 入 → 蓋 を し て 蒸 す 46/57
  47. 47. トポロジカルソート ア サ リ の 砂 抜 き ア ン チ ョ ビ す り つ ぶ す ニ ン ニ ク み じ ん 切 り ア ン チ ョ ビ と ニ ン ニ ク を 炒 め る 蓋 を し て 蒸 す 白 身 魚 と ア サ リ と ト マ ト を 投 入 ア ン チ ョ ビ つ ま み 食 い 洗 濯 物 取 り 入 れ る ア イ ロ ン 掛 け る 結 果 : ア ン チ ョ ビ と ニ ン ニ ク を 炒 め る → ア ン チ ョ ビ つ ま み 食 い → 白 身 魚 と ア サ リ と ト マ ト を 投 入 → 蓋 を し て 蒸 す 47/57
  48. 48. トポロジカルソート ア サ リ の 砂 抜 き ア ン チ ョ ビ す り つ ぶ す ニ ン ニ ク み じ ん 切 り ア ン チ ョ ビ と ニ ン ニ ク を 炒 め る 蓋 を し て 蒸 す 白 身 魚 と ア サ リ と ト マ ト を 投 入 ア ン チ ョ ビ つ ま み 食 い 洗 濯 物 取 り 入 れ る ア イ ロ ン 掛 け る 結 果 : ア ン チ ョ ビ と ニ ン ニ ク を 炒 め る → ア ン チ ョ ビ つ ま み 食 い → 白 身 魚 と ア サ リ と ト マ ト を 投 入 → 蓋 を し て 蒸 す 48/57
  49. 49. トポロジカルソート ア サ リ の 砂 抜 き ア ン チ ョ ビ す り つ ぶ す ニ ン ニ ク み じ ん 切 り ア ン チ ョ ビ と ニ ン ニ ク を 炒 め る 蓋 を し て 蒸 す 白 身 魚 と ア サ リ と ト マ ト を 投 入 ア ン チ ョ ビ つ ま み 食 い 洗 濯 物 取 り 入 れ る ア イ ロ ン 掛 け る 結 果 : ア ン チ ョ ビ と ニ ン ニ ク を 炒 め る → ア ン チ ョ ビ つ ま み 食 い → 白 身 魚 と ア サ リ と ト マ ト を 投 入 → 蓋 を し て 蒸 す 49/57
  50. 50. トポロジカルソート ア サ リ の 砂 抜 き ア ン チ ョ ビ す り つ ぶ す ニ ン ニ ク み じ ん 切 り ア ン チ ョ ビ と ニ ン ニ ク を 炒 め る 蓋 を し て 蒸 す 白 身 魚 と ア サ リ と ト マ ト を 投 入 ア ン チ ョ ビ つ ま み 食 い 洗 濯 物 取 り 入 れ る ア イ ロ ン 掛 け る 結 果 : ア イ ロ ン 掛 け る → ア ン チ ョ ビ と ニ ン ニ ク を 炒 め る → ア ン チ ョ ビ つ ま み 食 い → 白 身 魚 と ア サ リ と ト マ ト を 投 入 → 蓋 を し て 蒸 す 50/57
  51. 51. トポロジカルソート ア サ リ の 砂 抜 き ア ン チ ョ ビ す り つ ぶ す ニ ン ニ ク み じ ん 切 り ア ン チ ョ ビ と ニ ン ニ ク を 炒 め る 蓋 を し て 蒸 す 白 身 魚 と ア サ リ と ト マ ト を 投 入 ア ン チ ョ ビ つ ま み 食 い 洗 濯 物 取 り 入 れ る ア イ ロ ン 掛 け る 結 果 : 洗 濯 物 取 り 入 れ る → ア イ ロ ン 掛 け る → ア ン チ ョ ビ と ニ ン ニ ク を 炒 め る → ア ン チ ョ ビ つ ま み 食 い → 白 身 魚 と ア サ リ と ト マ ト を 投 入 → 蓋 を し て 蒸 す 51/57
  52. 52. トポロジカルソート ア サ リ の 砂 抜 き ア ン チ ョ ビ す り つ ぶ す ニ ン ニ ク み じ ん 切 り ア ン チ ョ ビ と ニ ン ニ ク を 炒 め る 蓋 を し て 蒸 す 白 身 魚 と ア サ リ と ト マ ト を 投 入 ア ン チ ョ ビ つ ま み 食 い 洗 濯 物 取 り 入 れ る ア イ ロ ン 掛 け る 結 果 : 洗 濯 物 取 り 入 れ る → ア イ ロ ン 掛 け る → ア ン チ ョ ビ と ニ ン ニ ク を 炒 め る → ア ン チ ョ ビ つ ま み 食 い → 白 身 魚 と ア サ リ と ト マ ト を 投 入 → 蓋 を し て 蒸 す 52/57
  53. 53. トポロジカルソート ア サ リ の 砂 抜 き ア ン チ ョ ビ す り つ ぶ す ニ ン ニ ク み じ ん 切 り ア ン チ ョ ビ と ニ ン ニ ク を 炒 め る 蓋 を し て 蒸 す 白 身 魚 と ア サ リ と ト マ ト を 投 入 ア ン チ ョ ビ つ ま み 食 い 洗 濯 物 取 り 入 れ る ア イ ロ ン 掛 け る 結 果 : ア サ リ の 砂 抜 き → 洗 濯 物 取 り 入 れ る → ア イ ロ ン 掛 け る → ア ン チ ョ ビ と ニ ン ニ ク を 炒 め る → ア ン チ ョ ビ つ ま み 食 い → 白 身 魚 と ア サ リ と ト マ ト を 投 入 → 蓋 を し て 蒸 す 53/57
  54. 54. トポロジカルソート ア サ リ の 砂 抜 き ア ン チ ョ ビ す り つ ぶ す ニ ン ニ ク み じ ん 切 り ア ン チ ョ ビ と ニ ン ニ ク を 炒 め る 蓋 を し て 蒸 す 白 身 魚 と ア サ リ と ト マ ト を 投 入 ア ン チ ョ ビ つ ま み 食 い 洗 濯 物 取 り 入 れ る ア イ ロ ン 掛 け る 結 果 : ア サ リ の 砂 抜 き → 洗 濯 物 取 り 入 れ る → ア イ ロ ン 掛 け る → ア ン チ ョ ビ と ニ ン ニ ク を 炒 め る → ア ン チ ョ ビ つ ま み 食 い → 白 身 魚 と ア サ リ と ト マ ト を 投 入 → 蓋 を し て 蒸 す 54/57
  55. 55. トポロジカルソート ア サ リ の 砂 抜 き ア ン チ ョ ビ す り つ ぶ す ニ ン ニ ク み じ ん 切 り ア ン チ ョ ビ と ニ ン ニ ク を 炒 め る 蓋 を し て 蒸 す 白 身 魚 と ア サ リ と ト マ ト を 投 入 ア ン チ ョ ビ つ ま み 食 い 洗 濯 物 取 り 入 れ る ア イ ロ ン 掛 け る 結 果 : ア ン チ ョ ビ す り つ ぶ す → ア サ リ の 砂 抜 き → 洗 濯 物 取 り 入 れ る → ア イ ロ ン 掛 け る → ア ン チ ョ ビ と ニ ン ニ ク を 炒 め る → ア ン チ ョ ビ つ ま み 食 い → 白 身 魚 と ア サ リ と ト マ ト を 投 入 → 蓋 を し て 蒸 す 55/57
  56. 56. トポロジカルソート ア サ リ の 砂 抜 き ア ン チ ョ ビ す り つ ぶ す ニ ン ニ ク み じ ん 切 り ア ン チ ョ ビ と ニ ン ニ ク を 炒 め る 蓋 を し て 蒸 す 白 身 魚 と ア サ リ と ト マ ト を 投 入 ア ン チ ョ ビ つ ま み 食 い 洗 濯 物 取 り 入 れ る ア イ ロ ン 掛 け る 結 果 : ア ン チ ョ ビ す り つ ぶ す → ア サ リ の 砂 抜 き → 洗 濯 物 取 り 入 れ る → ア イ ロ ン 掛 け る → ア ン チ ョ ビ と ニ ン ニ ク を 炒 め る → ア ン チ ョ ビ つ ま み 食 い → 白 身 魚 と ア サ リ と ト マ ト を 投 入 → 蓋 を し て 蒸 す 56/57
  57. 57. トポロジカルソート ア サ リ の 砂 抜 き ア ン チ ョ ビ す り つ ぶ す ニ ン ニ ク み じ ん 切 り ア ン チ ョ ビ と ニ ン ニ ク を 炒 め る 蓋 を し て 蒸 す 白 身 魚 と ア サ リ と ト マ ト を 投 入 ア ン チ ョ ビ つ ま み 食 い 洗 濯 物 取 り 入 れ る ア イ ロ ン 掛 け る 結 果 : ニ ン ニ ク み じ ん 切 り → ア ン チ ョ ビ す り つ ぶ す → ア サ リ の 砂 抜 き → 洗 濯 物 取 り 入 れ る → ア イ ロ ン 掛 け る → ア ン チ ョ ビ と ニ ン ニ ク を 炒 め る → ア ン チ ョ ビ つ ま み 食 い → 白 身 魚 と ア サ リ と ト マ ト を 投 入 → 蓋 を し て 蒸 す 57/57

×