SlideShare a Scribd company logo
GraphX Advent Calendar Day15
最短経路探索
1 4
1
• この例だと、頂点1から頂点3へのルートは3つあ
るが、最短は1→2→3の距離2。
2
5
3
GraphX Advent Calendar Day15
最短経路探索
1 4
2
• 各頂点にリストを持たせる
• リストの1行目として自分のIDとその距離0を持つ
2 5
3
事前準備
{(1,0)} {(4,0)}
{(2,0)}
{(3,0)}
{(5,0)}
GraphX Advent Calendar Day15
最短経路探索
1 4
3
• 自分が持つリストを接続先頂点に送信する
2 5
3
Iteration1
{(1,0)} {(4,0)}
{(2,0)}
{(3,0)}
{(5,0)}
{(1,0)}
{(2,0)}
{(5,0)}
{(4,0)}
{(4,0)}
GraphX Advent Calendar Day15
最短経路探索
1 4
4
• 受信したリストの距離を1加算しつつ、そのリスト
を自分のリストにマージする
2 5
3
Iteration1
{(1,0)} {(4,0),(1,1)}
{(2,0),(1,1),(4,1)}
{(3,0),(2,1),(5,1)}
{(5,0),(4,1)}
GraphX Advent Calendar Day15
最短経路探索
1 4
5
• 自分が持つリストを接続先頂点に送る。

(前のIterationでメッセージを受信した頂点だけが
送信 = Pregel の仕様)
2 5
3
Iteration2
{(1,0)} {(4,0),(1,1)}
{(2,0),(1,1),(4,1)}
{(3,0),(2,1),(5,1)}
{(5,0),(4,1)}
{(2,0),(1,1),(4,1)}
{(4,0),(1,1)}
{(4,0),(1,1)}
{(5,0),(4,1)}
GraphX Advent Calendar Day15
最短経路探索
1 4
6
• 受信したリストの距離を1加算しつつ、そのリストを自分の
リストにマージする
• 既にリストにその頂点がある場合は短い方の距離を選択する
2 5
3
Iteration2
{(1,0)} {(4,0),(1,1)}
{(2,0),(1,1),(4,1)}
{(3,0),(1,2),(2,1),(4,2),(5,1)}
{(5,0),(4,1),(1,2)}
GraphX Advent Calendar Day15
最短経路探索
1 4
7
• 自分のリストを接続先頂点に送信する
2 5
3
Iteration3
{(1,0)} {(4,0),(1,1)}
{(2,0),(1,1),(4,1)}
{(3,0),(1,2),(2,1),(4,2),(5,1)}
{(5,0),(4,1),(1,2)}
{(2,0),(1,1),(4,1)} {(5,0),(4,1),(1,2)}
GraphX Advent Calendar Day15
最短経路探索
1 4
8
• 受信したリストの距離を1加算しつつ、そのリストを自分の
リストにマージする
• 既にリストにその頂点がある場合は短い方の距離を選択する
2 5
3
Iteration3
{(1,0)} {(4,0),(1,1)}
{(2,0),(1,1),(4,1)}
{(3,0),(1,2),(2,1),(4,2),(5,1)}
{(5,0),(4,1),(1,2)}
GraphX Advent Calendar Day15
最短経路探索
1 4
9
• 頂点3から見た、頂点1との距離が2になっている
ことを確認
2 5
3
結果
{(1,0)} {(4,0),(1,1)}
{(2,0),(1,1),(4,1)}
{(3,0),(1,2),(2,1),(4,2),(5,1)}
{(5,0),(4,1),(1,2)}
Ad

More Related Content

Viewers also liked (9)

グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介
グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介
グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介
ippei_suzuki
 
Spark Streaming と Spark GraphX を使用したTwitter解析による レコメンドサービス例
Spark Streaming と Spark GraphX を使用したTwitter解析による レコメンドサービス例Spark Streaming と Spark GraphX を使用したTwitter解析による レコメンドサービス例
Spark Streaming と Spark GraphX を使用したTwitter解析による レコメンドサービス例
Junichi Noda
 
