Soumettre la recherche
Mettre en ligne
最短経路問題 & 最小全域木
•
3 j'aime
•
4,008 vues
HCPC: 北海道大学競技プログラミングサークル
Suivre
最短経路問題と最小全域木問題の説明とそのためのアルゴリズムの解説
Lire moins
Lire la suite
Logiciels
Signaler
Partager
Signaler
Partager
1 sur 233
Télécharger maintenant
Télécharger pour lire hors ligne
Recommandé
[DL輪読会]Taskonomy: Disentangling Task Transfer Learning
[DL輪読会]Taskonomy: Disentangling Task Transfer Learning
Deep Learning JP
双対性
双対性
Yoichi Iwata
LCA and RMQ ~簡潔もあるよ!~
LCA and RMQ ~簡潔もあるよ!~
Yuma Inoue
カスタムSIで使ってみよう ~ OpenAI Gym を使った強化学習
カスタムSIで使ってみよう ~ OpenAI Gym を使った強化学習
Hori Tasuku
論文の図表レイアウト例
論文の図表レイアウト例
Sunao Hara
平面グラフと交通ネットワークのアルゴリズム
平面グラフと交通ネットワークのアルゴリズム
Takuya Akiba
色々なダイクストラ高速化
色々なダイクストラ高速化
yosupo
図と実装で理解する『木構造入門』
図と実装で理解する『木構造入門』
Proktmr
Recommandé
[DL輪読会]Taskonomy: Disentangling Task Transfer Learning
[DL輪読会]Taskonomy: Disentangling Task Transfer Learning
Deep Learning JP
双対性
双対性
Yoichi Iwata
LCA and RMQ ~簡潔もあるよ!~
LCA and RMQ ~簡潔もあるよ!~
Yuma Inoue
カスタムSIで使ってみよう ~ OpenAI Gym を使った強化学習
カスタムSIで使ってみよう ~ OpenAI Gym を使った強化学習
Hori Tasuku
論文の図表レイアウト例
論文の図表レイアウト例
Sunao Hara
平面グラフと交通ネットワークのアルゴリズム
平面グラフと交通ネットワークのアルゴリズム
Takuya Akiba
色々なダイクストラ高速化
色々なダイクストラ高速化
yosupo
図と実装で理解する『木構造入門』
図と実装で理解する『木構造入門』
Proktmr
[DL輪読会]Recent Advances in Autoencoder-Based Representation Learning
[DL輪読会]Recent Advances in Autoencoder-Based Representation Learning
Deep Learning JP
動的計画法を極める!
動的計画法を極める!
HCPC: 北海道大学競技プログラミングサークル
ウェーブレット木の世界
ウェーブレット木の世界
Preferred Networks
[DL Hacks]Deep Neuroevolution: Genetic Algorithms Are a Competitive Alternati...
[DL Hacks]Deep Neuroevolution: Genetic Algorithms Are a Competitive Alternati...
Deep Learning JP
強化学習の分散アーキテクチャ変遷
強化学習の分散アーキテクチャ変遷
Eiji Sekiya
AIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術について
AIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術について
Fixstars Corporation
強化学習その2
強化学習その2
nishio
勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは
Takuya Akiba
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction
Deep Learning JP
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
Hibiki Yamashiro
Union find(素集合データ構造)
Union find(素集合データ構造)
AtCoder Inc.
[DL輪読会]Control as Inferenceと発展
[DL輪読会]Control as Inferenceと発展
Deep Learning JP
SNS とゲーム理論~人はなぜ投稿するのか?~
SNS とゲーム理論~人はなぜ投稿するのか?~
Fujio Toriumi
スパースモデリング入門
スパースモデリング入門
Hideo Terada
Attentionの基礎からTransformerの入門まで
Attentionの基礎からTransformerの入門まで
AGIRobots
強化学習技術とゲーム AI 〜 今できる事と今後できて欲しい事 〜
強化学習技術とゲーム AI 〜 今できる事と今後できて欲しい事 〜
佑 甲野
[DL輪読会]SlowFast Networks for Video Recognition
[DL輪読会]SlowFast Networks for Video Recognition
Deep Learning JP
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
Takateru Yamagishi
楕円曲線と暗号
楕円曲線と暗号
MITSUNARI Shigeo
Variational AutoEncoder
Variational AutoEncoder
Kazuki Nitta
写像 12 相
写像 12 相
HCPC: 北海道大学競技プログラミングサークル
ACPC 2017 Day3 F: 掛け算は楽しい
ACPC 2017 Day3 F: 掛け算は楽しい
HCPC: 北海道大学競技プログラミングサークル
Contenu connexe
Tendances
[DL輪読会]Recent Advances in Autoencoder-Based Representation Learning
[DL輪読会]Recent Advances in Autoencoder-Based Representation Learning
Deep Learning JP
動的計画法を極める!
動的計画法を極める!
HCPC: 北海道大学競技プログラミングサークル
ウェーブレット木の世界
ウェーブレット木の世界
Preferred Networks
[DL Hacks]Deep Neuroevolution: Genetic Algorithms Are a Competitive Alternati...
[DL Hacks]Deep Neuroevolution: Genetic Algorithms Are a Competitive Alternati...
Deep Learning JP
強化学習の分散アーキテクチャ変遷
強化学習の分散アーキテクチャ変遷
Eiji Sekiya
AIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術について
AIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術について
Fixstars Corporation
強化学習その2
強化学習その2
nishio
勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは
Takuya Akiba
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction
Deep Learning JP
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
Hibiki Yamashiro
Union find(素集合データ構造)
Union find(素集合データ構造)
AtCoder Inc.
[DL輪読会]Control as Inferenceと発展
[DL輪読会]Control as Inferenceと発展
Deep Learning JP
SNS とゲーム理論~人はなぜ投稿するのか?~
SNS とゲーム理論~人はなぜ投稿するのか?~
Fujio Toriumi
スパースモデリング入門
スパースモデリング入門
Hideo Terada
Attentionの基礎からTransformerの入門まで
Attentionの基礎からTransformerの入門まで
AGIRobots
強化学習技術とゲーム AI 〜 今できる事と今後できて欲しい事 〜
強化学習技術とゲーム AI 〜 今できる事と今後できて欲しい事 〜
佑 甲野
[DL輪読会]SlowFast Networks for Video Recognition
[DL輪読会]SlowFast Networks for Video Recognition
Deep Learning JP
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
Takateru Yamagishi
楕円曲線と暗号
楕円曲線と暗号
MITSUNARI Shigeo
Variational AutoEncoder
Variational AutoEncoder
Kazuki Nitta
Tendances
(20)
[DL輪読会]Recent Advances in Autoencoder-Based Representation Learning
[DL輪読会]Recent Advances in Autoencoder-Based Representation Learning
動的計画法を極める!
動的計画法を極める!
ウェーブレット木の世界
ウェーブレット木の世界
[DL Hacks]Deep Neuroevolution: Genetic Algorithms Are a Competitive Alternati...
[DL Hacks]Deep Neuroevolution: Genetic Algorithms Are a Competitive Alternati...
強化学習の分散アーキテクチャ変遷
強化学習の分散アーキテクチャ変遷
AIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術について
AIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術について
強化学習その2
強化学習その2
勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
Union find(素集合データ構造)
Union find(素集合データ構造)
[DL輪読会]Control as Inferenceと発展
[DL輪読会]Control as Inferenceと発展
SNS とゲーム理論~人はなぜ投稿するのか?~
SNS とゲーム理論~人はなぜ投稿するのか?~
スパースモデリング入門
スパースモデリング入門
Attentionの基礎からTransformerの入門まで
Attentionの基礎からTransformerの入門まで
強化学習技術とゲーム AI 〜 今できる事と今後できて欲しい事 〜
強化学習技術とゲーム AI 〜 今できる事と今後できて欲しい事 〜
[DL輪読会]SlowFast Networks for Video Recognition
[DL輪読会]SlowFast Networks for Video Recognition
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
楕円曲線と暗号
楕円曲線と暗号
Variational AutoEncoder
Variational AutoEncoder
Plus de HCPC: 北海道大学競技プログラミングサークル
写像 12 相
写像 12 相
HCPC: 北海道大学競技プログラミングサークル
ACPC 2017 Day3 F: 掛け算は楽しい
ACPC 2017 Day3 F: 掛け算は楽しい
HCPC: 北海道大学競技プログラミングサークル
ACPC 2017 Day3 D: 優柔不断
ACPC 2017 Day3 D: 優柔不断
HCPC: 北海道大学競技プログラミングサークル
ACPC 2019 Day3 G: Restricted DFS
ACPC 2019 Day3 G: Restricted DFS
HCPC: 北海道大学競技プログラミングサークル
ACPC 2019 Day3 F: 部分文字列分解
ACPC 2019 Day3 F: 部分文字列分解
HCPC: 北海道大学競技プログラミングサークル
ACPC 2019 Day3 E: 総和の切り取り
ACPC 2019 Day3 E: 総和の切り取り
HCPC: 北海道大学競技プログラミングサークル
ACPC 2019 Day3 B: パフェ
ACPC 2019 Day3 B: パフェ
HCPC: 北海道大学競技プログラミングサークル
ACPC 2019 Day3 A: 間違い探し
ACPC 2019 Day3 A: 間違い探し
HCPC: 北海道大学競技プログラミングサークル
HUPC 2019 Day2 G: 木
HUPC 2019 Day2 G: 木
HCPC: 北海道大学競技プログラミングサークル
HUPC 2019 Day2 E: ジャム
HUPC 2019 Day2 E: ジャム
HCPC: 北海道大学競技プログラミングサークル
HUPC 2019 Day2 H: Revenge of UMG
HUPC 2019 Day2 H: Revenge of UMG
HCPC: 北海道大学競技プログラミングサークル
HUPC 2019 Day2 F: MOD Rush
HUPC 2019 Day2 F: MOD Rush
HCPC: 北海道大学競技プログラミングサークル
HUPC 2019 Day2 C: 串刺し
HUPC 2019 Day2 C: 串刺し
HCPC: 北海道大学競技プログラミングサークル
HUPC 2019 Day1 F: グリッドの番号
HUPC 2019 Day1 F: グリッドの番号
HCPC: 北海道大学競技プログラミングサークル
HUPC 2019 Day1 E: 最短経路の復元
HUPC 2019 Day1 E: 最短経路の復元
HCPC: 北海道大学競技プログラミングサークル
HUPC 2019 Day1 D: 貪欲が最適?
HUPC 2019 Day1 D: 貪欲が最適?
HCPC: 北海道大学競技プログラミングサークル
HUPC 2019 Day1 C: 短絡評価
HUPC 2019 Day1 C: 短絡評価
HCPC: 北海道大学競技プログラミングサークル
HUPC 2019 Day1 B: 自身の 2 倍
HUPC 2019 Day1 B: 自身の 2 倍
HCPC: 北海道大学競技プログラミングサークル
HUPC 2019 Day1 A: four tea
HUPC 2019 Day1 A: four tea
HCPC: 北海道大学競技プログラミングサークル
Convex Hull Trick
Convex Hull Trick
HCPC: 北海道大学競技プログラミングサークル
Plus de HCPC: 北海道大学競技プログラミングサークル
(20)
写像 12 相
写像 12 相
ACPC 2017 Day3 F: 掛け算は楽しい
ACPC 2017 Day3 F: 掛け算は楽しい
ACPC 2017 Day3 D: 優柔不断
ACPC 2017 Day3 D: 優柔不断
ACPC 2019 Day3 G: Restricted DFS
ACPC 2019 Day3 G: Restricted DFS
ACPC 2019 Day3 F: 部分文字列分解
ACPC 2019 Day3 F: 部分文字列分解
ACPC 2019 Day3 E: 総和の切り取り
ACPC 2019 Day3 E: 総和の切り取り
ACPC 2019 Day3 B: パフェ
ACPC 2019 Day3 B: パフェ
ACPC 2019 Day3 A: 間違い探し
ACPC 2019 Day3 A: 間違い探し
HUPC 2019 Day2 G: 木
HUPC 2019 Day2 G: 木
HUPC 2019 Day2 E: ジャム
HUPC 2019 Day2 E: ジャム
HUPC 2019 Day2 H: Revenge of UMG
HUPC 2019 Day2 H: Revenge of UMG
HUPC 2019 Day2 F: MOD Rush
HUPC 2019 Day2 F: MOD Rush
HUPC 2019 Day2 C: 串刺し
HUPC 2019 Day2 C: 串刺し
HUPC 2019 Day1 F: グリッドの番号
HUPC 2019 Day1 F: グリッドの番号
HUPC 2019 Day1 E: 最短経路の復元
HUPC 2019 Day1 E: 最短経路の復元
HUPC 2019 Day1 D: 貪欲が最適?
HUPC 2019 Day1 D: 貪欲が最適?
HUPC 2019 Day1 C: 短絡評価
HUPC 2019 Day1 C: 短絡評価
HUPC 2019 Day1 B: 自身の 2 倍
HUPC 2019 Day1 B: 自身の 2 倍
HUPC 2019 Day1 A: four tea
HUPC 2019 Day1 A: four tea
Convex Hull Trick
Convex Hull Trick
最短経路問題 & 最小全域木
1.
1
2.
• • • • • • • • • • • 2
3.
• • • • • • • • • • • 3
4.
R×C • R C Sy Sx Gy Gx 𝑐(+,+)
𝑐(+,.) … 𝑐(+,0) 𝑐(1,+) 𝑐(1,.) … 𝑐(1,0) • 1 ≤ R, C ≤ 1000 4 S G
5.
R×C • 5 S G
6.
• G S G 6 S G
7.
• G S G 7 S G
8.
• G S G • 8 S G
9.
• G S G • 9 S G
10.
• G S G • 10 S G S G
11.
• S 11 S G
12.
• S S 12 S 1 1 G
13.
• S S • S 13 S 1 1 G
14.
• S S • S 14 2 S 1
2 1 2 G
15.
• S S • S 15 2 S 1
2 1 2 G G
16.
(Breadth First Search) • • 16 S ……
17.
17 S G 0 S S S S
18.
18 1 1 ★ 1 1 G 0
19.
19 1 1★ 1 1 G
20.
20 12 2 ★ 2 2 G 1
21.
21 1 2 2 2 ★ 2 G
22.
22 2 2 2★ 2 G 1
23.
23 2 2 ★ G 2
24.
24 2 3★ 3 G 2
25.
25 3 3 3 3 ★ G 3 2
26.
26 3 3 4 ★ 4 G 3
27.
27 3 3 4 ★ 4 G 3
28.
28 3 3 4 ★ 4 G 3
29.
29 11 11 11 G 11 ★ 10
30.
30 11 11 12 G 12 ★ 11
31.
31 11 12 12 G ★ 12 11
32.
32 12 12 G 12 1212 ★
12 11
33.
33 12 G 12 12 1313 ★ 12
34.
34 G 12 12 13 13 13 ★ 12
35.
35 12 13 13 ★ G 12
36.
36 12 13 13 ★ G 12 G
37.
(Queue) • • First In, First Out 37
38.
38
39.
39 #include <queue> queue< > q; q.push(x); O(1) q.front();
O(1) q.pop(); O(1) q.empty(); O(1)
40.
• O(1) • O(RC) 40 R: C
41.
41
42.
• • • • • • • • • • • 42
43.
• • • 43
44.
• • • • • 44
45.
• • • • • 45
46.
• • • • V E 46
47.
47
48.
48
49.
• 49
50.
• 50 INF INF INF
INF INF INF INF INF INF INF INF INF INF INF INF INF INF INF INF INF INF
51.
51
52.
• 52
53.
• 53
54.
54
55.
55
56.
56
57.
57 O(V. ) O(V + E) O(1) O(Δ) O(V)
O(Δ) Δ:
58.
58 O(V. ) O(V + E) O(1) O(Δ) O(V)
O(Δ) Δ:
59.
s g g 59
60.
v e a b c • v e s g 𝑎+
𝑏+ 𝑐+ 𝑎^ 𝑏^ 𝑐^ • 1 ≤ v ≤ 100 1 ≤ e, c ≤ 10000 60
61.
• 61
62.
• 62 120 30 90 210 90 120 150 180120 210 210 90
63.
• = min ( + 210 , + 180 ) • 63 .. .. : 180 210 : : .. .. ..
64.
• = min ( + 210 , + 180 ) • • u = min ( u
+ u ) 64 .. .. : 180 210 : : .. .. ..
65.
(Bellman-Ford algorithm) • 65
66.
(Bellman-Ford algorithm) • • 66
67.
(Bellman-Ford algorithm) • • • 67
68.
0 INF INF INF INF INF INF INF INF INF 68 210 90 120 30 90 210 90 120
150 180120 210
69.
0 INF INF INF INF INF INF INF INF INF 69 120 30 90 210 90 120 150 180120 210 0 210 120 90 210 90
70.
0 90 210 INF INF 120 INF INF INF INF 70 120 30 90 210 90 120 150 180120 210 0 210 120 90 210 90
71.
0 90 210 INF INF 120 INF INF INF INF 71 120 30 90 210 90 120 150 180120 210 90 180 210 90
72.
0 90 210 300 INF 120 INF INF INF INF 72 120 30 90 210 90 120 150 180120 210 210 240 420 300 210 90
73.
0 90 210 300 510 120 420 INF INF 510 73 120 30 90 210 90 120 150 180120 210 300 420 510 510 210 90
74.
0 90 210 300 510 120 420 INF INF 510 74 120 30 90 210 90 120 150 180120 210 510 210 90
75.
0 90 150 300 510 120 210 INF INF 510 75 120 30 90 210 90 120 150 180120 210 120
210 150210 90
76.
0 90 150 300 510 120 210 330 INF 510 76 120 30 90 210 90 120 150 180120 210 210
330 210 90
77.
0 90 150 300 510 120 210 330 480 510 77 120 30 90 210 90 120 150 180120 210 330
480 210 90
78.
0 90 150 300 510 120 210 330 480 510 78 120 30 90 210 90 120 150 180120 210 510 210 90
79.
0 90 150 300 510 120 210 330 480 510 79 120 30 90 210 90 120 150 180120 210 510 210 90
80.
0 90 150 300 510 120 210 330 480 510 80 120 30 90 210 90 120 150 180120 210 210 90
81.
0 90 150 300 510 120 210 330 480 510 81 120 30 90 210 90 120 150 180120 210 210 90
82.
0 90 150 300 510 120 210 330 480 510 82 120 30 90 210 90 120 150 180120 210 0 210 90
83.
0 90 150 300 510 120 210 330 480 510 83 120 30 90 210 90 120 150 180120 210 90 210 90
84.
0 90 150 240 510 120 210 330 480 510 84 120 30 90 210 90 120 150 180120 210 150 240 210 90
85.
0 90 150 240 510 120 210 330 480 510 85 120 30 90 210 90 120 150 180120 210 150 240 210 90
86.
210 90 0 90 150 240 510 120 210 330 480 510 86 120 30 90 210 90 120 150 180120 210 150 240
87.
87 •
88.
88 • O(E)
89.
89 • O(E) •
90.
• O(E) • V O(VE) 90
91.
91
92.
92 120 30 90 210 90 120 150 180120 210 210 300 210 90 • (Dijkstra’s algorithm)
93.
0 INF INF INF INF INF INF INF INF INF 0 93 120 30 90 210 90 120 150 180120 210 210 90
94.
0 INF INF INF INF INF INF INF INF INF 94 0 210 120 90 120 30 90 210 90 120 150 180120 210 0 210 90
95.
95 0 210 120 90 120 30 90 210 90 120 150 180120 210 90 120 210 0 90 210 INF INF 120 INF INF INF INF 210 90
96.
120 210 9690 (180) 120 30 90 210 90 120 150 180120 210 0 90 210 INF INF 120 INF INF INF INF 90 210 90
97.
120 210 9790 120 30 90 210 90 120 150 180120 210 0 90 210 INF INF 120 INF INF INF INF 210 90 (180)
98.
210 98 120 150 240 120 30 90 210 90 120 150 180120 210 0 90 210 INF INF 120 INF INF INF INF 120 210 90 (240)
99.
150 210 210 99 120 150 210 120 30 90 210 90 120 150 180120 210 0 90 150 INF INF 120 210 INF INF INF 210 90 (240)
100.
210 210 240 100 150 120 30 90 210 90 120 150 180120 210 240 0 90 150 240 INF 120 210 INF INF INF 150 210 90
101.
210 240 101 210 120 30 90 210 90 120 150 180120 210 0 90 150 240 INF 120 210 INF INF INF 210 210 90
102.
240 330 102 210 120 30 90 210 90 120 150 180120 210 330 0 90 150 240 INF 120 210 330 INF INF 210 210 90
103.
330 450 450 103 240 120 30 90 210 90 120 150 180120 210 450 450 0 90 150 240 450 120 210 330 INF 450 240 210 90
104.
450 450 480 104 330 120 30 90 210 90 120 150 180120 210 480 0 90 150 240 450 120 210 330 480 450 330 210 90
105.
450 480 105 450 120 30 90 210 90 120 150 180120 210 0 90 150 240 450 120 210 330 480 450 450 210 90
106.
480 106 450 120 30 90 210 90 120 150 180120 210 0 90 150 240 450 120 210 330 480 450 450 210 90
107.
107 480 120 30 90 210 90 120 150 180120 210 0 90 150 240 450 120 210 330 480 450 480 210 90
108.
0 90 150 240 450 120 210 330 480 450 108 120 30 90 210 90 120 150 180120 210 210 90
109.
• 109
110.
• • O(E) 110
111.
• • O(E) • sort 111
112.
(Priority Queue) 112 •
113.
113 • (Priority Queue)
114.
114 • (Priority Queue)
115.
115 • (Priority Queue)
116.
116 • (Priority Queue)
117.
117 • (Priority Queue)
118.
118 • (Priority Queue)
119.
119 • (Priority Queue)
120.
120 • (Priority Queue)
121.
• • First In, First Out 121 (Priority Queue)
122.
122
123.
123 #include <queue> priority_queue< > pq; pq.push(x); O(log n) pq.top();
O(1) pq.pop(); O(log n) pq.empty(); O(1) n: pq
124.
• O(E) • 124
125.
• O(E) • O(log E) O(E log E) 125
126.
• 126
127.
• • 127
128.
128
129.
• O(VE) O(E log E) 129
130.
• O(VE) O(E log E) • • 130
131.
0 INF INF INF 0 131 10 30 −100 −50 20
132.
0 30 10 INF 10 30 132 10 30 −100 −50 20 0 0 30 10
133.
0 30 10 INF 30 133 10 30 −100 −50 20 10 10
134.
0 30 −20 50 −20 50 134 10 30 −100 −50 20 30 30 −20 50
135.
50 135 10 30 −100 −50 20 −20 0 30 −20 50 −20
136.
−50 136 10 30 −100 −50 20 50 0 30 −50 50 −50 50
137.
137 10 30 −100 −50 20 −50 0 30 −50 50 −50
138.
• • 138
139.
• • • V 139
140.
• • • V 140
141.
• 141 (Warshall–Floyd algorithm) dp
142.
• 142 (Warshall–Floyd algorithm) dp
143.
• 143 dp 90 210 120 90 210
90 30 90 210 120 210 210 120 30 90 120 90 120 120 150 180 150 210 180
144.
• 144 dp 0 90 210
120 90 0 210 0 90 30 90 0 210 120 210 210 0 120 30 0 90 120 90 0 120 120 0 150 180 150 0 210 180 0
145.
145 • dp 0 90 210
120 90 0 210 0 90 30 90 0 210 120 210 210 0 120 30 0 90 120 90 0 120 120 0 150 180 150 0 210 180 0 for(int k = 0; k < V; k++) for(int i = 0; i < V; i++) for(int j = 0; j < V; j++) dp[i][j] = min(dp[i][j], dp[i][k] + dp[k][j]);
146.
146 • dp 0 90 150
240 450 120 210 330 480 450 90 0 240 330 540 210 300 420 570 540 150 240 0 90 300 30 120 240 390 300 240 330 90 0 210 120 120 240 390 300 450 540 300 210 0 330 330 450 600 420 120 210 30 120 330 0 90 210 360 330 210 300 120 120 330 90 0 120 270 300 330 420 240 240 450 210 120 0 150 180 480 570 390 390 600 360 270 150 0 300 450 540 300 210 420 330 300 180 330 0
147.
for(int k = 0;
k < V; k++) for(int i = 0; i < V; i++) for(int j = 0; j < V; j++) dp[i][j] = min(dp[i][j], dp[i][k] + dp[k][j]); • i j k • O( 𝐕 𝟑) 147
148.
for(int k = 0;
k < V; k++) for(int i = 0; i < V; i++) for(int j = 0; j < V; j++) if(dp[i][k] != INF && dp[k][j] != INF) dp[i][j] = min(dp[i][j], dp[i][k] + dp[k][j]); • • 148
149.
• Dijkstra 149
150.
• Dijkstra 150
151.
• Dijkstra 151
152.
• • • • • • • • • • • 152
153.
153 • • • •
154.
• • • • 154
155.
• • • • 155
156.
• 156
157.
• • 157
158.
• • • 158
159.
• • • • 159
160.
(Spanning Tree) • 160 10 2 13 7 1013 7 10 2 7 2 13 7
161.
(Spanning Tree) • 161 10 2 13 7 1013 7 10 2 7 2 13 7
162.
(Spanning Tree) • 162 10 2 13 7 1013 7 10 2 7 2 13 7
163.
163
164.
v e a b d • v e 𝑎+
𝑏+ 𝑑+ 𝑎^ 𝑏^ 𝑑^ • 1 ≤ v ≤ 100 1 ≤ e, d ≤ 10000 164
165.
• 165
166.
• 166 160 45 135 260 125 180 135 170130 240 175 110
167.
• • 167 (Prim’s MST algorithm) 29 7 61 43
168.
• • 168 (Prim’s MST algorithm) 7 61 29 43
169.
160 45 135 125 180 135 170130 240 175 110 0 INF INF INF INF INF INF INF INF INF 0 169 (Priority Q) 260 0
170.
160 45 135 125 180 135 170130 240 175 110 USED INF INF INF INF INF INF INF INF INF 170 0 (Priority Q) 260 0
171.
160 45 135 125 180 135 170130 240 175 110 USED 110 175 INF INF 160 INF INF INF INF 110 160 175 171 175 160 110 (Priority Q) 260 0
172.
160 45 135 125 180 135 170130 240 175 110 USED USED 175 INF INF 160 INF INF INF INF 160 175 172 110 (110) (Priority Q) 260 110
173.
160 45 135 125 180 135 170130 240 175 110 USED USED 175 INF INF 160 INF INF INF INF 160 175 173 (110) (Priority Q) 260 110
174.
160 45 135 125 180 135 170130 240 175 110 USED USED 45 INF INF USED 125 INF INF INF 45 125 175 174 160 45 125 (160) (Priority Q) 260 270
175.
160 45 135 125 180 135 170130 240 175 110 USED USED USED 135 INF USED 125 INF INF INF 125 135 175 175 45 (Priority Q) 135 260 315
176.
160 45 135 125 180 135 170130 240 175 110 USED USED USED 130 INF USED USED 180 INF INF 130 135 175 180 176 125 (Priority Q) 130 440 180 260
177.
160 45 135 125 180 135 170130 240 175 110 USED USED USED USED 260 USED USED 180 INF 240 135 175 180 240 260 177 130 (Priority Q) 260 240260 570
178.
160 45 135 125 180 135 170130 240 175 110 USED USED USED USED 260 USED USED 180 INF 240 175 180 240 260 178 135 (Priority Q) 260 570
179.
160 45 135 125 180 135 170130 240 175 110 USED USED USED USED 260 USED USED 180 INF 240 180 240 260 179 175 (Priority Q) 260 570
180.
160 45 135 125 180 135 170130 240 175 110 USED USED USED USED 260 USED USED USED 135 170 135 170 240 260 180 180 (Priority Q) 170 135 260 750
181.
160 45 135 125 180 135 170130 240 175 110 USED USED USED USED 260 USED USED USED USED 170 170 240 260 181 135 (Priority Q) 260 885
182.
160 45 135 125 180 135 170130 240 175 110 USED USED USED USED 260 USED USED USED USED USED 240 260 182 170 (Priority Q) 260 1055
183.
160 45 135 125 180 135 170130 240 175 110 USED USED USED USED 260 USED USED USED USED USED 260 183 240 (Priority Q) 260 1055
184.
160 45 135 125 180 135 170130 240 175 110 USED USED USED USED USED USED USED USED USED USED 184 260 (Priority Q) 260 1315
185.
160 45 135 125 180 135 170130 240 175 110 USED USED USED USED USED USED USED USED USED USED 185 (Priority Q) 260 1315
186.
U X X U\X e e
T’ 1. T’ e 2. X U\X e e’ 3. T’ e’ e 4. e e’ e e 186
187.
U X X U\X e e
T’ 1. T’ e 2. X U\X e e’ 3. T’ e’ e 4. e e’ e e 187 e e
188.
U X X U\X e e
T’ 1. T’ e 2. X U\X e e’ 3. T’ e’ e 4. e e’ e e 188 T‘
189.
U X X U\X e e
T’ 1. T’ e 2. X U\X e e’ 3. T’ e’ e 4. e e’ e e 189 T‘ + e e e’
190.
U X X U\X e e
T’ 1. T’ e 2. X U\X e e’ 3. T’ e’ e 4. e e’ e e 190 T‘ − e’ + e e
191.
• − + − USED − • O(E log E) 191
192.
192
193.
• • 193 (Kruskal’s algorithm)
194.
160 45 135 125 180 135 170130 240 175 110 194 45 110 125 130 135 135 160 170 175 180 240 260 260 0
195.
160 135 125 180 135 170130 240 175 110 195 45 110 125 130 135 135 160 170 175 180 240 260 45 260 45
196.
160 45 135 125 180 135 170130 240 175 110 196 45 110 125 130 135 135 160 170 175 180 240 260 260 155
197.
160 45 135 125 180 135 170130 240 175 110 197 45 110 125 130 135 135 160 170 175 180 240 260 260 280
198.
160 45 135 125 180 135 170130 240 175 110 198 45 110 125 130 135 135 160 170 175 180 240 260 260 410
199.
160 45 135 125 180 135 170130 240 175 110 199 45 110 125 130 135 135 160 170 175 180 240 260 260 410
200.
160 45 135 125 180 135 170130 240 175 110 200 45 110 125 130 135 135 160 170 175 180 240 260 260 545
201.
160 45 135 125 180 135 170130 240 175 110 201 45 110 125 130 135 135 160 170 175 180 240 260 260 705
202.
160 45 135 125 180 135 170130 240 175 110 202 45 110 125 130 135 135 160 170 175 180 240 260 260 875
203.
160 45 135 125 180 135 170130 240 175 110 203 45 110 125 130 135 135 160 170 175 180 240 260 260 875
204.
160 45 135 125 180 135 170130 240 175 110 204 45 110 125 130 135 135 160 170 175 180 240 260 260 1055
205.
160 45 135 125 180 135 170130 240 175 110 205 45 110 125 130 135 135 160 170 175 180 240 260 260 1055
206.
260 160 45 135 125 180 135 170130 240 175 110 206 45 110 125 130 135 135 160 170 175 180 240 260 1315
207.
260 160 45 135 125 180 135 170130 240 175 110 207 45 110 125 130 135 135 160 170 175 180 240 260 1315
208.
• O(E log E) 208
209.
• O(E log E) • O(E) 209
210.
• O(E log E) • O(E) • 210
211.
211
212.
• Union-Find Tree (disjoint-set forest) Union-Find Tree 212
213.
• 213 Union-Find Tree
214.
• • 214 Union-Find Tree
215.
• • 215 Union-Find Tree
216.
• • • 216 Union-Find Tree
217.
• • • 217 Union-Find Tree
218.
218 Union-Find Tree
219.
O(n) 219 Union-Find Tree n:
220.
O(n) 220 Union-Find Tree n:
221.
• 221 Union-Find Tree
222.
• 222 Union-Find Tree
223.
• O(α(n)) 223 Union-Find Tree n:
224.
• O(α(n)) • α(n) 𝜶 𝟐
𝟐 𝟐 𝟐 𝟐 𝟐 𝟐 𝟐 − 𝟑 = 𝟒 224 Union-Find Tree n:
225.
• O(α(n)) • α(n) 𝜶 𝟐
𝟐 𝟐 𝟐 𝟐 𝟐 𝟐 𝟐 − 𝟑 = 𝟒 O(1) 225 Union-Find Tree n:
226.
• O(E log E) • O(E) • 226
227.
• O(E log E) • O(E) • O(1) O(E log E) + O(E) = O(E log E) 227
228.
228
229.
229
230.
• Union-Find Tree 230
231.
• Union-Find Tree • • O(E) • 231
232.
• • 232
233.
• • • 233
Télécharger maintenant