Soumettre la recherche
Mettre en ligne
ユークリッド最小全域木
•
2 j'aime
•
4,913 vues
理
理玖 川崎
Suivre
JOI夏季セミナー2016で発表したスライドです
Lire moins
Lire la suite
Données & analyses
Signaler
Partager
Signaler
Partager
1 sur 30
Télécharger maintenant
Télécharger pour lire hors ligne
Recommandé
指数時間アルゴリズム入門
指数時間アルゴリズム入門
Yoichi Iwata
色々なダイクストラ高速化
色々なダイクストラ高速化
yosupo
プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~
Takuya Akiba
Convex Hull Trick
Convex Hull Trick
HCPC: 北海道大学競技プログラミングサークル
最大流 (max flow)
最大流 (max flow)
HCPC: 北海道大学競技プログラミングサークル
RMQ クエリ処理
RMQ クエリ処理
HCPC: 北海道大学競技プログラミングサークル
プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造
Takuya Akiba
Rolling hash
Rolling hash
HCPC: 北海道大学競技プログラミングサークル
Recommandé
指数時間アルゴリズム入門
指数時間アルゴリズム入門
Yoichi Iwata
色々なダイクストラ高速化
色々なダイクストラ高速化
yosupo
プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~
Takuya Akiba
Convex Hull Trick
Convex Hull Trick
HCPC: 北海道大学競技プログラミングサークル
最大流 (max flow)
最大流 (max flow)
HCPC: 北海道大学競技プログラミングサークル
RMQ クエリ処理
RMQ クエリ処理
HCPC: 北海道大学競技プログラミングサークル
プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造
Takuya Akiba
Rolling hash
Rolling hash
HCPC: 北海道大学競技プログラミングサークル
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
Takuya Akiba
Re永続データ構造が分からない人のためのスライド
Re永続データ構造が分からない人のためのスライド
Masaki Hara
Binary indexed tree
Binary indexed tree
HCPC: 北海道大学競技プログラミングサークル
幾何コンテスト2013
幾何コンテスト2013
Naoto Mizuno
Rolling Hashを殺す話
Rolling Hashを殺す話
Nagisa Eto
実践・最強最速のアルゴリズム勉強会 第四回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第四回講義資料(ワークスアプリケーションズ & AtCoder)
AtCoder Inc.
LCA and RMQ ~簡潔もあるよ!~
LCA and RMQ ~簡潔もあるよ!~
Yuma Inoue
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
Hibiki Yamashiro
ウェーブレット木の世界
ウェーブレット木の世界
Preferred Networks
AtCoder Beginner Contest 023 解説
AtCoder Beginner Contest 023 解説
AtCoder Inc.
様々な全域木問題
様々な全域木問題
tmaehara
勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは
Takuya Akiba
指数時間アルゴリズムの最先端
指数時間アルゴリズムの最先端
Yoichi Iwata
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズム
Takuya Akiba
AtCoder Regular Contest 039 解説
AtCoder Regular Contest 039 解説
AtCoder Inc.
Union find(素集合データ構造)
Union find(素集合データ構造)
AtCoder Inc.
Donutsプロコンチャレンジ 2015 解説
Donutsプロコンチャレンジ 2015 解説
kuno4n
双対性
双対性
Yoichi Iwata
動的計画法を極める!
動的計画法を極める!
HCPC: 北海道大学競技プログラミングサークル
Trianguler
Trianguler
Ken Ogura
RNNで頑張ろう
RNNで頑張ろう
理玖 川崎
カードの取り合い
カードの取り合い
理玖 川崎
Contenu connexe
Tendances
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
Takuya Akiba
Re永続データ構造が分からない人のためのスライド
Re永続データ構造が分からない人のためのスライド
Masaki Hara
Binary indexed tree
Binary indexed tree
HCPC: 北海道大学競技プログラミングサークル
幾何コンテスト2013
幾何コンテスト2013
Naoto Mizuno
Rolling Hashを殺す話
Rolling Hashを殺す話
Nagisa Eto
実践・最強最速のアルゴリズム勉強会 第四回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第四回講義資料(ワークスアプリケーションズ & AtCoder)
AtCoder Inc.
LCA and RMQ ~簡潔もあるよ!~
LCA and RMQ ~簡潔もあるよ!~
Yuma Inoue
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
Hibiki Yamashiro
ウェーブレット木の世界
ウェーブレット木の世界
Preferred Networks
AtCoder Beginner Contest 023 解説
AtCoder Beginner Contest 023 解説
AtCoder Inc.
様々な全域木問題
様々な全域木問題
tmaehara
勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは
Takuya Akiba
指数時間アルゴリズムの最先端
指数時間アルゴリズムの最先端
Yoichi Iwata
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズム
Takuya Akiba
AtCoder Regular Contest 039 解説
AtCoder Regular Contest 039 解説
AtCoder Inc.
Union find(素集合データ構造)
Union find(素集合データ構造)
AtCoder Inc.
Donutsプロコンチャレンジ 2015 解説
Donutsプロコンチャレンジ 2015 解説
kuno4n
双対性
双対性
Yoichi Iwata
動的計画法を極める!
動的計画法を極める!
HCPC: 北海道大学競技プログラミングサークル
Trianguler
Trianguler
Ken Ogura
Tendances
(20)
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
Re永続データ構造が分からない人のためのスライド
Re永続データ構造が分からない人のためのスライド
Binary indexed tree
Binary indexed tree
幾何コンテスト2013
幾何コンテスト2013
Rolling Hashを殺す話
Rolling Hashを殺す話
実践・最強最速のアルゴリズム勉強会 第四回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第四回講義資料(ワークスアプリケーションズ & AtCoder)
LCA and RMQ ~簡潔もあるよ!~
LCA and RMQ ~簡潔もあるよ!~
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
ウェーブレット木の世界
ウェーブレット木の世界
AtCoder Beginner Contest 023 解説
AtCoder Beginner Contest 023 解説
様々な全域木問題
様々な全域木問題
勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは
指数時間アルゴリズムの最先端
指数時間アルゴリズムの最先端
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズム
AtCoder Regular Contest 039 解説
AtCoder Regular Contest 039 解説
Union find(素集合データ構造)
Union find(素集合データ構造)
Donutsプロコンチャレンジ 2015 解説
Donutsプロコンチャレンジ 2015 解説
双対性
双対性
動的計画法を極める!
動的計画法を極める!
Trianguler
Trianguler
Plus de 理玖 川崎
RNNで頑張ろう
RNNで頑張ろう
理玖 川崎
カードの取り合い
カードの取り合い
理玖 川崎
石油
石油
理玖 川崎
釣り
釣り
理玖 川崎
区間和剰余クエリ
区間和剰余クエリ
理玖 川崎
解説:ボス
解説:ボス
理玖 川崎
解説:デバッグ
解説:デバッグ
理玖 川崎
解説:貢物
解説:貢物
理玖 川崎
解説:歩くNPCたち
解説:歩くNPCたち
理玖 川崎
解説:エンブレム
解説:エンブレム
理玖 川崎
線形識別によるパターン認識
線形識別によるパターン認識
理玖 川崎
解説:サポーター
解説:サポーター
理玖 川崎
解説:おおきな数を作った
解説:おおきな数を作った
理玖 川崎
解説:吹奏楽部
解説:吹奏楽部
理玖 川崎
WAVE_WITH_GLSL
WAVE_WITH_GLSL
理玖 川崎
Plus de 理玖 川崎
(15)
RNNで頑張ろう
RNNで頑張ろう
カードの取り合い
カードの取り合い
石油
石油
釣り
釣り
区間和剰余クエリ
区間和剰余クエリ
解説:ボス
解説:ボス
解説:デバッグ
解説:デバッグ
解説:貢物
解説:貢物
解説:歩くNPCたち
解説:歩くNPCたち
解説:エンブレム
解説:エンブレム
線形識別によるパターン認識
線形識別によるパターン認識
解説:サポーター
解説:サポーター
解説:おおきな数を作った
解説:おおきな数を作った
解説:吹奏楽部
解説:吹奏楽部
WAVE_WITH_GLSL
WAVE_WITH_GLSL
ユークリッド最小全域木
1.
ユークリッド 最小全域木 @maroon_kuri
2.
このスライドはJOI夏季セミナー2016で発表したものです アニメーションGIFが入っていたのですが アップロードにできないので代わりにリンクを張りまし た
3.
ボロノイ図 2次元平面上の点がたくさんある 平面の最近点による分割を、ボロノイ図と呼ぶ (画像はwikipediaから)
4.
ボロノイ図 平面上の点を、サイトと呼ぶ サイトP_iに対応する領域を、P_iのボロノイセルと呼ぶ
5.
ドロネーグラフ サイトPiとPjのボロノイセルが隣接するならば、その間に 辺を張る こうしてできたグラフを、ドロネーグラフと呼ぶ
6.
Fortuneのアルゴリズム ボロノイ図やドロネーグラフを求めたい Fortuneのアルゴリズムを使うと、頂点数がNの 時、O(NlogN)で求められる!
7.
Fortuneのアルゴリズム 平面走査する ここのGIFが大変わかりやすいです https://en.wikipedia.org/wiki/Fortune%27s_algorithm
8.
Fortuneのアルゴリズム 上から平面走査する 平面走査の各段階では、 現在までに確定した部分を保持する
9.
Fortuneのアルゴリズム 走査線をLとおく ある点Pを考えて、「y座標L以下の いかなる点よりPの方が近い」 が成り立つ領域の境界は、 以下のようになる L P
10.
Fortuneのアルゴリズム Lより上にある全ての点で この放物線を考える。 L
11.
Fortuneのアルゴリズム 全ての放物線より下側にある 領域は、どのボロノイセルに 含まれるかわからない L
12.
Fortuneのアルゴリズム 2つの隣り合う放物線のもとになる サイトのボロノイセルは隣接する L
13.
Fortuneのアルゴリズム Lが小さくなるにつれ、新しい 放物線が増える L
14.
Fortuneのアルゴリズム Lが小さくなるにつれ、 放物線が消える L
15.
Fortuneのアルゴリズム 走査線の移動に伴って変化する放物線 の出現と削除を管理すればよさそう そのまま管理するのはもちろん やばいので、陰に保持する 放物線の並ぶ順に、もとになった サイトだけを保持しておけばいい
16.
Fortuneのアルゴリズム 保持しているリスト (0) L 0 21
17.
Fortuneのアルゴリズム 保持しているリスト (0,1,0,2,0) L 0 1 2
18.
21 Fortuneのアルゴリズム 保持しているリスト (0,1,2,0) L 0
19.
Fortuneのアルゴリズム ここで、リストを平衡二分探索木を使って保持すると、 1回の挿入/削除がO(logN)で行える あとは、放物線の出現、削除のタイミングが知りたい 出現は自明 じゃあ削除は?
20.
Fortuneのアルゴリズム 隣り合う3点を通る円の最下部のy座標で 真ん中の放物線が消える
21.
Fortune 新しく3点が隣り合うタイミングで、適切なy座標に、 放物線削除イベントを登録すればいい これは、優先度付きキューで実現できる
22.
Fortune 追加も削除もO(N)回 どの操作もO(logN)でできるので、合計O(NlogN)で求まる
23.
ユークリッド最小全域木 ユークリッド最小全域木とは、2点間の辺コストを そのユークリッド距離にした際の最小全域木 ドロネーグラフとの関係は? ドロネーグラフの辺コストをユークリッド距離にすると、 その最小全域木はユークリッド最小全域木になる
24.
ユークリッド最小全域木 証明 ある全域木Tがあり、点P_iとP_jを結ぶ辺がドロネーグラフ に含まれないが、Tに含まれるとする
25.
ユークリッド最小全域木 証明 少なくとも一つの点が、線分P_iーP_jを直径とする 円の内部に存在するので、これをP_kとおく P_i P_j P_k
26.
ユークリッド最小全域木 証明 Tから辺P_iーP_jを削除すると、P_kは、P_i,P_jのいずれか と 非連結になる(一般化し、P_iと非連結とする) P_k P_i P_j
27.
ユークリッド最小全域木 証明 ここで、|P_k – P_i|<|P_i
– P_j|より、P_iとP_kを結んで得 られる全域木T’は、Tよりもコストが低いので、 Tは最小全域木にはならない P_k P_i P_j
28.
ユークリッド最小全域木 ドロネーグラフの最小全域木を求めればよいとわかった 最小全域木は、O(ElogE)でもとまる ドロネーグラフの辺数は、オイラーの定理より、 O(N)で抑えられる ドロネーグラフはO(NlogN)で求まった よってユークリッド最小全域木はO(NlogN)で求まる
29.
応用 COCI 2015/2016 Second
Round DRZAVA 問題概要 2次元平面上にN個の点があり、それぞれに値がある 距離D以下の点対を結んで、 以下の条件を満たす連結成分を作りたい ・条件 連結成分内の点をいくつか選ぶと、 その値の総和がKの倍数になる Dの最小値を求めよ 制約:N≦50000,K≦30
30.
おわり ユークリッド最小全域木が社会常識になる日に備え、 今から実装しておこう!
Télécharger maintenant