Pythonで入門するApache Spark at PyCon2016
Pythonで入門するApache Spark at PyCon2016Pythonで入門するApache Spark at PyCon2016
Pythonで入門するApache Spark at PyCon2016
Tatsuya Atsumi
 
Spark GraphX で始めるグラフ解析
Spark GraphX で始めるグラフ解析Spark GraphX で始めるグラフ解析
Spark GraphX で始めるグラフ解析
Yosuke Mizutani
 
Sparkで始めるお手軽グラフデータ分析
Sparkで始めるお手軽グラフデータ分析Sparkで始めるお手軽グラフデータ分析
Sparkで始めるお手軽グラフデータ分析
Nagato Kasaki
 
Neo4j の「データ操作プログラミング」から 「ビジュアライズ」まで
Neo4j の「データ操作プログラミング」から 「ビジュアライズ」までNeo4j の「データ操作プログラミング」から 「ビジュアライズ」まで
Neo4j の「データ操作プログラミング」から 「ビジュアライズ」まで
Keiichiro Seida
 
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
Takahiro Inoue
 
『繋がり』を見る: Cytoscapeと周辺ツールを使ったグラフデータ可視化入門
『繋がり』を見る: Cytoscapeと周辺ツールを使ったグラフデータ可視化入門『繋がり』を見る: Cytoscapeと周辺ツールを使ったグラフデータ可視化入門
『繋がり』を見る: Cytoscapeと周辺ツールを使ったグラフデータ可視化入門
Keiichiro Ono
 
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
NTT DATA OSS Professional Services
 
グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介
グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介
グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介
ippei_suzuki
 
Spark Streaming と Spark GraphX を使用したTwitter解析による レコメンドサービス例
Spark Streaming と Spark GraphX を使用したTwitter解析による レコメンドサービス例Spark Streaming と Spark GraphX を使用したTwitter解析による レコメンドサービス例
Spark Streaming と Spark GraphX を使用したTwitter解析による レコメンドサービス例
Junichi Noda
 
Pythonで入門するApache Spark at PyCon2016
Pythonで入門するApache Spark at PyCon2016Pythonで入門するApache Spark at PyCon2016
Pythonで入門するApache Spark at PyCon2016
Tatsuya Atsumi
 
Spark GraphX で始めるグラフ解析
Spark GraphX で始めるグラフ解析Spark GraphX で始めるグラフ解析
Spark GraphX で始めるグラフ解析
Yosuke Mizutani
 
Sparkで始めるお手軽グラフデータ分析
Sparkで始めるお手軽グラフデータ分析Sparkで始めるお手軽グラフデータ分析
Sparkで始めるお手軽グラフデータ分析
Nagato Kasaki
 
Neo4j の「データ操作プログラミング」から 「ビジュアライズ」まで
Neo4j の「データ操作プログラミング」から 「ビジュアライズ」までNeo4j の「データ操作プログラミング」から 「ビジュアライズ」まで
Neo4j の「データ操作プログラミング」から 「ビジュアライズ」まで
Keiichiro Seida
 
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
Takahiro Inoue
 
『繋がり』を見る: Cytoscapeと周辺ツールを使ったグラフデータ可視化入門
『繋がり』を見る: Cytoscapeと周辺ツールを使ったグラフデータ可視化入門『繋がり』を見る: Cytoscapeと周辺ツールを使ったグラフデータ可視化入門
『繋がり』を見る: Cytoscapeと周辺ツールを使ったグラフデータ可視化入門
Keiichiro Ono
 
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
NTT DATA OSS Professional Services
 

More from 鉄平 土佐 (19)

GraphX によるグラフ分析処理の実例と入門
GraphX によるグラフ分析処理の実例と入門GraphX によるグラフ分析処理の実例と入門
GraphX によるグラフ分析処理の実例と入門
鉄平 土佐
 
