SlideShare a Scribd company logo
Submit Search
Upload
Login
Signup
ドロネー三角形分割
Report
Yusuke Matsushita
Follow
programmer at The University of Tokyo, Information Science
Aug. 29, 2013
•
0 likes
•
37,770 views
1
of
32
ドロネー三角形分割
Aug. 29, 2013
•
0 likes
•
37,770 views
Download Now
Download to read offline
Report
ドロネー三角形分割のゆるふわな説明
Yusuke Matsushita
Follow
programmer at The University of Tokyo, Information Science
Recommended
【解説】 一般逆行列
Kenjiro Sugimoto
80K views
•
28 slides
最適化超入門
Takami Sato
172.1K views
•
80 slides
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
Shota Imai
265.2K views
•
159 slides
20090924 姿勢推定と回転行列
Toru Tamaki
26K views
•
34 slides
方策勾配型強化学習の基礎と応用
Ryo Iwaki
18K views
•
42 slides
Optimizer入門&最新動向
Motokawa Tetsuya
22.7K views
•
21 slides
More Related Content
What's hot
直交領域探索
okuraofvegetable
12.1K views
•
57 slides
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
Ken'ichi Matsui
80.6K views
•
233 slides
グラフニューラルネットワーク入門
ryosuke-kojima
49.9K views
•
65 slides
グラフニューラルネットワークとグラフ組合せ問題
joisino
4.3K views
•
54 slides
SSII2019企画: 点群深層学習の研究動向
SSII
8.1K views
•
27 slides
[DL輪読会]Control as Inferenceと発展
Deep Learning JP
2.7K views
•
29 slides
What's hot
(20)
直交領域探索
okuraofvegetable
•
12.1K views
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
Ken'ichi Matsui
•
80.6K views
グラフニューラルネットワーク入門
ryosuke-kojima
•
49.9K views
グラフニューラルネットワークとグラフ組合せ問題
joisino
•
4.3K views
SSII2019企画: 点群深層学習の研究動向
SSII
•
8.1K views
[DL輪読会]Control as Inferenceと発展
Deep Learning JP
•
2.7K views
確率モデルを用いた3D点群レジストレーション
Kenta Tanaka
•
1.4K views
猫でも分かるVariational AutoEncoder
Sho Tatsuno
•
130.8K views
初めてのグラフカット
Tsubasa Hirakawa
•
8.6K views
[Dl輪読会]dl hacks輪読
Deep Learning JP
•
2.6K views
生成モデルの Deep Learning
Seiya Tokui
•
47.7K views
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
RyuichiKanoh
•
25K views
モデル高速化百選
Yusuke Uchida
•
24.5K views
プログラミングコンテストでの乱択アルゴリズム
Takuya Akiba
•
26.6K views
モデルアーキテクチャ観点からの高速化2019
Yusuke Uchida
•
17.7K views
変分ベイズ法の説明
Haruka Ozaki
•
41.1K views
You Only Look One-level Featureの解説と見せかけた物体検出のよもやま話
Yusuke Uchida
•
9.3K views
cvpaper.challenge 研究効率化 Tips
cvpaper. challenge
•
20.8K views
[DL輪読会]Grokking: Generalization Beyond Overfitting on Small Algorithmic Datasets
Deep Learning JP
•
2.7K views
Semantic segmentation
Takuya Minagawa
•
109.7K views
Viewers also liked
3次元の凸包を求める
abc3141
4.7K views
•
24 slides
Cc dx lib72-p
CHY72
5.6K views
•
11 slides
分割木
Kohji Liu
1.3K views
•
12 slides
Pleasant Valley Factory Tour
Riverview Homes, Inc.
462 views
•
54 slides
Maxcut - Mesa de Corte
Emaser
1.8K views
•
2 slides
Cammelli AlmaLaurea25agosto2014
Giuseppe De Nicolao
2.6K views
•
48 slides
Viewers also liked
(20)
3次元の凸包を求める
abc3141
•
4.7K views
Cc dx lib72-p
CHY72
•
5.6K views
分割木
Kohji Liu
•
1.3K views
Pleasant Valley Factory Tour
Riverview Homes, Inc.
•
462 views
Maxcut - Mesa de Corte
Emaser
•
1.8K views
Cammelli AlmaLaurea25agosto2014
Giuseppe De Nicolao
•
2.6K views
DuroMax XP10000E Generator Owners Manual
DuroMax
•
54.9K views
Salida Hermandad del Rocío (Lucena del Puerto)
jeromof
•
2K views
全域木いろいろ
HCPC: 北海道大学競技プログラミングサークル
•
6.9K views
joi2012-sp-day2-broadcasting
Masaki Hara
•
1.3K views
abc031
AtCoder Inc.
•
9.3K views
Phys.org mobile social ...revive extinct language
Lisa Schmidt
•
2.2K views
openFrameworks 動きを生みだす様々なアルゴリズム - 多摩美メディアアートII
Atsushi Tadokoro
•
11.1K views
AtCoder Beginner Contest 013 解説
AtCoder Inc.
•
11K views
情報抽出入門 〜非構造化データを構造化させる技術〜
Yuya Unno
•
37.8K views
Unityのポストエフェクトで遊ぶ!
Yamato Honda
•
30.7K views
MIRU2014 tutorial deeplearning
Takayoshi Yamashita
•
455K views
Media Art II 2013 第6回:openFrameworks Addonを使う 2 - ofxOpenCV と ofxCv
Atsushi Tadokoro
•
24.4K views
エクセルで統計分析 統計プログラムHADについて
Hiroshi Shimizu
•
6.1M views
AtCoder Beginner Contest 023 解説
AtCoder Inc.
•
17.3K views
More from Yusuke Matsushita
NPC April Fool's Contest 2014 累乗数
Yusuke Matsushita
2.7K views
•
11 slides
Haskell Lecture 2
Yusuke Matsushita
4.8K views
•
179 slides
Haskell Lecture 1
Yusuke Matsushita
4K views
•
79 slides
関数型プログラミングのすゝめ
Yusuke Matsushita
2.3K views
•
24 slides
型理論 なんて自分には関係ないと思っているあなたへ
Yusuke Matsushita
10.2K views
•
32 slides
C#への招待
Yusuke Matsushita
3.4K views
•
59 slides
More from Yusuke Matsushita
(11)
NPC April Fool's Contest 2014 累乗数
Yusuke Matsushita
•
2.7K views
Haskell Lecture 2
Yusuke Matsushita
•
4.8K views
Haskell Lecture 1
Yusuke Matsushita
•
4K views
関数型プログラミングのすゝめ
Yusuke Matsushita
•
2.3K views
型理論 なんて自分には関係ないと思っているあなたへ
Yusuke Matsushita
•
10.2K views
C#への招待
Yusuke Matsushita
•
3.4K views
Modeling Concurrent Computing
Yusuke Matsushita
•
1.3K views
Programmers, be a Wikipedian
Yusuke Matsushita
•
572 views
OpenMPI入門
Yusuke Matsushita
•
18.8K views
確率解析計算
Yusuke Matsushita
•
2.3K views
プログラミング・パラダイム
Yusuke Matsushita
•
4.2K views
ドロネー三角形分割
1.
ドロネー三角形分割 shiatsumat 松下祐介
2.
自己紹介 • Haskell共和国の住人 • 競技プログラミングエンジョイ勢
3.
本の紹介 • 『コンピュータ・ジオメトリ』 • 計算機科学の一分野の計算幾何学の本 •
著者4人のうち3人がMark
4.
今日の予定 • ドロネー三角形分割についてゆるふわに 話します
5.
三角形分割 • 平面上の点の集合Pについて、いくつかの 点の対も辺で結ばれていて、どの辺も交 差していなくて、どの辺で結ばれていな い2点を辺で結んでも、辺が交差してしま うような、平面の分割(辺の取り方)を 三角形分割という。 • これが三角形分割です→実演
6.
三角形分割 • どの面も三角形である。 (∵多角形は三角形に分割できる) • 外側はPの凸包である。 •
Pがn点を含み、Pの凸包の境界上にk点が あるとき、Pのどの三角形分割も、2n-2-k 個の三角形を含み、3n-3-k個の辺を含む。
7.
ドロネー三角形分割 • Pの三角形分割Tにm個の三角形が含まれ ているとし、Tのそれぞれの三角形の内角 3m個を昇順にソートした列をTの角度ベ クトルという。 • Pの三角形分割のうち、角度ベクトルが辞 書順で最大であるものをPのドロネー三角 形分割という。 •
これがドロネー三角形分割です→実演
8.
ドロネー三角形分割 • TをPの三角形分割とする。TがPのドロ ネー三角形分割であるための必要十分条 件は、Tの任意の三角形の外接円がその内 部にPの点を含まないことである。 不正な辺
9.
アルゴリズムの概要 • 乱択逐次構成法 • 点をシャッフルし、1つずつ点を増やして いってそのたびにドロネー三角形分割を する •
割と簡単
10.
アルゴリズム • Pをn点の集合とする • 三角形分割をするために、最初にPの点を 全て含む大きい三角形を考える (すごく左上にある点とすごく右上にあ る点を追加し、Pの一番下にある点と一緒 に三角形を作る) •
三角形分割Tを大きい三角形として初期化 する。
11.
アルゴリズム • Pの一番下にある点以外の点をシャッフル し、列P’を求める。 • P’の点Xを順に追加していく。 •
Xを含む三角形分割Tの三角形を△ABCと する。Tにおいて△ABCを△XBC・ △XCA・△XABに分割する。 • ここで不正な辺が出来ていないか確かめ る。
12.
アルゴリズム • 不正な辺になる可能性があるのはBC, CA, ABの3辺。 •
ここではBCが不正であるかを確かめてい く。他も同様にできる。
13.
アルゴリズム • △XBCと辺BCで接する三角形を△YCBと する。 • Yが△XBCの外接円の内部にあれば、BC は不正。 X C B Y 不正な辺
14.
アルゴリズム • 不正な辺があった際は、図のように フリップする。 X C B Y X C B Y
15.
アルゴリズム • フリップしたらまた不正な辺ができるか もしれない。 • YBとYCが不正であるかどうか確かめる。 以下同様に続いていく。 X C B Y
16.
アルゴリズム • 最終的に全部の点を追加したら、三角形 分割Tから、最初に追加したすごく左上の 点とすごく右上の点に接続している辺を すべて取り除く。 • これでドロネー三角形分割は完了。 •
うれしい。
17.
アルゴリズム • 「Xを含む三角形分割Tの三角形を△ABC とする。」ここの計算量はどうだろう か? • ナイーブに個々の三角形について点が含 まれているか確かめることもできるが、 O(n)となる •
三角形分割と同時に木構造を作って再帰 的に求めていくことができる
18.
アルゴリズム • この乱択逐次構成法の計算量の期待値は O(n log
n) • うれしい。
19.
ドロネー三角形分割の実用例 • 各地点の高さが分かっているとき、地形の 状況をドロネー三角形分割に基づき表す
20.
ボロノイ図 • 点の集合Pがあり、平面上のすべての座標 について、一番近いPの要素の点を表す図。
21.
ボロノイ図 • 藤原さんが夏季セミナー中に実装しました
22.
ボロノイ図⇔ドロネー三角形分割 • ボロノイ図で領域が接している⇔ ドロネー三角形分割で辺で結ばれている
23.
ボロノイ図の実用例 • 主要都市を元に地域を分割する
24.
ドロネー三角形分割→EMST • ユークリッド最小木(EMST): 平面上の全 ての点を連結する木の中で辺の長さの総 和が最小なもの •
ドロネー三角形分割をグラフとして見る。 点の数をnとするとドロネー三角形分割の 辺の数は3n-3-kなので、O(n log n)で最 小全域木が求まる。ドロネー三角形分割 と合わせてもO(n log n)となる。
25.
行商人問題 (TSP) • 言わずと知れたNP困難問題 •
n点の間にいくつか距離のある辺があって、 n点全てを1回だけ通る経路のうち総移動 距離が最小のものを求めよ、という問題 • ここではn点は平面上にあり、どの2点間 にも辺があり幾何的な距離を持っている ものとする
26.
EMST→2近似TSP • EMSTからTSPの2近似アルゴリズム(総 移動距離が最小の場合の2倍以下)を作る ことができる • まずEMSTをなめる閉路をつくる
27.
EMST→2近似TSP • 閉路をショートカットしていく。
28.
EMST→2近似TSP • 2回通っている点についてO(1)でショート カットできるので、O(n)で巡回路になる。 EMSTまでと合わせてO(n log
n)となる。
29.
EMST→2近似TSP • 行商人問題の最適解での総移動距離をtsp、 最小全域木の辺の長さの合計をemst、 ここで求めた巡回路の総移動距離をdとす る。 tsp≧tspから1本辺を取ったもの≧emst d≦2emst ∴d≦2tsp • 以上よりこれは2近似アルゴリズムである。
30.
おまけ • 暇だったので3Dの凸包を作ってみました →実演 • このアルゴリズムも乱択逐次構成法 •
うれしい
31.
まとめ • ドロネー三角形分割はうれしい!
32.
ありがとうございました