SlideShare ist ein Scribd-Unternehmen logo
1 von 24
3次元の凸包を求めよう
@abcdef3141
1. 凸包の定義
2. アルゴリズムの説明
0. 目次
あとおまけ
1. 凸包の定義
N次元空間内に点P1、P2、…Pnがあるとして、
ΣPiXi(ΣXi=1 、Xi>=0)を満たす点の集合
……?
1. 凸包の定義
2次元なら…
外側から輪ゴムを
かけるイメージ
1. 凸包の定義
3次元なら…
3次元のゴムみたいなやつで
全ての点の周りを覆った時の
凸多面体。
2. 凸包のアルゴリズムの説明
結論としては、計算量は平均で
O(nlogn)になる。(nは頂点の数)
平均というのは、
頂点をランダムに並べ替えたときの平均、という意味
※ここからはどの4点も同一平面上にないとして考えます
2. 凸包のアルゴリズムの説明
そもそもどうやって凸包Cを表すか
→面と辺を使って表す
→最終的な面の数がO(n^2)個になったりしないのか?
→いいえ。(O(n)で抑えられる)
2. 凸包のアルゴリズムの説明
とりあえずはじめに4頂点で四面体C4を作り、1頂点ずつ
凸包に追加していく方法で考える。(C5,C6,…,Cn=C)
ある頂点vを増やすときに、 vがCv-1の内部に存在す
る →その頂点は無視できる
そうでない時はどうすべきか?
2. 凸包のアルゴリズムの説明
2. 凸包のアルゴリズムの説明
2. 凸包のアルゴリズムの説明
地平線と頂点vを結んで凸包に追加する
Cv-1から取り除かれる面は、頂点vから見えてい
るものなので見えるかどうかを調べる
2. 凸包のアルゴリズムの説明
これを頂点vごとに全ての面についていちいち調べると、
(出てくる面の合計数は高々O(n)なのも併せて)
それぞれについてO(n)→合計でO(n^2)
2. 凸包のアルゴリズムの説明
Cv-1から取り除かれる面は、頂点vから見
えているものなのでそれを調べる
ここからどうするか?
再揭:
頂点とそこから見えている面の関係に注目
2. 凸包のアルゴリズムの説明
頂点 面
頂点v
頂点vから
見える面
(後で凸包から削除)
2. 凸包のアルゴリズムの説明
頂点を先読みして、はじめの4面体(C4)の4面と他のN-4頂点
について見えるかどうかの関係をグラフで持っておく
頂点や面が凸包から追加されたり削除されたりしたら、
そのグラフに作業をする方向性で頑張る
2. 凸包のアルゴリズムの説明
削除は簡単だからどうでもいいけど、
面を追加する際に探す対象となる頂点を減らしたいなあ
2. 凸包のアルゴリズムの説明
Cv-1に頂点vを追加したときそれぞれ追加される面に対して、
その面を見ることのできる頂点の候補を事前に絞り込みたい
きゅうり君の意見
2. 凸包のアルゴリズムの説明
ここで地平線に注目すると、追加された面が見えるにはそ
の面がつながる地平線が見えていなければいけない
その地平線を含んでいた面のうちの一つ以上が
見えていた頂点を見ればよい
今みなさんが見ている視点から見ると
黒い辺の交点が追加されたとして一番
手前の面(黒黒紫)が見えるには追加さ
れた頂点から見た地平線(左の青青
紫)が見えることが必要、ということです
2. 凸包のアルゴリズムの説明
実は、「地平線を含む面が見えていた頂点の数」の
平均は常にO(logn)で抑えられる
証明:コンフィギュレーション空間をうまく定義して使うと、そのコンフィギュレーション空
間に含まれる衝突サイズの和の期待値が上から抑えられてそれを使えば示せる。
2. 凸包のアルゴリズムの説明
先ほども出てきたが、途中で出てきた(削除された
ものも含む)面も
O(n)で抑えられる
よって、先ほどまでO(n^2)だったところが
O(nlogn)で求まることがわかる。
だから全体でO(nlogn)になる。
2. 凸包のアルゴリズムの説明
やったね!
あとは実装するだけだ!
2. 凸包のアルゴリズムの説明
ということで興味がある人は
実装してみてください。
114514.感想?
人間って3次元の世界に生きているのに
3次元幾何に慣れていないのって
変だなあと思いました。
4次元の世界に生きていれば慣れるのかなと
思います
ご清聴ありがとうございました。

Weitere ähnliche Inhalte

