Home
Explore
Submit Search
Upload
Login
Signup
Advertisement
Check these out next
動的計画法を極める!
HCPC: 北海道大学競技プログラミングサークル
充足可能性問題のいろいろ
Hiroshi Yamashita
平面グラフと交通ネットワークのアルゴリズム
Takuya Akiba
Union find(素集合データ構造)
AtCoder Inc.
二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方
Kensuke Otsuki
最小カットを使って「燃やす埋める問題」を解く
shindannin
組み込み関数(intrinsic)によるSIMD入門
Norishige Fukushima
Rolling Hashを殺す話
Nagisa Eto
1
of
57
Top clipped slide
直交領域探索
Aug. 26, 2016
•
0 likes
7 likes
×
Be the first to like this
Show More
•
11,821 views
views
×
Total views
0
On Slideshare
0
From embeds
0
Number of embeds
0
Download Now
Download to read offline
Report
Food
JOI夏季セミナー2016 コンピュータ・ジオメトリ
okuraofvegetable
Follow
Advertisement
Advertisement
Advertisement
Recommended
明日使えないすごいビット演算
京大 マイコンクラブ
62.2K views
•
60 slides
プログラミングコンテストでのデータ構造
Takuya Akiba
103.2K views
•
73 slides
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
Takuya Akiba
56.1K views
•
51 slides
Binary indexed tree
HCPC: 北海道大学競技プログラミングサークル
13.9K views
•
66 slides
2SAT(充足可能性問題)の解き方
Tsuneo Yoshioka
6.4K views
•
10 slides
指数時間アルゴリズム入門
Yoichi Iwata
43.1K views
•
98 slides
More Related Content
Slideshows for you
(20)
動的計画法を極める!
HCPC: 北海道大学競技プログラミングサークル
•
12.3K views
充足可能性問題のいろいろ
Hiroshi Yamashita
•
6.8K views
平面グラフと交通ネットワークのアルゴリズム
Takuya Akiba
•
25.6K views
Union find(素集合データ構造)
AtCoder Inc.
•
160.2K views
二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方
Kensuke Otsuki
•
6.1K views
最小カットを使って「燃やす埋める問題」を解く
shindannin
•
30.6K views
組み込み関数(intrinsic)によるSIMD入門
Norishige Fukushima
•
46K views
Rolling Hashを殺す話
Nagisa Eto
•
3.7K views
色々なダイクストラ高速化
yosupo
•
24.5K views
大規模グラフアルゴリズムの最先端
Takuya Akiba
•
54.1K views
様々な全域木問題
tmaehara
•
36.9K views
勉強か?趣味か?人生か?―プログラミングコンテストとは
Takuya Akiba
•
71.2K views
プログラムを高速化する話
京大 マイコンクラブ
•
239.9K views
Rolling hash
HCPC: 北海道大学競技プログラミングサークル
•
8.9K views
最適輸送入門
joisino
•
8.4K views
遺伝的アルゴリズム(Genetic Algorithm)を始めよう!
Kazuhide Okamura
•
101.4K views
【解説】 一般逆行列
Kenjiro Sugimoto
•
78.9K views
プログラミングコンテストでのデータ構造 2 ~動的木編~
Takuya Akiba
•
45K views
最適輸送の計算アルゴリズムの研究動向
ohken
•
7.4K views
最適輸送の解き方
joisino
•
19.1K views
Similar to 直交領域探索
(20)
プログラミングコンテストでの乱択アルゴリズム
Takuya Akiba
•
26.2K views
楕円曲線入門トーラスと楕円曲線のつながり
MITSUNARI Shigeo
•
17.8K views
AtCoder Regular Contest 017
AtCoder Inc.
•
6.5K views
凸包
Yasutaka Hiraki
•
532 views
At coder regular contest 013 解説
光喜 濱屋
•
1.6K views
「現実世界に活かす数学」 (麻布高等学校、教養総合、数学講義 5 回目)
Kensuke Otsuki
•
256 views
WUPC2012
Dai Hamada
•
1.6K views
暗号技術の実装と数学
MITSUNARI Shigeo
•
9.3K views
CODE THANKS FESTIVAL 2014 A日程 解説
AtCoder Inc.
•
2.4K views
ニューラル論文を読む前に
Hayahide Yamagishi
•
339 views
わんくま勉強会東京#82 あおいたんのパズルを数学しましょうか
Masami Yabushita
•
1.4K views
AtCoder Beginner Contest 035 解説
AtCoder Inc.
•
16.7K views
T82 aoitan あおいたんのパズルを数学しましょうか_修正版
Masami Yabushita
•
1.4K views
自然言語処理のための機械学習入門1章
Hiroki Mizukami
•
11.6K views
CODE FESTIVAL 2015 沖縄ツアー 解説
AtCoder Inc.
•
2.4K views
Naivebayes
ilove2dgirl
•
35 views
CODE FESTIVAL 2014 本選 解説
AtCoder Inc.
•
5.4K views
130323 slide all
ikea0064
•
280 views
WSDM2012読み会: Learning to Rank with Multi-Aspect Relevance for Vertical Search
sleepy_yoshi
•
4.4K views
AtCoder Regular Contest 027 解説
AtCoder Inc.
•
4.8K views
Advertisement
More from okuraofvegetable
(9)
Monadic second-order logic
okuraofvegetable
•
169 views
パタヘネゼミ 第6章
okuraofvegetable
•
898 views
パタヘネゼミ 第2回
okuraofvegetable
•
226 views
グレブナー基底
okuraofvegetable
•
1.6K views
NPCA summer 2014
okuraofvegetable
•
690 views
JOI summer seminar 2014
okuraofvegetable
•
890 views
Lecture2
okuraofvegetable
•
289 views
LT
okuraofvegetable
•
648 views
Wrapping potato chips is fun
okuraofvegetable
•
661 views
Recently uploaded
(20)
289约克大学.pdf
fggg13
•
2 views
加拿大:瑞尔森大学毕业证办理流程
qtgyky
•
3 views
如何购买文凭《百年理工学院毕业证成绩单》
tnopob
•
2 views
揭秘法国留学:如何获得鲁昂大学毕业证?
beyeme1761
•
3 views
☀️《萨瓦毕业证仿真》
hjhgg1
•
2 views
购买毕业证:布伦艺术学院文凭证书
ouhtedu
•
2 views
在哪里可以做《温莎大学文凭证书|毕业证》
25ds12d
•
3 views
揭秘美国留学:如何获得纽约州立大学布法罗分校毕业证?
apwhava
•
4 views
《伊利诺伊大学香槟分校毕业证|学位证书校内仿真版本》
d520dasw12
•
2 views
在哪里可以做《国立大学文凭证书|毕业证》
kjds1245
•
2 views
在哪里可以做《约克大学文凭证书|毕业证》
25ds12d
•
3 views
《基尔大学毕业证|学位证书校内仿真版本》
hj123saf
•
2 views
健康食品チラシ_2薬機法対応.pdf
ReRe Design
•
7 views
#学位证靠谱办Lorraine文凭证书全套
qghfsvkwiqiubridge
•
2 views
健康食品チラシ_薬機法非対応_坂本一生.pdf
ReRe Design
•
5 views
52贝勒大学.pdf
dsadasd17
•
2 views
办理犹他大学毕业证留服认证
JhhhfGffh
•
3 views
#国外留学文凭购买Dartmouth学院假毕业证书
14zw8z53qmm
•
2 views
★可查可存档〖制作爱丁堡大学文凭证书毕业证〗
vgfg1
•
2 views
#专业办证《UoB毕业证学位证原版精仿》
mibiri4418mevor
•
2 views
Advertisement
直交領域探索
直交領域探索 okuraofvegetable
まずはじめに • 皆さんよく長方形の内部に含まれ る点を列挙したくなりますよね?
というのは冗談で • 世の中の問題にはしばしばn次元空間における直交領域 のクエリに帰着できるものが存在する • というわけでこれを高速に行いたい
Simple is Best •
𝑑次元平面の𝑁点の中から与えられた直交領域内の点を 列挙したい(𝑑 ≪ 𝑁) • ケースによってはすべての点を列挙することになるので 最悪𝑂(𝑁) • すべての点について領域内か判定すれば𝑂(𝑁) • よって愚直解が最適
Simple is Best •
𝑑次元平面の𝑁点の中から与えられた直交領域内の点を 列挙したい(𝑑 ≪ 𝑁) • ケースによってはすべての点を列挙することになるので 最悪𝑂(𝑁) • すべての点について領域内か判定すれば𝑂(𝑁) • よって愚直解が最適 • 優勝
ご清聴ありがとうございました
というのは冗談で • お分かりのとおり、すべての点の数Nだけでなく領域内 の点の数𝐾で評価すべき • 出力サイズに敏感(𝑂𝑢𝑡𝑝𝑢𝑡
− 𝑠𝑒𝑛𝑠𝑖𝑡𝑖𝑣𝑒)というらしい • これらのクエリにある程度高速に答えられるデータ構造 を紹介します
とりあえず1次元で • これは点の座標を葉に持つような二分探索木を構築すれ ば簡単に答えられる • 二分探索木として平衡二分木を用い、二分木の全頂点で 座標を管理してもできる
こんな感じ 3 19 30
49 59 70 89 100
こんな感じ 49 19 59 3 30
59 89 3 19 30 49 59 70 89 100 3 19 30 49 59 70 89 100
こんな感じ 49 19 59 3 30
59 89 3 19 30 49 59 70 89 100 3 19 30 49 59 70 89 100 葉が各値に対応している
クエリがきたら • クエリに答える際は、𝑠𝑒𝑔𝑚𝑒𝑛𝑡 𝑡𝑟𝑒𝑒の時とほぼ同様にし て答えられる
こんな感じ 49 19 59 3 30
59 89 3 19 30 49 59 70 89 100 クエリ [20,60] 見ている区間 [-∞、∞]
こんな感じ 49 19 59 3 30
59 89 3 19 30 49 59 70 89 100 クエリ [20,60] 見ている区間 [-∞、∞]
こんな感じ 49 19 59 3 30
59 89 3 19 30 49 59 70 89 100 クエリ [20,60] 見ている区間 [-∞、49]
こんな感じ 49 19 59 3 30
59 89 3 19 30 49 59 70 89 100 クエリ [20,60] 見ている区間 [-∞、49]
こんな感じ 49 19 59 3 30
59 89 3 19 30 49 59 70 89 100 クエリ [20,60] 見ている区間 [-∞、19]
こんな感じ 49 19 59 3 30
59 89 3 19 30 49 59 70 89 100 クエリ [20,60] 見ている区間 [-∞、19]←重なりがない→
こんな感じ 49 19 59 3 30
59 89 3 19 30 49 59 70 89 100 クエリ [20,60] 見ている区間 (19,49]完全に含まれている→
こんな感じ 49 19 59 3 30
59 89 3 19 30 49 59 70 89 100 クエリ [20,60] 見ている区間 (19,49]
こんな感じ 49 19 59 3 30
59 89 3 19 30 49 59 70 89 100 クエリ [20,60] 見ている区間 (49,∞]
こんな感じ 49 19 59 3 30
59 89 3 19 30 49 59 70 89 100 クエリ [20,60] 見ている区間 [-∞、49] 残りも同様にして
こんな感じ 49 19 59 3 30
59 89 3 19 30 49 59 70 89 100 クエリ [20,60] 見ている区間 [-∞、49] 残りも同様にして 求まった
計算量 • 構築 に •
空間計算量 𝑂(𝑁) • 時間計算量 𝑂(𝑁𝑙𝑜𝑔𝑁) • クエリ毎に • 𝑂 𝑙𝑜𝑔𝑁 + 𝐾 • (𝐾は答える点の数)
kD-Tree • 2次元以上でも、同様に点を二分探索木で管理してクエ リに答えたい。 • ではどうするか?
kD-Tree • 2次元以上でも、同様に点を二分探索木で管理してクエ リに答えたい。 • ではどうするか? •
奇数回目はx座標で、偶数回目はy座標で、分割する
kD-Tree
kD-Tree 𝑙1
kD-Tree 𝑙1 𝑙2
kD-Tree 𝑙1 𝑙2 𝑙3
kD-Tree 𝑙1 𝑙2 𝑙3 𝑙5 𝑙6 𝑙4 𝑙9 𝑙7 𝑙8
kD-Tree 𝑙1 𝑙2 𝑙3 𝑙4 𝑙5
𝑙7 𝑙8 𝑙6 𝑙9
クエリがきたら • 1次元の場合とほぼ同様にできる。
kD-Treeの計算量 • 2次元の場合 • 構成に •
空間計算量𝑂(𝑁) • 時間計算量𝑂(𝑁𝑙𝑜𝑔𝑁) • クエリ毎に • 𝑂( 𝑁 + 𝐾)
kD-Treeの計算量 • 一般に𝑑次元の場合(𝑑 ≥
2) • 構成に • 空間計算量𝑂(𝑁) • 時間計算量𝑂(𝑁𝑙𝑜𝑔𝑁) • クエリ毎に • 𝑂(𝑁1− 1 𝑑 + 𝐾)
領域木(Range Tree) • まずx座標だけに着目して二分探索木で点を持つ •
今回はkD木の時とは異なり葉だけが点の座標を管理して いるわけではない • そして、各頂点に対応するx座標を持った点達のy座標を 管理する二分探索木を頂点が持っている
こんな感じ
イメージ図
計算量 • x座標を管理する二分探索木を走査するのに𝑂(𝑙𝑜𝑔𝑁) • 走査した各頂点からy座標を管理している二分探索木を 走査するのに𝑂(𝑙𝑜𝑔𝑁) •
あわせて𝑂(𝑙𝑜𝑔2 𝑁 + 𝐾)
計算量 • x座標を管理する二分探索木を走査するのに𝑂(𝑙𝑜𝑔𝑁) • 走査した各頂点からy座標を管理している二分探索木を 走査するのに𝑂(𝑙𝑜𝑔𝑁) •
あわせて𝑂(𝑙𝑜𝑔2 𝑁 + 𝐾) • よさみが深い
計算量 • x座標を管理する二分探索木を走査するのに𝑂(𝑙𝑜𝑔𝑁) • 走査した各頂点からy座標を管理している二分探索木を 走査するのに𝑂(𝑙𝑜𝑔𝑁) •
あわせて𝑂(𝑙𝑜𝑔2 𝑁 + 𝐾) • よさみが深い • が、まだ早くできる
~断片的直列接続法~ フラクショナルカスケーディング
RangeTreeのムダ • 𝑂(𝑙𝑜𝑔𝑁)個の二分探索木に対する探索の範囲はすべて同 じ • うまいことやればいい感じにできそう
Fractional cascading 3 19
30 49 59 70 89 100 ↑点たちをy座標でソート(枠内はy座標の値)
Fractional cascading 3 19
30 49 59 70 89 100 3 49 59 89 19 30 70 100 x座標が中央値以下のものとそれ以外のものに分ける
Fractional cascading 3 19
30 49 59 70 89 100 3 49 59 89 19 30 70 100 残りも同様に 3 59 49 89 19 100 30 70
Fractional cascading 3 19
30 49 59 70 89 100 3 49 59 89 19 30 70 100 3 59 49 89 19 100 30 70 3 59 49 89 19 100 30 70
3 19 30
49 59 70 89 100 3 49 59 89 19 30 70 100 3 59 49 89 19 100 30 70 3 59 49 89 19 100 30 70 x座標の区間に対応する数列たち(例えば図の赤い部分)か ら同じy座標の区間に入る数たちを探す
Fractional cascading 3 19
30 49 59 70 89 100 3 49 59 89 19 30 70 100 3 59 49 89 19 100 30 70 3 59 49 89 19 100 30 70
Fractional cascading • あとは昨日のcatupperさんの講義で言っていたのと同 じ要領で、始めの1つだけ二分探索をしてあとはリンク をたどっていけばよい •
今回は特殊ケースで、元から1つ前の数列の半分が入っ ているので扱う数の範囲に偏りがある心配はない
計算量 • 始めの二分探索に𝑂(𝑙𝑜𝑔𝑁) • リンクをたどるのに𝑂(𝑙𝑜𝑔𝑁) •
あわせて𝑂(𝑙𝑜𝑔𝑁 + 𝐾)
計算量 • 始めの二分探索に𝑂(𝑙𝑜𝑔𝑁) • リンクをたどるのに𝑂(𝑙𝑜𝑔𝑁) •
あわせて𝑂(𝑙𝑜𝑔𝑁 + 𝐾) • ありえんよさみが深い
競プロの問題を解きたい • せっかくやし競プロの問題といてAcceptedの文字が見 たい • AOJのDSLくらいしかない…
使う問題あるよ!
Codeforces Round #118 Div1
E Soap Time! – 2 • 問題概要 • 座標平面上のN点に人がおり、どこか一点に集まりたい。 • 人は1単位時間ごとに上下左右に1進むことができる • 座標平面上のK点に駅があり、これらの任意の2点間は相 互に瞬間移動可能である • 全員が1点に集まるのにかかる時間の最小値を求めよ
ごめんなさい • 今回は時間がたりなかったため通すのを断念しました • また時間があるときに解こうと思います
ご清聴ありがとうございました
Advertisement