Reactテストに役立つ実装の工夫
Reactテストに役立つ実装の工夫Reactテストに役立つ実装の工夫
Reactテストに役立つ実装の工夫
鉄平 土佐
 
GraphX Advent Calendar Day 13
GraphX Advent Calendar Day 13GraphX Advent Calendar Day 13
GraphX Advent Calendar Day 13
鉄平 土佐
 
GraphX Advent Calendar Day12 : Pregel概要
GraphX Advent Calendar Day12 : Pregel概要GraphX Advent Calendar Day12 : Pregel概要
GraphX Advent Calendar Day12 : Pregel概要
鉄平 土佐
 
Asakusa fwはじめの一歩 0.7.0
Asakusa fwはじめの一歩 0.7.0Asakusa fwはじめの一歩 0.7.0
Asakusa fwはじめの一歩 0.7.0
鉄平 土佐
 
Spark GraphXについて @Spark Meetup 2014/9/8
Spark GraphXについて @Spark Meetup 2014/9/8Spark GraphXについて @Spark Meetup 2014/9/8
Spark GraphXについて @Spark Meetup 2014/9/8
鉄平 土佐
 
「Asakusa0.7の新機能で、テストデータをどうドキュメントするのか的な実用的なアレ」 by @okachimachiorz1
「Asakusa0.7の新機能で、テストデータをどうドキュメントするのか的な実用的なアレ」 by @okachimachiorz1「Asakusa0.7の新機能で、テストデータをどうドキュメントするのか的な実用的なアレ」 by @okachimachiorz1
「Asakusa0.7の新機能で、テストデータをどうドキュメントするのか的な実用的なアレ」 by @okachimachiorz1
鉄平 土佐
 
GraphXはScalaエンジニアにとってのブルーオーシャン @ Scala Matsuri 2014
GraphXはScalaエンジニアにとってのブルーオーシャン @ Scala Matsuri 2014GraphXはScalaエンジニアにとってのブルーオーシャン @ Scala Matsuri 2014
GraphXはScalaエンジニアにとってのブルーオーシャン @ Scala Matsuri 2014
鉄平 土佐
 
GraphX is the blue ocean for scala engineers @ Scala Matsuri 2014
GraphX is the blue ocean for scala engineers @ Scala Matsuri 2014GraphX is the blue ocean for scala engineers @ Scala Matsuri 2014
GraphX is the blue ocean for scala engineers @ Scala Matsuri 2014
鉄平 土佐
 
Asakusa fw演算子チートシートについて
Asakusa fw演算子チートシートについてAsakusa fw演算子チートシートについて
Asakusa fw演算子チートシートについて
鉄平 土佐
 
Asakusa fw勉強会2014真夏
Asakusa fw勉強会2014真夏Asakusa fw勉強会2014真夏
Asakusa fw勉強会2014真夏
鉄平 土佐
 
Asakusa Framework 勉強会 2014 夏
Asakusa Framework 勉強会 2014 夏Asakusa Framework 勉強会 2014 夏
Asakusa Framework 勉強会 2014 夏
鉄平 土佐
 
Asakusa Framework はじめの一歩 ( ver 0.6.2 )
Asakusa Framework はじめの一歩 ( ver 0.6.2 )Asakusa Framework はじめの一歩 ( ver 0.6.2 )
Asakusa Framework はじめの一歩 ( ver 0.6.2 )
鉄平 土佐
 
Asakusa fwはじめの一歩・改
Asakusa fwはじめの一歩・改Asakusa fwはじめの一歩・改
Asakusa fwはじめの一歩・改
鉄平 土佐
 
Asakusa fw勉強会2014冬
Asakusa fw勉強会2014冬Asakusa fw勉強会2014冬
Asakusa fw勉強会2014冬
鉄平 土佐
 
Scala稟議の通し方(公開版)
Scala稟議の通し方(公開版)Scala稟議の通し方(公開版)
Scala稟議の通し方(公開版)
鉄平 土佐
 