Was ist angesagt?

スパースモデリング入門
スパースモデリング入門スパースモデリング入門
スパースモデリング入門Hideo Terada
 
SSII2018TS: 3D物体検出とロボットビジョンへの応用
SSII2018TS: 3D物体検出とロボットビジョンへの応用SSII2018TS: 3D物体検出とロボットビジョンへの応用
SSII2018TS: 3D物体検出とロボットビジョンへの応用SSII
 
Introduction to YOLO detection model
Introduction to YOLO detection modelIntroduction to YOLO detection model
Introduction to YOLO detection modelWEBFARMER. ltd.
 
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムプログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムTakuya Akiba
 
三次元点群を取り扱うニューラルネットワークのサーベイ
三次元点群を取り扱うニューラルネットワークのサーベイ三次元点群を取り扱うニューラルネットワークのサーベイ
三次元点群を取り扱うニューラルネットワークのサーベイNaoya Chiba
 
SSII2019企画: 点群深層学習の研究動向
SSII2019企画: 点群深層学習の研究動向SSII2019企画: 点群深層学習の研究動向
SSII2019企画: 点群深層学習の研究動向SSII
 
図と実装で理解する『木構造入門』
図と実装で理解する『木構造入門』図と実装で理解する『木構造入門』
図と実装で理解する『木構造入門』Proktmr
 
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門競技プログラミングのためのC++入門
競技プログラミングのためのC++入門natrium11321
 
【DL輪読会】AUTOGT: AUTOMATED GRAPH TRANSFORMER ARCHITECTURE SEARCH
【DL輪読会】AUTOGT: AUTOMATED GRAPH TRANSFORMER ARCHITECTURE SEARCH【DL輪読会】AUTOGT: AUTOMATED GRAPH TRANSFORMER ARCHITECTURE SEARCH
【DL輪読会】AUTOGT: AUTOMATED GRAPH TRANSFORMER ARCHITECTURE SEARCHDeep Learning JP
 
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門Norishige Fukushima
 
強化学習その2
強化学習その2強化学習その2
強化学習その2nishio
 
最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解くshindannin
 

Was ist angesagt? (20)

Convex Hull Trick
Convex Hull TrickConvex Hull Trick
Convex Hull Trick
 
明日使えないすごいビット演算
明日使えないすごいビット演算明日使えないすごいビット演算
明日使えないすごいビット演算
 
スパースモデリング入門
スパースモデリング入門スパースモデリング入門
スパースモデリング入門
 
SSII2018TS: 3D物体検出とロボットビジョンへの応用
SSII2018TS: 3D物体検出とロボットビジョンへの応用SSII2018TS: 3D物体検出とロボットビジョンへの応用
SSII2018TS: 3D物体検出とロボットビジョンへの応用
 
目指せグラフマスター
目指せグラフマスター目指せグラフマスター
目指せグラフマスター
 
Introduction to YOLO detection model
Introduction to YOLO detection modelIntroduction to YOLO detection model
Introduction to YOLO detection model
 
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムプログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズム
 
PCL
PCLPCL
PCL
 
三次元点群を取り扱うニューラルネットワークのサーベイ
三次元点群を取り扱うニューラルネットワークのサーベイ三次元点群を取り扱うニューラルネットワークのサーベイ
三次元点群を取り扱うニューラルネットワークのサーベイ
 
SSII2019企画: 点群深層学習の研究動向
SSII2019企画: 点群深層学習の研究動向SSII2019企画: 点群深層学習の研究動向
SSII2019企画: 点群深層学習の研究動向
 
動的計画法を極める!
動的計画法を極める!動的計画法を極める!
動的計画法を極める!
 
プログラムを高速化する話
プログラムを高速化する話プログラムを高速化する話
プログラムを高速化する話
 
Chokudai search
Chokudai searchChokudai search
Chokudai search
 
図と実装で理解する『木構造入門』
図と実装で理解する『木構造入門』図と実装で理解する『木構造入門』
図と実装で理解する『木構造入門』
 
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
 
【DL輪読会】AUTOGT: AUTOMATED GRAPH TRANSFORMER ARCHITECTURE SEARCH
【DL輪読会】AUTOGT: AUTOMATED GRAPH TRANSFORMER ARCHITECTURE SEARCH【DL輪読会】AUTOGT: AUTOMATED GRAPH TRANSFORMER ARCHITECTURE SEARCH
【DL輪読会】AUTOGT: AUTOMATED GRAPH TRANSFORMER ARCHITECTURE SEARCH
 
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
 
