Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

ドロネー三角形分割

25,710 views

Published on

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

  • Be the first to comment

ドロネー三角形分割

  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. ありがとうございました

×