Scala active record
Scala active recordScala active record
Scala active record
鉄平 土佐
 
はてブちう
はてブちうはてブちう
はてブちう
鉄平 土佐
 
GraphX によるグラフ分析処理の実例と入門
GraphX によるグラフ分析処理の実例と入門GraphX によるグラフ分析処理の実例と入門
GraphX によるグラフ分析処理の実例と入門
鉄平 土佐
 
Reactテストに役立つ実装の工夫
Reactテストに役立つ実装の工夫Reactテストに役立つ実装の工夫
Reactテストに役立つ実装の工夫
鉄平 土佐
 
GraphX Advent Calendar Day 13
GraphX Advent Calendar Day 13GraphX Advent Calendar Day 13
GraphX Advent Calendar Day 13
鉄平 土佐
 
GraphX Advent Calendar Day12 : Pregel概要
GraphX Advent Calendar Day12 : Pregel概要GraphX Advent Calendar Day12 : Pregel概要
GraphX Advent Calendar Day12 : Pregel概要
鉄平 土佐
 
Asakusa fwはじめの一歩 0.7.0
Asakusa fwはじめの一歩 0.7.0Asakusa fwはじめの一歩 0.7.0
Asakusa fwはじめの一歩 0.7.0
鉄平 土佐
 
Spark GraphXについて @Spark Meetup 2014/9/8
Spark GraphXについて @Spark Meetup 2014/9/8Spark GraphXについて @Spark Meetup 2014/9/8
Spark GraphXについて @Spark Meetup 2014/9/8
鉄平 土佐
 
「Asakusa0.7の新機能で、テストデータをどうドキュメントするのか的な実用的なアレ」 by @okachimachiorz1
「Asakusa0.7の新機能で、テストデータをどうドキュメントするのか的な実用的なアレ」 by @okachimachiorz1「Asakusa0.7の新機能で、テストデータをどうドキュメントするのか的な実用的なアレ」 by @okachimachiorz1
「Asakusa0.7の新機能で、テストデータをどうドキュメントするのか的な実用的なアレ」 by @okachimachiorz1
鉄平 土佐
 
GraphXはScalaエンジニアにとってのブルーオーシャン @ Scala Matsuri 2014
GraphXはScalaエンジニアにとってのブルーオーシャン @ Scala Matsuri 2014GraphXはScalaエンジニアにとってのブルーオーシャン @ Scala Matsuri 2014
GraphXはScalaエンジニアにとってのブルーオーシャン @ Scala Matsuri 2014
鉄平 土佐
 
GraphX is the blue ocean for scala engineers @ Scala Matsuri 2014
GraphX is the blue ocean for scala engineers @ Scala Matsuri 2014GraphX is the blue ocean for scala engineers @ Scala Matsuri 2014
GraphX is the blue ocean for scala engineers @ Scala Matsuri 2014
鉄平 土佐
 
Asakusa fw演算子チートシートについて
Asakusa fw演算子チートシートについてAsakusa fw演算子チートシートについて
Asakusa fw演算子チートシートについて
鉄平 土佐
 
Asakusa fw勉強会2014真夏
Asakusa fw勉強会2014真夏Asakusa fw勉強会2014真夏
Asakusa fw勉強会2014真夏
鉄平 土佐
 
Asakusa Framework 勉強会 2014 夏
Asakusa Framework 勉強会 2014 夏Asakusa Framework 勉強会 2014 夏
Asakusa Framework 勉強会 2014 夏
鉄平 土佐
 
Asakusa Framework はじめの一歩 ( ver 0.6.2 )
Asakusa Framework はじめの一歩 ( ver 0.6.2 )Asakusa Framework はじめの一歩 ( ver 0.6.2 )
Asakusa Framework はじめの一歩 ( ver 0.6.2 )
鉄平 土佐
 
Asakusa fwはじめの一歩・改
Asakusa fwはじめの一歩・改Asakusa fwはじめの一歩・改
Asakusa fwはじめの一歩・改
鉄平 土佐
 
