Enviar pesquisa
Carregar
ダイクストラ法
•
1 gostou
•
3,381 visualizações
O
ohsofty
Seguir
ダイクストラ法のアルゴリズムの説明です。
Leia menos
Leia mais
Engenharia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 37
Baixar agora
Baixar para ler offline
Recomendados
[Basic 14] 暗号について / RSA 暗号 / 楕円曲線暗号
[Basic 14] 暗号について / RSA 暗号 / 楕円曲線暗号
Yuto Takei
A yet another brief introduction to neural networks
A yet another brief introduction to neural networks
Yuta Kikuchi
3 Info Theory
3 Info Theory
melvincabatuan
04.第四章用Matlab求偏导数
04.第四章用Matlab求偏导数
Xin Zheng
1
1
oupc
最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く
shindannin
Binary indexed tree
Binary indexed tree
HCPC: 北海道大学競技プログラミングサークル
RUPC2017:M問題
RUPC2017:M問題
Takumi Yamashita
Mais conteúdo relacionado
Mais procurados
競技プログラミングでの線型方程式系
競技プログラミングでの線型方程式系
tmaehara
Pyramid
Pyramid
tomerun
R上の変な位相
R上の変な位相
nabeshimamasataka
ユークリッド空間上の変な位相
ユークリッド空間上の変な位相
政孝 鍋島
プログラミング技法特論第7回
プログラミング技法特論第7回
Noritada Shimizu
楕円曲線セキュリティー
楕円曲線セキュリティー
Jonathan Underwood
動的計画法を極める!
動的計画法を極める!
HCPC: 北海道大学競技プログラミングサークル
No Title
No Title
Ryuma Matsuoka
or-10. 線形計画法を Excel で解く
or-10. 線形計画法を Excel で解く
kunihikokaneko1
SICP
SICP
S W
K2PC Div1 E 暗号化
K2PC Div1 E 暗号化
Kazuma Mikami
or-2. 配送計画、リードターム
or-2. 配送計画、リードターム
kunihikokaneko1
【展開用】日曜数学会 Sinc関数の積分について
【展開用】日曜数学会 Sinc関数の積分について
和人 桐ケ谷
ガウス積分の問題
ガウス積分の問題
nabeshimamasataka
Let's enjoy modulo!
Let's enjoy modulo!
Junpei Tsuji
ガウス積分
ガウス積分
nabeshimamasataka
情報オリンピック夏合宿発表
情報オリンピック夏合宿発表
Kazuma Mikami
ラビットチャレンジレポート 深層学習 Day1
ラビットチャレンジレポート 深層学習 Day1
ssuserf4860b
Mais procurados
(18)
競技プログラミングでの線型方程式系
競技プログラミングでの線型方程式系
Pyramid
Pyramid
R上の変な位相
R上の変な位相
ユークリッド空間上の変な位相
ユークリッド空間上の変な位相
プログラミング技法特論第7回
プログラミング技法特論第7回
楕円曲線セキュリティー
楕円曲線セキュリティー
動的計画法を極める!
動的計画法を極める!
No Title
No Title
or-10. 線形計画法を Excel で解く
or-10. 線形計画法を Excel で解く
SICP
SICP
K2PC Div1 E 暗号化
K2PC Div1 E 暗号化
or-2. 配送計画、リードターム
or-2. 配送計画、リードターム
【展開用】日曜数学会 Sinc関数の積分について
【展開用】日曜数学会 Sinc関数の積分について
ガウス積分の問題
ガウス積分の問題
Let's enjoy modulo!
Let's enjoy modulo!
ガウス積分
ガウス積分
情報オリンピック夏合宿発表
情報オリンピック夏合宿発表
ラビットチャレンジレポート 深層学習 Day1
ラビットチャレンジレポート 深層学習 Day1
Destaque
DP特集
DP特集
Dai Hamada
直前合宿 講義スライド
直前合宿 講義スライド
tozan gezan
定番アルゴリズムを徹底理解!
定番アルゴリズムを徹底理解!
teapipin
目指せグラフマスター
目指せグラフマスター
HCPC: 北海道大学競技プログラミングサークル
グラフを扱おう:最短路問題
グラフを扱おう:最短路問題
HCPC: 北海道大学競技プログラミングサークル
色々なダイクストラ高速化
色々なダイクストラ高速化
yosupo
CODE FESTIVAL 2015 沖縄ツアー 解説
CODE FESTIVAL 2015 沖縄ツアー 解説
AtCoder Inc.
2011 02-21 第1回@freaks勉強会
2011 02-21 第1回@freaks勉強会
YuichiroMukai
競技プログラミング練習会2015 Normal 第3回
競技プログラミング練習会2015 Normal 第3回
Hideaki Nagamine
初めてのプロコン
初めてのプロコン
HCPC: 北海道大学競技プログラミングサークル
競技プログラミング練習会2015 Normal 第2回
競技プログラミング練習会2015 Normal 第2回
Hideaki Nagamine
最短経路問題
最短経路問題
chsommer
ダイクストラの構造化 プログラミングに学ぶ 結婚生活
ダイクストラの構造化 プログラミングに学ぶ 結婚生活
Hisateru Tanaka
各種問題の解説
各種問題の解説
tozan gezan
動的計画法
動的計画法
HCPC: 北海道大学競技プログラミングサークル
2年生向けICPC紹介資料
2年生向けICPC紹介資料
Yuma Inoue
最短経路問題 & 最小全域木
最短経路問題 & 最小全域木
HCPC: 北海道大学競技プログラミングサークル
AtCoder Beginner Contest 035 解説
AtCoder Beginner Contest 035 解説
AtCoder Inc.
ICPC2014 チーム紹介スライド !#$%&()*+-./:;<=>?@[\]^_`{|}~
ICPC2014 チーム紹介スライド !#$%&()*+-./:;<=>?@[\]^_`{|}~
Kensuke Imanishi
『オープンソースで学ぶ社会ネットワーク分析』1章 イントロダクション
『オープンソースで学ぶ社会ネットワーク分析』1章 イントロダクション
Hisao Soyama
Destaque
(20)
DP特集
DP特集
直前合宿 講義スライド
直前合宿 講義スライド
定番アルゴリズムを徹底理解!
定番アルゴリズムを徹底理解!
目指せグラフマスター
目指せグラフマスター
グラフを扱おう:最短路問題
グラフを扱おう:最短路問題
色々なダイクストラ高速化
色々なダイクストラ高速化
CODE FESTIVAL 2015 沖縄ツアー 解説
CODE FESTIVAL 2015 沖縄ツアー 解説
2011 02-21 第1回@freaks勉強会
2011 02-21 第1回@freaks勉強会
競技プログラミング練習会2015 Normal 第3回
競技プログラミング練習会2015 Normal 第3回
初めてのプロコン
初めてのプロコン
競技プログラミング練習会2015 Normal 第2回
競技プログラミング練習会2015 Normal 第2回
最短経路問題
最短経路問題
ダイクストラの構造化 プログラミングに学ぶ 結婚生活
ダイクストラの構造化 プログラミングに学ぶ 結婚生活
各種問題の解説
各種問題の解説
動的計画法
動的計画法
2年生向けICPC紹介資料
2年生向けICPC紹介資料
最短経路問題 & 最小全域木
最短経路問題 & 最小全域木
AtCoder Beginner Contest 035 解説
AtCoder Beginner Contest 035 解説
ICPC2014 チーム紹介スライド !#$%&()*+-./:;<=>?@[\]^_`{|}~
ICPC2014 チーム紹介スライド !#$%&()*+-./:;<=>?@[\]^_`{|}~
『オープンソースで学ぶ社会ネットワーク分析』1章 イントロダクション
『オープンソースで学ぶ社会ネットワーク分析』1章 イントロダクション
ダイクストラ法
1.
ダイクストラ法
2.
0 これらの頂点が・・・ 1 2 3 4 5 6
3.
0 このように辺で結ばれ・・・ 1 2 3 4 5 6
4.
0 それぞれの辺に重みが付いているとします。 1 2 3 4 5 6 2 4 3 5 3 6 4 2 1 1 1
5.
0 1 2 3 4 5 6 2 4 3 5 3 6 4 2 1 1 1 各頂点は以下情報を持っています。 (1)確定フラグ(1:確定済み、0:未確定)(=f) (2)最低必要コスト(=c) (3)直前頂点(=p)
6.
0 1 2 3 4 5 6 2 4 3 5 3 6 4 2 1 1 1 (1)確定フラグ(1:確定済み、0:未確定)(=f) 「最低必要コスト」、「直前頂点」が確定すると このフラグが立ちます。 図内では「背景色:なし」が未確定、「背景色:赤」が 確定済みを表します。 ←確定済み
7.
0 1 2 3 4 5 6 2 4 3 5 3 6 4 2 1 1 1 (2)最低必要コスト(=c) 当該頂点に至るまでに必要な最小コストです。 (3)直前頂点(=p) ルート上で当該頂点直前の頂点です。
8.
0 1 2 3 4 5 6 2 4 3 5 3 6 4 2 1 1 1 最短経路探索を開始します。
9.
0 1 2 3 4 5 6 2 4 3 5 3 6 4 2 1 1 1 スタート頂点を⓪、ゴール頂点を⑥とします。 スタート ゴール
10.
0 1 2 3 4 5 6 2 4 3 5 3 6 4 2 1 1 1 まず初めに各頂点を初期化します。 (f=0:未確定、c=∞、p=-1) f=0 c=∞ p=-1 f=0 c=∞ p=-1 f=0 c=∞ p=-1 f=0 c=∞ p=-1 f=0 c=∞ p=-1 f=0 c=∞ p=-1 f=0 c=∞ p=-1 どこからでもない、という意味で 直前頂点には-1を入れています スタート ゴール
11.
0 1 2 3 4 5 6 2 4 3 5 3 6 4 2 1 1 1 f=0 c=0 p=-1 f=0 c=∞ p=-1 f=0 c=∞ p=-1 f=0 c=∞ p=-1 f=0 c=∞ p=-1 f=0 c=∞ p=-1 f=0 c=∞ p=-1 スタート ゴール スタート頂点の最低 必要コストを0にします。
12.
0 1 2 3 4 5 6 2 4 3 5 3 6 4 2 1 1 1 f=0 c=0 p=-1 f=0 c=∞ p=-1 f=0 c=∞ p=-1 f=0 c=∞ p=-1 f=0 c=∞ p=-1 f=0 c=∞ p=-1 f=0 c=∞ p=-1 スタート ゴール 後は、ゴール頂点が確定済みになるまで以下を繰り返します。 (1)未確定でコスト最小の頂点を確定済みとする。 (2) (1)で確定した頂点と繋がっている未確定頂点を更新する。 (但し、確定頂点を経由するルートの方がよりコスト少の場合のみ )
13.
0 1 2 3 4 5 6 2 4 3 5 3 6 4 2 1 1 1 f=0 c=0 p=-1 f=0 c=∞ p=-1 f=0 c=∞ p=-1 f=0 c=∞ p=-1 f=0 c=∞ p=-1 f=0 c=∞ p=-1 f=0 c=∞ p=-1 スタート ゴール ループ1回目<(1)未確定でコスト最小の頂点を確定済みとする。 > 全未確定頂点でコスト最小 の頂点は⓪なので、⓪を 確定済みにします。 (2枚前のスライドでスタート 頂点のコストのみ0にした ので自明)
14.
スタート 1 2 3 4 5 6 2 4 3 5 3 6 4 2 1 1 1 f=1 c=0 p=-1 f=0 c=∞ p=-1 f=0 c=∞ p=-1 f=0 c=∞ p=-1 f=0 c=∞ p=-1 f=0 c=∞ p=-1 f=0 c=∞ p=-1 ゴール ループ1回目<(1)未確定でコスト最小の頂点を確定済みとする。 > 0 全未確定頂点でコスト最小 の頂点は⓪なので、⓪を 確定済みにします。 (2枚前のスライドでスタート 頂点のコストのみ0にした ので自明)
15.
スタート 1 2 3 4 5 6 2 4 3 5 3 6 4 2 1 1 1 f=1 c=0 p=-1 f=0 c=∞ p=-1 f=0 c=∞ p=-1 f=0 c=∞ p=-1 f=0 c=∞ p=-1 f=0 c=∞ p=-1 f=0 c=∞ p=-1 ゴール ループ1回目<(2) (1)で確定した頂点と繋がっている未確定頂点を更新する。 > 0 確定したので 背景色:赤になりま す。 先ほど確定した頂点と繋がってい る未確定頂点は①、②なのでこれ らを更新します。
16.
スタート 1 2 3 4 5 6 2 4 3 5 3 6 4 2 1 1 1 f=1 c=0 p=-1 f=0 c=2 p=0 f=0 c=4 p=0 f=0 c=∞ p=-1 f=0 c=∞ p=-1 f=0 c=∞ p=-1 f=0 c=∞ p=-1 ゴール ループ1回目<(2) (1)で確定した頂点と繋がっている未確定頂点を更新する。 > 0 確定したので 背景色:赤になりま す。 先ほど確定した頂点と繋がってい る未確定頂点は①、②なのでこれ らを更新します。
17.
スタート 1 2 3 4 5 6 2 4 3 5 3 6 4 2 1 1 1 f=1 c=0 p=-1 f=0 c=2 p=0 f=0 c=4 p=0 f=0 c=∞ p=-1 f=0 c=∞ p=-1 f=0 c=∞ p=-1 f=0 c=∞ p=-1 ゴール 0 ゴール頂点は確定していない (f=0) ゴール頂点が未確定なので探索継続
18.
スタート 2 3 4 5 6 2 4 3 5 3 6 4 2 1 1 1 f=1 c=0 p=-1 f=1 c=2 p=0 f=0 c=4 p=0 f=0 c=∞ p=-1 f=0 c=∞ p=-1 f=0 c=∞ p=-1 f=0 c=∞ p=-1 ゴール 0 今度は①が全未確定頂点中でコスト最小の 頂点となるので①を確定済みとします。 1 ループ2回目<(1)未確定でコスト最小の頂点を確定済みとする。 >
19.
スタート 2 3 4 5 6 2 4 3 5 3 6 4 2 1 1 1 f=1 c=0 p=-1 f=1 c=2 p=0 f=0 c=2+1=3 p=1 f=0 c=2+5=7 p=1 f=0 c=∞ p=-1 f=0 c=2+3=5 p=1 f=0 c=∞ p=-1 ゴール 0 1 ループ2回目<(2) (1)で確定した頂点と繋がっている未確定頂点を更新する。 > ②はループ1回目(2)で更新済みでしたが、①を 経由したルートの方がよりコストがかからない
(*1)ので、 c、pを更新します。 (逆に、今回コスト≧設定済みコストの場合は更新しませ ん) (*1) ・設定済みコスト:c=4 ・①を経由した場合のコスト: c=2+1=3 更新 更新
20.
2 1 スタート 3 4 5 6 2 4 3 5 3 6 4 2 1 1 f=1 c=0 p=-1 f=1 c=2 p=0 f=0 c=3 p=1 f=0 c=7 p=1 f=0 c=∞ p=-1 f=0 c=5 p=1 f=0 c=∞ p=-1 ゴール 0 1 ゴール頂点は確定していない (f=0) ゴール頂点が未確定なので探索継続
21.
スタート 2 3 4 5 6 2 4 3 5 3 6 4 2 1 1 1 f=1 c=0 p=-1 f=1 c=2 p=0 f=1 c=3 p=1 f=0 c=7 p=1 f=0 c=∞ p=-1 f=0 c=5 p=1 f=0 c=∞ p=-1 ゴール 0 1 ループ3回目<(1)未確定でコスト最小の頂点を確定済みとする。 > 今度は②が全未確定頂点中で、コスト最小の 頂点となるので②を確定済みとします。
22.
スタート 2 3 4 5 6 2 4 3 5 3 6 4 2 1 1 1 f=1 c=0 p=-1 f=1 c=2 p=0 f=1 c=3 p=1 f=0 c=7 p=1 f=0 c=3+3=6 p=2 f=0 c=5 p=1 f=0 c=∞ p=-1 ゴール 0 1 ループ3回目<(2) (1)で確定した頂点と繋がっている未確定頂点を更新する。 > 更新
23.
3 スタート 2 4 5 6 2 4 3 5 3 6 4 2 1 1 1 f=1 c=0 p=-1 f=1 c=2 p=0 f=1 c=3 p=1 f=0 c=7 p=1 f=0 c=6 p=2 f=0 c=5 p=1 f=0 c=∞ p=-1 ゴール 0 1 ゴール頂点は確定していない (f=0) ゴール頂点が未確定なので探索継続
24.
スタート 2 3 4 5 6 2 4 3 5 3 6 4 2 1 1 1 f=1 c=0 p=-1 f=1 c=2 p=0 f=1 c=3 p=1 f=0 c=7 p=1 f=0 c=6 p=2 f=1 c=5 p=1 f=0 c=∞ p=-1 ゴール 0 1 ループ4回目<(1)未確定でコスト最小の頂点を確定済みとする。 > 全未確定頂点中で、③がコスト最小となるので 確定済みとします。
25.
スタート 2 3 4 5 6 2 4 3 5 3 6 4 2 1 1 1 f=1 c=0 p=-1 f=1 c=2 p=0 f=1 c=3 p=1 f=0 c=5+1=6 p=3 f=0 c=6 p=2 f=1 c=5 p=1 f=0 c=5+6=11 p=3 ゴール 0 1 ループ4回目<(2) (1)で確定した頂点と繋がっている未確定頂点を更新する。 > 設定済みコスト>今回コスト、なの で更新 更新
26.
スタート 2 3 4 5 6 2 4 3 5 3 6 4 2 1 1 1 f=1 c=0 p=-1 f=1 c=2 p=0 f=1 c=3 p=1 f=0 c=6 p=3 f=0 c=6 p=2 f=1 c=5 p=1 f=0 c=11 p=3 ゴール 0 1 ゴール頂点は確定していない (f=0) ゴール頂点が未確定なので探索継続
27.
f=1 c=6 p=3 スタート 2 3 5 6 2 4 3 5 3 6 4 2 1 1 1 f=1 c=0 p=-1 f=1 c=2 p=0 f=1 c=3 p=1 f=0 c=6 p=2 f=1 c=5 p=1 f=0 c=11 p=3 ゴール 0 1 ループ5回目<(1)未確定でコスト最小の頂点を確定済みとする。 > 4 全未確定頂点中で、④、⑤がコスト最小となる ので④を確定済みとします。
28.
f=1 c=6 p=3 スタート 2 3 5 6 2 4 3 5 3 6 4 2 1 1 1 f=1 c=0 p=-1 f=1 c=2 p=0 f=1 c=3 p=1 f=0 c=6 p=2 f=1 c=5 p=1 f=0 c=10 p=4 ゴール 0 1 ループ5回目<(2) (1)で確定した頂点と繋がっている未確定頂点を更新する。 > 4 設定済みコスト≦今回コスト、なの で更新しない 更新
29.
f=1 c=6 p=3 スタート 2 3 5 6 2 4 3 5 3 6 4 2 1 1 1 f=1 c=0 p=-1 f=1 c=2 p=0 f=1 c=3 p=1 f=0 c=6 p=2 f=1 c=5 p=1 f=0 c=10 p=4 ゴール 0 1 4 ゴール頂点は確定していない (f=0) ゴール頂点が未確定なので探索継続
30.
f=1 c=6 p=3 スタート 2 3 5 6 2 4 3 5 3 6 4 2 1 1 1 f=1 c=0 p=-1 f=1 c=2 p=0 f=1 c=3 p=1 f=1 c=6 p=2 f=1 c=5 p=1 f=0 c=10 p=4 ゴール 0 1 4 ループ6回目<(1)未確定でコスト最小の頂点を確定済みとする。 > 全未確定頂点中で、⑤がコスト最小となるので 確定済みとします。
31.
f=1 c=6 p=3 スタート 2 3 5 6 2 4 3 5 3 6 4 2 1 1 1 f=1 c=0 p=-1 f=1 c=2 p=0 f=1 c=3 p=1 f=1 c=6 p=2 f=1 c=5 p=1 f=0 c=6+2=8 p=5 ゴール 0 1 4 ループ6回目<(2) (1)で確定した頂点と繋がっている未確定頂点を更新する。 > 設定済みコスト>今回コスト、なの で更新
32.
f=1 c=6 p=3 スタート 2 3 5 6 2 4 3 5 3 6 4 2 1 1 1 f=1 c=0 p=-1 f=1 c=2 p=0 f=1 c=3 p=1 f=1 c=6 p=2 f=1 c=5 p=1 f=0 c=8 p=5 ゴール 0 1 4 ゴール頂点は確定していない (f=0) ゴール頂点が未確定なので探索継続
33.
f=1 c=6 p=3 スタート 2 3 5 6 2 4 3 5 3 6 4 2 1 1 1 f=1 c=0 p=-1 f=1 c=2 p=0 f=1 c=3 p=1 f=1 c=6 p=2 f=1 c=5 p=1 f=1 c=8 p=5 ゴール 0 1 4 ループ7回目<(1)未確定でコスト最小の頂点を確定済みとする。 > 全未確定頂点中で、⑥がコスト最小となるので 確定済みとします。
34.
f=1 c=6 p=3 スタート 2 3 5 6 2 4 3 5 3 6 4 2 1 1 1 f=1 c=0 p=-1 f=1 c=2 p=0 f=1 c=3 p=1 f=1 c=6 p=2 f=1 c=5 p=1 f=1 c=8 p=5 ゴール 0 1 4 ループ7回目<(2) (1)で確定した頂点と繋がっている未確定頂点を更新する。 > 更新対象なし
35.
f=1 c=6 p=3 スタート 2 3 5 6 2 4 3 5 3 6 4 2 1 1 1 f=1 c=0 p=-1 f=1 c=2 p=0 f=1 c=3 p=1 f=1 c=6 p=2 f=1 c=5 p=1 f=1 c=8 p=5 ゴール 0 1 4 ゴール頂点は確定済み (f=1) ゴール頂点が確定済みなので探索完了
36.
f=1 c=6 p=3 スタート 2 3 5 6 2 4 3 5 3 6 4 2 1 1 1 f=1 c=0 p=-1 f=1 c=2 p=0 f=1 c=3 p=1 f=1 c=6 p=2 f=1 c=5 p=1 f=1 c=8 p=5 ゴール 0 1 4 ゴール頂点から順に、各頂点に設定されている直前頂点を元に、 スタート頂点まで辿り、最短経路を求めます。
37.
おしまい
Baixar agora