Microsoft PowerPoint - ppt-7.pptx

Similar documents
計算幾何学入門 Introduction to Computational Geometry

20~22.prt

" 01 JJM 予選 4 番 # 四角形 の辺 上に点 があり, 直線 と は平行である.=,=, =5,=,= のとき, を求めよ. ただし,XY で線分 XY の長さを表すものとする. 辺 と辺 の延長線の交点を, 辺 と辺 の延長線の交点を G とする. 5 四角形 は直線 に関して線対称な

2015-2017年度 2次数学セレクション(複素数)解答解説

S02 1 図において = =とする このとき = であることを証明せよ と において = 1 = 2 辺 は共通 より 3 辺 (3 組の辺 ) がそれぞれ等しい よって 合同な三角形の対応する角の大きさは等しい ゆえに = である

2017年度 金沢大・理系数学

Microsoft PowerPoint - ppt-1.pptx

Microsoft PowerPoint - 13approx.pptx

2015年度 岡山大・理系数学

< D8C6082CC90AB8EBF816989A B A>

Microsoft PowerPoint - DA2_2019.pptx

p tn tn したがって, 点 の 座標は p p tn tn tn また, 直線 l と直線 p の交点 の 座標は p p tn p tn よって, 点 の座標 (, ) は p p, tn tn と表され p 4p p 4p 4p tn tn tn より, 点 は放物線 4 p 上を動くこと

Microsoft PowerPoint - ad11-09.pptx

STEP 数学 Ⅰ を解いてみた から直線 に下ろした垂線の足を H とすると, H in( 80 ) in より, S H in H 同様にして, S in, S in も成り立つ よって, S in 三角形の面積 ヘロンの公式 in in 辺の長

Microsoft PowerPoint - DA2_2017.pptx

. 角の二等分線と調和平均 平面上に点 を端点とする線分 と を重ならないようにとる, とし とする の二等分線が線分 と交わる点を とし 点 から に垂直に引いた直線が線分 と交わる点 とする 線分 の長さを求めてみよう 点 から に垂直な直線と および との交点をそれぞれ, Dとする つの直角三

Microsoft PowerPoint - DA2_2018.pptx

2017年度 千葉大・理系数学