Asakusa fw勉強会2014冬
Asakusa fw勉強会2014冬Asakusa fw勉強会2014冬
Asakusa fw勉強会2014冬
鉄平 土佐
 
Scala稟議の通し方(公開版)
Scala稟議の通し方(公開版)Scala稟議の通し方(公開版)
Scala稟議の通し方(公開版)
鉄平 土佐
 
Ad

GraphX Advent Calendar Day15

  • 1. GraphX Advent Calendar Day15 最短経路探索 1 4 1 • この例だと、頂点1から頂点3へのルートは3つあ るが、最短は1→2→3の距離2。 2 5 3
  • 2. GraphX Advent Calendar Day15 最短経路探索 1 4 2 • 各頂点にリストを持たせる • リストの1行目として自分のIDとその距離0を持つ 2 5 3 事前準備 {(1,0)} {(4,0)} {(2,0)} {(3,0)} {(5,0)}
  • 3. GraphX Advent Calendar Day15 最短経路探索 1 4 3 • 自分が持つリストを接続先頂点に送信する 2 5 3 Iteration1 {(1,0)} {(4,0)} {(2,0)} {(3,0)} {(5,0)} {(1,0)} {(2,0)} {(5,0)} {(4,0)} {(4,0)}
  • 4. GraphX Advent Calendar Day15 最短経路探索 1 4 4 • 受信したリストの距離を1加算しつつ、そのリスト を自分のリストにマージする 2 5 3 Iteration1 {(1,0)} {(4,0),(1,1)} {(2,0),(1,1),(4,1)} {(3,0),(2,1),(5,1)} {(5,0),(4,1)}
  • 5. GraphX Advent Calendar Day15 最短経路探索 1 4 5 • 自分が持つリストを接続先頂点に送る。
 (前のIterationでメッセージを受信した頂点だけが 送信 = Pregel の仕様) 2 5 3 Iteration2 {(1,0)} {(4,0),(1,1)} {(2,0),(1,1),(4,1)} {(3,0),(2,1),(5,1)} {(5,0),(4,1)} {(2,0),(1,1),(4,1)} {(4,0),(1,1)} {(4,0),(1,1)} {(5,0),(4,1)}
  • 6. GraphX Advent Calendar Day15 最短経路探索 1 4 6 • 受信したリストの距離を1加算しつつ、そのリストを自分の リストにマージする • 既にリストにその頂点がある場合は短い方の距離を選択する 2 5 3 Iteration2 {(1,0)} {(4,0),(1,1)} {(2,0),(1,1),(4,1)} {(3,0),(1,2),(2,1),(4,2),(5,1)} {(5,0),(4,1),(1,2)}
  • 7. GraphX Advent Calendar Day15 最短経路探索 1 4 7 • 自分のリストを接続先頂点に送信する 2 5 3 Iteration3 {(1,0)} {(4,0),(1,1)} {(2,0),(1,1),(4,1)} {(3,0),(1,2),(2,1),(4,2),(5,1)} {(5,0),(4,1),(1,2)} {(2,0),(1,1),(4,1)} {(5,0),(4,1),(1,2)}
  • 8. GraphX Advent Calendar Day15 最短経路探索 1 4 8 • 受信したリストの距離を1加算しつつ、そのリストを自分の リストにマージする • 既にリストにその頂点がある場合は短い方の距離を選択する 2 5 3 Iteration3 {(1,0)} {(4,0),(1,1)} {(2,0),(1,1),(4,1)} {(3,0),(1,2),(2,1),(4,2),(5,1)} {(5,0),(4,1),(1,2)}
  • 9. GraphX Advent Calendar Day15 最短経路探索 1 4 9 • 頂点3から見た、頂点1との距離が2になっている ことを確認 2 5 3 結果 {(1,0)} {(4,0),(1,1)} {(2,0),(1,1),(4,1)} {(3,0),(1,2),(2,1),(4,2),(5,1)} {(5,0),(4,1),(1,2)}