ドロネー三角形分割

16,668 views

Published on

ドロネー三角形分割のゆるふわな説明

0 Comments
15 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
16,668
On SlideShare
0
From Embeds
0
Number of Embeds
1,045
Actions
Shares
0
Downloads
38
Comments
0
Likes
15
Embeds 0
No embeds

No notes for slide

ドロネー三角形分割

  1. 1. ドロネー三角形分割 shiatsumat 松下祐介
  2. 2. 自己紹介 • Haskell共和国の住人 • 競技プログラミングエンジョイ勢
  3. 3. 本の紹介 • 『コンピュータ・ジオメトリ』 • 計算機科学の一分野の計算幾何学の本 • 著者4人のうち3人がMark
  4. 4. 今日の予定 • ドロネー三角形分割についてゆるふわに 話します
  5. 5. 三角形分割 • 平面上の点の集合Pについて、いくつかの 点の対も辺で結ばれていて、どの辺も交 差していなくて、どの辺で結ばれていな い2点を辺で結んでも、辺が交差してしま うような、平面の分割(辺の取り方)を 三角形分割という。 • これが三角形分割です→実演
  6. 6. 三角形分割 • どの面も三角形である。 (∵多角形は三角形に分割できる) • 外側はPの凸包である。 • Pがn点を含み、Pの凸包の境界上にk点が あるとき、Pのどの三角形分割も、2n-2-k 個の三角形を含み、3n-3-k個の辺を含む。
  7. 7. ドロネー三角形分割 • Pの三角形分割Tにm個の三角形が含まれ ているとし、Tのそれぞれの三角形の内角 3m個を昇順にソートした列をTの角度ベ クトルという。 • Pの三角形分割のうち、角度ベクトルが辞 書順で最大であるものをPのドロネー三角 形分割という。 • これがドロネー三角形分割です→実演
  8. 8. ドロネー三角形分割 • TをPの三角形分割とする。TがPのドロ ネー三角形分割であるための必要十分条 件は、Tの任意の三角形の外接円がその内 部にPの点を含まないことである。 不正な辺
  9. 9. アルゴリズムの概要 • 乱択逐次構成法 • 点をシャッフルし、1つずつ点を増やして いってそのたびにドロネー三角形分割を する • 割と簡単
  10. 10. アルゴリズム • Pをn点の集合とする • 三角形分割をするために、最初にPの点を 全て含む大きい三角形を考える (すごく左上にある点とすごく右上にあ る点を追加し、Pの一番下にある点と一緒 に三角形を作る) • 三角形分割Tを大きい三角形として初期化 する。
  11. 11. アルゴリズム • Pの一番下にある点以外の点をシャッフル し、列P’を求める。 • P’の点Xを順に追加していく。 • Xを含む三角形分割Tの三角形を△ABCと する。Tにおいて△ABCを△XBC・ △XCA・△XABに分割する。 • ここで不正な辺が出来ていないか確かめ る。
  12. 12. アルゴリズム • 不正な辺になる可能性があるのはBC, CA, ABの3辺。 • ここではBCが不正であるかを確かめてい く。他も同様にできる。
  13. 13. アルゴリズム • △XBCと辺BCで接する三角形を△YCBと する。 • Yが△XBCの外接円の内部にあれば、BC は不正。 X C B Y 不正な辺
  14. 14. アルゴリズム • 不正な辺があった際は、図のように フリップする。 X C B Y X C B Y
  15. 15. アルゴリズム • フリップしたらまた不正な辺ができるか もしれない。 • YBとYCが不正であるかどうか確かめる。 以下同様に続いていく。 X C B Y
  16. 16. アルゴリズム • 最終的に全部の点を追加したら、三角形 分割Tから、最初に追加したすごく左上の 点とすごく右上の点に接続している辺を すべて取り除く。 • これでドロネー三角形分割は完了。 • うれしい。
  17. 17. アルゴリズム • 「Xを含む三角形分割Tの三角形を△ABC とする。」ここの計算量はどうだろう か? • ナイーブに個々の三角形について点が含 まれているか確かめることもできるが、 O(n)となる • 三角形分割と同時に木構造を作って再帰 的に求めていくことができる
  18. 18. アルゴリズム • この乱択逐次構成法の計算量の期待値は O(n log n) • うれしい。
  19. 19. ドロネー三角形分割の実用例 • 各地点の高さが分かっているとき、地形の 状況をドロネー三角形分割に基づき表す
  20. 20. ボロノイ図 • 点の集合Pがあり、平面上のすべての座標 について、一番近いPの要素の点を表す図。
  21. 21. ボロノイ図 • 藤原さんが夏季セミナー中に実装しました
  22. 22. ボロノイ図⇔ドロネー三角形分割 • ボロノイ図で領域が接している⇔ ドロネー三角形分割で辺で結ばれている
  23. 23. ボロノイ図の実用例 • 主要都市を元に地域を分割する
  24. 24. ドロネー三角形分割→EMST • ユークリッド最小木(EMST): 平面上の全 ての点を連結する木の中で辺の長さの総 和が最小なもの • ドロネー三角形分割をグラフとして見る。 点の数をnとするとドロネー三角形分割の 辺の数は3n-3-kなので、O(n log n)で最 小全域木が求まる。ドロネー三角形分割 と合わせてもO(n log n)となる。
  25. 25. 行商人問題 (TSP) • 言わずと知れたNP困難問題 • n点の間にいくつか距離のある辺があって、 n点全てを1回だけ通る経路のうち総移動 距離が最小のものを求めよ、という問題 • ここではn点は平面上にあり、どの2点間 にも辺があり幾何的な距離を持っている ものとする
  26. 26. EMST→2近似TSP • EMSTからTSPの2近似アルゴリズム(総 移動距離が最小の場合の2倍以下)を作る ことができる • まずEMSTをなめる閉路をつくる
  27. 27. EMST→2近似TSP • 閉路をショートカットしていく。
  28. 28. EMST→2近似TSP • 2回通っている点についてO(1)でショート カットできるので、O(n)で巡回路になる。 EMSTまでと合わせてO(n log n)となる。
  29. 29. EMST→2近似TSP • 行商人問題の最適解での総移動距離をtsp、 最小全域木の辺の長さの合計をemst、 ここで求めた巡回路の総移動距離をdとす る。 tsp≧tspから1本辺を取ったもの≧emst d≦2emst ∴d≦2tsp • 以上よりこれは2近似アルゴリズムである。
  30. 30. おまけ • 暇だったので3Dの凸包を作ってみました →実演 • このアルゴリズムも乱択逐次構成法 • うれしい
  31. 31. まとめ • ドロネー三角形分割はうれしい!
  32. 32. ありがとうございました

×