強化学習その2
強化学習その2強化学習その2
強化学習その2
 
Binary indexed tree
Binary indexed treeBinary indexed tree
Binary indexed tree
 
最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く
 

Andere mochten auch

Cc dx lib72-p
Cc dx lib72-pCc dx lib72-p
Cc dx lib72-pCHY72
 
20160913 gpu deep-learningcomminity-morpho_20160912-公開用rev2
20160913 gpu deep-learningcomminity-morpho_20160912-公開用rev220160913 gpu deep-learningcomminity-morpho_20160912-公開用rev2
20160913 gpu deep-learningcomminity-morpho_20160912-公開用rev2Tomokazu Kanazawa
 
Summer camp2015
Summer camp2015Summer camp2015
Summer camp2015abc3141
 
AtCoder Beginner Contest 013 解説
AtCoder Beginner Contest 013 解説AtCoder Beginner Contest 013 解説
AtCoder Beginner Contest 013 解説AtCoder Inc.
 
Union find(素集合データ構造)
Union find(素集合データ構造)Union find(素集合データ構造)
Union find(素集合データ構造)AtCoder Inc.
 
Dropout Distillation
Dropout DistillationDropout Distillation
Dropout DistillationShotaro Sano
 
Learning Convolutional Neural Networks for Graphs
Learning Convolutional Neural Networks for GraphsLearning Convolutional Neural Networks for Graphs
Learning Convolutional Neural Networks for GraphsTakuya Akiba
 
論文紹介 Pixel Recurrent Neural Networks
論文紹介 Pixel Recurrent Neural Networks論文紹介 Pixel Recurrent Neural Networks
論文紹介 Pixel Recurrent Neural NetworksSeiya Tokui
 
Hotel z pomysłem - Cinema Residence
Hotel z pomysłem - Cinema Residence Hotel z pomysłem - Cinema Residence
Hotel z pomysłem - Cinema Residence Cinema Hotel
 
жуманов ерик+биос+население
жуманов ерик+биос+населениежуманов ерик+биос+население
жуманов ерик+биос+населениеЕрик Жуманов
 
VCPL Presentation
VCPL PresentationVCPL Presentation
VCPL Presentationsuraj wasu
 

Andere mochten auch (15)

2016 sep13 gdlc01 pfn
2016 sep13 gdlc01 pfn2016 sep13 gdlc01 pfn
2016 sep13 gdlc01 pfn
 
Cc dx lib72-p
Cc dx lib72-pCc dx lib72-p
Cc dx lib72-p
 
20160913 gpu deep-learningcomminity-morpho_20160912-公開用rev2
20160913 gpu deep-learningcomminity-morpho_20160912-公開用rev220160913 gpu deep-learningcomminity-morpho_20160912-公開用rev2
20160913 gpu deep-learningcomminity-morpho_20160912-公開用rev2
 
Summer camp2015
Summer camp2015Summer camp2015
Summer camp2015
 
abc031
abc031abc031
abc031
 
AtCoder Beginner Contest 013 解説
AtCoder Beginner Contest 013 解説AtCoder Beginner Contest 013 解説
AtCoder Beginner Contest 013 解説
 
Union find(素集合データ構造)
Union find(素集合データ構造)Union find(素集合データ構造)
Union find(素集合データ構造)
 
Dropout Distillation
Dropout DistillationDropout Distillation
Dropout Distillation
 
Learning Convolutional Neural Networks for Graphs
Learning Convolutional Neural Networks for GraphsLearning Convolutional Neural Networks for Graphs
Learning Convolutional Neural Networks for Graphs
 
論文紹介 Pixel Recurrent Neural Networks
論文紹介 Pixel Recurrent Neural Networks論文紹介 Pixel Recurrent Neural Networks
論文紹介 Pixel Recurrent Neural Networks
 
PFN
PFNPFN
PFN
 
Hotel z pomysłem - Cinema Residence
Hotel z pomysłem - Cinema Residence Hotel z pomysłem - Cinema Residence
Hotel z pomysłem - Cinema Residence
 
Itani.docx cv
Itani.docx cvItani.docx cv
Itani.docx cv
 
жуманов ерик+биос+население
жуманов ерик+биос+населениежуманов ерик+биос+население
жуманов ерик+биос+население
 
VCPL Presentation
VCPL PresentationVCPL Presentation
VCPL Presentation
 

3次元の凸包を求める