1 対 1 対応の演習例題を解いてみた 微分法とその応用 例題 1 極限 微分係数の定義 (2) 関数 f ( x) は任意の実数 x について微分可能なのは明らか f ( 1, f ( 1) ) と ( 1 + h, f ( 1 + h)

2011年度 大阪大・理系数学

COMPUTING THE LARGEST EMPTY RECTANGLE

2011年度 筑波大・理系数学

( 表紙 )

重要例題113

二等辺三角形の性質 (2) 次の図の の大きさを求めなさい () = P=Q P=R Q 68 R P (2) (3) 五角形 は正五角形 = F 50 F (4) = = (5) === = 80 2 二等辺三角形の頂角の外角を 底角を y で表すとき y を の式で表しなさい y 2-5-2

Microsoft Word - NumericalComputation.docx

2014年度 センター試験・数学ⅡB

2016年度 京都大・文系数学

PG13-6S

Microsoft PowerPoint - 05.pptx

< BD96CA E B816989A B A>

2017年度 長崎大・医系数学

INTRODUCTION TO ALGORITHMS

Math-quarium 練習問題 + 図形の性質 線分 は の二等分線であるから :=:=:=: よって = = = 線分 は の外角の二等分線であるから :=:=:=: よって :=: したがって == 以上から =+=+= 右の図において, 点 は の外心である α,βを求めよ α β 70

<8D828D5A838A817C A77425F91E6318FCD2E6D6364>

2011年度 東京大・文系数学

1 1. はじめに ポンスレの閉形定理 Jacobi の証明 June 5, 2013 Akio Arimoto ヤコビは [2] においてポンスレの閉形定理に初等幾何を用いた証明を与え ている 大小 2つの円があり 一方が他方を完全に含んでいるとする 大小 2 円の半径をそれぞれ Rr, とする

ポンスレの定理

プログラム言語及び演習Ⅲ

2017年度 京都大・文系数学

PowerPoint Presentation

2011年度 東京工大・数学

vecrot

<4D F736F F D208C51985F82CD82B682DF82CC88EA95E A>

PowerPoint Presentation

学習指導要領

スライド 1

2015年度 金沢大・理系数学

2014年度 名古屋大・理系数学

A Constructive Approach to Gene Expression Dynamics

2015年度 京都大・理系数学

Chap2.key

頻出問題の解法 4. 絶対値を含む関数 4.1 絶対値を含む関数 絶対値を含む関数の扱い方関数 X = { X ( X 0 のとき ) X ( X <0 のとき ) であるから, 絶対値の 中身 の符号の変わり目で変数の範囲を場合分けし, 絶対値記号をはずす 例 y= x 2 2 x = x ( x

2014年度 筑波大・理系数学

2015年度 信州大・医系数学

2018年度 筑波大・理系数学

モデリングとは

Math-Aquarium 例題 図形と計量 図形と計量 1 直角三角形と三角比 P 木の先端を P, 根元を Q とする A 地点の目の位置 A' から 木の先端への仰角が 30,A から 7m 離れた AQB=90 と なる B 地点の目の位置 B' から木の先端への仰角が 45 であ るとき,

Microsoft Word - 微分入門.doc

平成 30 年度 前期選抜学力検査問題 数学 ( 2 時間目 45 分 ) 受検番号氏名 注 意 1 問題は, 表と裏にあります 2 答えは, すべて解答欄に記入しなさい 1 次の (1)~(7) の問いに答えなさい (1) -3 (-6+4) を計算しなさい 表合計 2 次の (1)~(6) の問

学習指導要領

PowerPoint プレゼンテーション

進捗状況の確認 1. gj も gjp も動いた 2. gj は動いた 3. gj も動かない 2

Microsoft PowerPoint - 05DecisionTree-print.ppt

学習指導要領

2014年度 九州大・理系数学

2014年度 千葉大・医系数学

アルゴリズムとデータ構造

Microsoft PowerPoint - 9.pptx

Microsoft PowerPoint - 9.pptx

平成 25 年度京都数学オリンピック道場 ( 第 1 回 ) H 正三角形 ABC の外接円の,A を含まない弧 BC 上に点 P をとる. このとき, AP = BP + CP となることを示せ. 解説円周角の定理より, 4APC = 4ABC = 60, であるから, 図のよ

Microsoft PowerPoint - mp11-02.pptx

二次関数 1 二次関数とは ともなって変化する 2 つの数 ( 変数 ) x, y があります x y つの変数 x, y が, 表のように変化するとき y は x の二次関数 といいます また,2 つの変数を式に表すと, 2 y x となりま

< F2D30365F8EF68BC68CA48B E6A7464>

1999年度 センター試験・数学ⅡB

2018年度 岡山大・理系数学

<4D F736F F D F90948A F835A E815B8E8E8CB189F090E05F8E6C8D5A>

2014年度 東京大・文系数学

Taro-再帰関数Ⅲ(公開版).jtd

Microsoft PowerPoint - 10.pptx

<4D F736F F D F90948A F835A E815B8E8E8CB189F090E05F81798D5A97B98CE38F4390B A2E646F63>

PowerPoint プレゼンテーション

「産業上利用することができる発明」の審査の運用指針(案)

公式集 数学 Ⅱ B 頭に入っていますか? 8 和積の公式 A + B A B si A + si B si os A + B A B si A si B os si A + B A B os A + os B os os A + B A B os A os B si si 9 三角関数の合成 si

<4D F736F F D EBF97CD8A B7982D189898F4B A95748E9197BF4E6F31312E646F63>

11yama

2014年度 九州大・文系数学

学習指導要領

PowerPoint プレゼンテーション

Microsoft PowerPoint - 06graph3.ppt [互換モード]

2018試行 共通テスト 数学ⅠA 解答例

2018年度 東京大・理系数学

Microsoft PowerPoint - algo ppt [互換モード]

2016年度 九州大・理系数学

相加平均 相乗平均 調和平均が表す比 台形 の上底 下底 の長さをそれぞれ, とするとき 各平均により 台形の高さ はどのように比に分けられるだろうか 相乗平均は 相似な つの台形になるから台形の高さ を : の 比に分ける また 相加平均は は : の比に分けます 調和平均は 対角線 と の交点を

Microsoft PowerPoint - mp13-07.pptx

離散数学

Microsoft PowerPoint - ca ppt [互換モード]

学習指導要領

Microsoft PowerPoint - ce07-09b.ppt

Transcription:

テーマ 7: 最小包含円 点集合を包含する半径最小の円

最小包含円問題 問題 : 平面上に n 点の集合が与えられたとき, これらの点をすべて内部に含む半径最小の円を効率よく求める方法を示せ.

どの点にも接触しない包含円 すべての点を内部に含む包含円を求める 十分に大きな包含円から始め, 点にぶつかるまで徐々に半径を小さくする

1 点にしか接触しない包含円 現在の中心から周上の点に向けて中心を移動する

2 点を周上に含む包含円の場合 2 点の垂直 2 等分線上で中心を移動 これは最小包含円か?

特別な場合 周上の 2 点を直径の両端点とする円が包含円である場合 この場合は, この包含円が最小包含円である

最小包含円を求める素朴な方法 Step0: 点集合 P を与える Step1: 与えられた点をすべて含む十分大きな包含円 D1 を求める. Step2: 円 D1 の中心は変えずに,P の点 u が周上に来るまで, 半径だけを徐々に小さくする. 得られた円を D2 とする. Step3: P の別の点 v が周上に来るまで, 円 D2 の中心を点 u に向けて徐々に移動する. ただし, このとき点 u が周上に保つこと. 得られた円を D3 とする. Step4: 2 点 u, v を直径の両端点とする円が他のすべての点を含むなら, この円が答. そうでない場合は, P の別の点 w が円周上に来るまで, 円の中心を 2 点 u, v の垂直 2 等分線上で直線 uv に向けて徐々に移動. この方法で最小包含円が求まっているか? 具体的にプログラムとして実現せよ. 計算時間を解析せよ.

この方法で最小包含円が求まっているか? ( 答 ) 求まらないことがある. u u,v,wを通る円よりp,v,wで決まる円の w 方が小さい v p 問題は, このような状況が何回生じるか? Combinatorial question ( 組み合わせ問題 )

包含円は最大何通りあるか? 円は 3 点で決まるから, 包含円は O(n 3 ) 通り 本当にそれだけあるか? もし, 本当に O(n 3 ) 通りの包含円があるなら, 3 重ループのアルゴリズムで最小包含円を求めることができる.

素朴なアルゴリズム Algorithm Exhaustive-search P = {p1, p2,..., pn} D* = 半径無限大の円 for i=1 to n-2 do for j=i+1 to n-1 do for k=j+1 to n do pi, pj, pk を通る円を求め,D とする if radius(d) < radius(d*) then check = false for h=1 to n s.t. h!= i,j,k do if 点 ph は pi, pj, pk を通る円の外にある then check = true; if check = false then D* = D ( 最適解の更新 ) return D*

例題 : どの 3 点をとっても, 包含円に近い円が定義される.

包含円は本当に O(n 3 ) 通りあるか? 2 点 u, v を固定したとき, この 2 点を通る円の中で包含円となりうるものは何通りあるか? u, v 以外の点を直線 uv に関して 2 分割赤側と青側 u 各点について, その点と u, v を通る円を求めたとき, 青側の点は, 青側に中心をもつ半径最大の円の内部にある v 赤側 青側

u, v 以外の各点 pi に対し, u, v, pi を通る円の中心 Ci を求める. B={pi pi も Ci も青側にある }, R = {pj pj も Cj も赤側にある } (1) B が空でないとき, B の要素 pi は R の点に対応する円には含まれない B の要素の中で半径最大の円に対応する点は最も外. よって, 半径最大の円だけが包含円の候補 (2)R が空でない場合についても同じ (3)B も R も空のとき, u, v を直径の両端点とする円がすべての点を内に含む u v 青側 uv を直径とする円 赤側

観察 : 2 点 u, v を固定したとき, u, v と別の 1 点を通る円の中で包含円となりうるものは高々 1 個しかない. 証明 : B={pi piもciも青側にある }, R = {pj pjもcjも赤側にある } uvを直径とする円の内部にある点の集合をmとする. Mの点は,Bの任意の点 piに対応する円の内部に含まれる Bの点は,MまたはRのどの点に対応する円の内部にもない. (Rの点についても同じ) (1)B, Rが共に空でないとき, u, vを通る包含円は存在しない (2)Bは空でないが,Rは空のとき, B B の点に対応する半径最大の円だけが包含円の候補. この円が M の点もすべて含めば, 確かに包含円 (3)R は空でないが,B は空のときも同じ (4)B, R が共に空のとき, uv を直径とする円だけが,u, v を通る包含円したがって,u, v を通る包含円は高々 1 個だけ. M R

結論 : 各点対に対して高々 1 つの包含円しか定義されないから, 全部で高々 O(n 2 ) 個の包含円しか存在しない. この観察より,O(n 3 ) 時間の方法が得られる Algorithm Naive-2 P = {p1, p2,..., pn} D* = 半径無限大の円 for i=1 to n-1 do for j=i+1 to n do pipjを直径とする円 Cijが包含円なら, その円をD* として終了. D = 半径 0の円 for k=1 to n do s.t. pkはcijの外部 pi, pj, pkを通る円を求め,d とする if radius(d) < radius(d ) then D=D if 円 Dが包含円 AND radius(d) < radius(d*) then D* = D return D*

では,O(n 2 ) 個の包含円が存在するような例はあるか? この問に答えるために, 別の観察が必要 Q1: y 座標最大の点を最小包含円は通るか? 反例

Q2: 最小包含円は最も遠く離れた 2 点を通るか? u v

Q3: 最小包含円が点 p を通るとき,p から最も遠く離れた点 q も通るか? q p 反例

Q1: y 座標最大の点を最小包含円は通るか? Q2: 最小包含円は最も遠く離れた 2 点を通るか? Q3: 最小包含円が点 p を通るとき,p から最も遠く離れた点 q も通るか? 何が悪いのか?

Q1: y 座標最大の点を最小包含円は通るか? どの方向でも最大 ( 最小 ) でない点は最小包含円に寄与しない. 赤の点は矢印の方向に最大 このような点集合を何と言うか?

3 点で決まる三角形の内部にある点は最小包含円に寄与しない. u v p w 点 p を通る円は,3 点 u, v, w をすべて同時に内部に含むことはない. よって, 点 p を通る包含円は存在しない. 点 p は, 点集合 P の極大点である点集合 P からどのように 3 点を選んでも, その 3 点で決まる三角形の真の内部に点 p が含まれることはない. 極大点だけをつなぐと, 凸包ができる. 凸包は O(n log n) 時間で構成可能

y 座標最大の点は必ず極大点である. 証明 : y 座標最大の点を u とする. u が極大点でないとすると, 三角形 pqr の内部に u を含むように 3 点 p, q, r をとることができる. 点 u は三角形 pqr の内部にあるから,p,q,r のどれかは必ず u より y 座標が大きくなければならないが, これは u が y 座標最大の点であるという仮定に反する. 点を偏角順にソートして, 各角度で極大な点を順に求めれば凸包が構成できる. 偏角順のソート O(n log n) 時間極大でない点の除去 O(n) 時間 凸包上にない点は包含円に寄与しないから, 取り除いてよい. では, 凸包上のどのような点対に対して包含円が構成されるか?

凸包上のどのような点対に対して包含円が構成されるか? p q c r 3 点 p, q, r で決まる円の中心を c とするとき, p, q, r は c から最も遠い点である. このような 3 点から等距離にあって, しかもそれら 3 点がその点からの最遠点になっているような点は何通りあるか? これが包含円の個数と同じ.

最遠点ボロノイ図 P の点 p V(p): 点 p が P の中で最も遠くなる領域 V(6) V(5) 2 3 V(4) 1 4 V(3) 6 5 V(2) 点 3 が最も遠くなる領域 どの点 p についてもボロノイ領域 V(p) は連結で開領域. ボロノイ領域の並び方は凸包上での点の並び方と同じ. ボロノイ図を平面グラフと見れば, 面の数と頂点数のオーダーは同じ. V(1) したがって,3 領域が交わる頂点の個数も点数のオーダー, すなわち O(n) である. つまり, 包含円の個数も O(n) である.

最遠点ボロノイ図に基づく方法 結局, 包含円の中心の候補として最遠点ボロノイ図の頂点だけに限定可能. 包含円かどうかを判定する必要はない. 半径 ( 最遠点までの距離 ) が最小であるものを求めればよい. ボロノイ図の頂点は O(n) 個しかないから, 計算時間は最遠点ボロノイ図を構成する時間 O(n log n) + 各頂点について最遠点までの距離を求める時間 O(n) 全体の計算時間は O(n log n) 時間

結局, 包含円は高々 O(n) 個しか存在しない. Algorithm Naive-2 ではすべての点対に対して包含円を考えているが, 包含円は全部で O(n) 個しかないから, これは無駄. 最初に考えた素朴な方法が効果的 最初, 十分大きな包含円から始めて, 徐々に半径を小さくして, 3 点を通る包含円を求める. その後, 包含円の半径をさらに改善する. この改善は O(n) 回で終り, 毎回 O(n) 時間しかかからないから, 全体では O(n 2 ) 時間.

最初に考えた素朴な方法が効果的 最初, 十分大きな包含円から始めて, 徐々に半径を小さくして, 3 点を通る包含円を求める. その後, 包含円の半径をさらに改善する. この改善は O(n) 回で終り, 毎回 O(n) 時間しかかからないから, 全体では O(n 2 ) 時間. この扇形の領域に点があれば, 包含円を小さくできる u この扇形領域は空 扇形領域に点がなければ赤円が最小包含円 v 赤い円は uv を直径とする円

上記の方法では, 毎回包含円の半径が小さくなり, かつ包含円が全体でも O(n) 個しかないから, O(n) 回の繰り返しの後, 終了. 観察 : 包含円を決める 3 点が鋭角三角形を構成するなら, 対応する包含円は最小である. 証明 : この三角形の外接円はこの 3 点に対する最小包含円である. よって, もしこれがすべての点を内に含む包含円なら, それ以上半径を小さくすることはできない.

別の観察 : Pi = {p1, p2,..., pi}( 最初の i 個の点 ) Di : Pi に対する最小包含円とすると,pi が Di-1 に含まれているとき, Di = Di-1 そうでないとき, pi は Di の境界上にある アルゴリズム MiniDisc(P) D2 = {p1, p2} に対する最小包含円 for i=3 to n{ if pi が Di-1 に含まれる then Di = Di-1; else Di = MiniDiscWithPoint(Pi-1, pi); } return Dn; 点 pi を円周上にもち, 点集合 Pi-1 を包含する半径最小の円 Di pi

MiniDiscWithPoint(P, q) D1 = {q, p1} に対する最小包含円 for j=2 to P if pj が Dj-1 の内部に含まれる then Dj = Dj-1 else Dj = MiniDiscWith2Points(Pj-1, pj, q); return Dn; q pj Dj-1 MiniDiscWith2Points(P, q1, q2) D0 = {q1, q2} に対する最小包含円 for k=2 to P if pk が Dk-1 の内部に含まれる then Dk = Dk-1; else Dk = disc(q1, q2, pk); return Dn; q2 q1 pk Dk-1

1 6 7 8 5 2 3 4 D2=disc(1,2) D3=MDP(3,{1,2}) D1 =disc(3,1) D2 =disc(3,1) + 2 D3=disc(3,1) D4=MDP(4,{1,2,3}) D1 =disc(4,1) D2 =disc(4,1) + 2 D3 =disc(4,1) + 2,3 D4=disc(4,1) D5=disc(4,1) + 5 D6=MDP(6,{1,2,3,4,5})

1 6 7 8 5 2 3 4 D1 =disc(6,1) D2 =MDP2(6,2,{1}) D0 =disc(6,2) D1 =disc(6,2) + 1 D2 =disc(6,2) D3 =MDP2(6,3,{1,2}) D0 =disc(6,3) D1 =disc(6,3)+1 D2 =disc(6,3)+1,2 D3 =disc(6,3) D4 =MDP2(6,4,{1,2,3}) D0 =disc(6,4) D1 =disc(6,4) + 1 D2 =disc(6,4) + 1,2 D3 =disc(6,4) + 1,2,3 D4 =disc(6,4)

最悪の場合の時間解析 アルゴリズム MiniDisc(P) 時間 T(n) D2 = {p1, p2} に対する最小包含円 for i=3 to n{ if pi が Di-1 に含まれる then Di = Di-1; else Di = MiniDiscWithPoint(Pi-1, pi); } return Dn; MiniDiscWithPoint(P, q) 時間 T 1 (n) D1 = {q, p1} に対する最小包含円 for j=2 to P if pj が Dj-1 の内部に含まれる then Dj = Dj-1 else Dj = MiniDiscWith2Points(Pj-1, pj, q); return Dn;

最悪の場合の時間解析 MiniDiscWith2Points(P, q1, q2) 時間 T 2 (n) D0 = {q1, q2} に対する最小包含円 for k=2 to P if pk が Dk-1 の内部に含まれる then Dk = Dk-1; else Dk = disc(q1, q2, pk); return Dn; n T(n) = 1 + i 3 max(1, T 1 (i)) 毎回更新されるのが最悪 i T 1 (i) = 1 + max(1, T 2 (j)) 毎回更新されるのが最悪 j 2 j T 2 (j) = 1 + max(1,1) = j k 2 T 2 (j)=j, T 1 (i) = 1+i(i+1)/2-1=i(i+1)/2 T(n)=O(n 3 )

最悪の場合の時間解析 MiniDisc(P) の計算時間 :O(n 3 ) 毎回 Di が更新されるのが最悪 (MiniDiscWithPoint(P, q) を呼び出す ) 本当に O(n 3 ) 時間かかるような例題は作れるか? ちょっと, 鼻薬を嗅がせてみよう! 毎回, 点につけた番号をランダムに入れ替えてみよう

アルゴリズム MiniDisc(P) P の点をランダムに並び替える D2 = {p1, p2} に対する最小包含円 for i=3 to n{ if pi が Di-1 に含まれる then Di = Di-1; else Di = MiniDiscWithPoint(Pi-1, pi); } return Dn; MiniDiscWithPoint(P, q) P の点をランダムに並び替える D1 = {q, p1} に対する最小包含円 for j=2 to P if pj が Dj-1 の内部に含まれる then Dj = Dj-1 else Dj = MiniDiscWith2Points(Pj-1, pj, q); return Dn;

MiniDiscWith2Points(P, q1, q2) P の点をランダムに並び替える D0 = {q1, q2} に対する最小包含円 for k=2 to P if pk が Dk-1 の内部に含まれる then Dk = Dk-1; else Dk = disc(q1, q2, pk); return Dn; アルゴリズム MiniDisc(P) P の点をランダムに並び替える D2 = {p1, p2} に対する最小包含円 for i=3 to n{ if pi が Di-1 に含まれる then Di = Di-1; else Di = MiniDiscWithPoint(Pi-1, pi); } return Dn;

MiniDisc の実行時間の解析一度も else 部が実行されなければ,O(n) では,MiniDiscWithPoint() が呼び出される確率は? Backward analysis を用いる : 部分集合 {p1,..., pi} を固定してみよう. {p1,..., pi} を包含し q を通る円を Di とする. {p1,..., pi} からどの 1 点を除いたとき, 円が変化するか? 円 Di を決定する 3 点の内の 1 つを除いたときその確率は 2/i (q 以外の 2 点の内の 1 つ ). よって, 実行時間の期待値は, n 2 O( n) O( i) O( n) i 2 i つまり, 実行時間の期待値はO(n) である!

もう少し詳細な解析 最悪時の計算時間解析 n T(n) = 1 + max(1, T 1 (i)) i 3 i T 1 (i) = 1 + max(1, T 2 (j)) j 2 j T 2 (j) = 1 + max(1,1) = j k 2 T 2 (j)=j, T 1 (i) = 1+i(i+1)/2-1=i(i+1)/2 T(n)=O(n 3 ) 確率を考慮した計算時間解析 n T(n) = 1 + 1*(1-2/i) + T 1 (i)*2/i i 3 i T 1 (i) = 1 + 1*(1-2/j) + T 2 (j)*2/j j 2 T 2 (j) = j T 1 (i) = i - 2 log i + 2i = 3i - 2 log i T(n) < n - 2 log n + 3n - 2 log 2 n = O(n) したがって, T(n) = O(n)