計算幾何学 computational geometry 第一章 基本概念 basic concepts

55
計計計計計 Computational Geometry 計 計計計計 Basic concepts

Post on 22-Dec-2015

277 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

計算幾何学Computational Geometry

第一章 基本概念Basic concepts

Page 2: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

教員と教材 教員 陳 文西 ( チン ブンシ )

[email protected]

TA    丹野 慶太(タンノ ケイタ) [email protected]

主な参考書1. 計算幾何学入門ー幾何アルゴリズムとその応用

    譚学厚、平田富夫、森北出版㈱、 2001

2. Computational Geometry ー Algorithms and Applications

M.de Berg, M.van Kreveld M.Overmars O.Schwarzkopf Springer, 2nd ed. 2000

Page 3: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

授業方針 講義  10/13 ~1 /26 、毎週金曜 -4 ( 14 回)、 M6 資料  http://i-health.u-aizu.ac.jp/CompuGeo/index.html 評価

1. プログラム実装 独力、 3 題 ( 最多 1 題 / 章 ) 、 30 % 提供されたテンプレートをベースにして、プログラムを作成 C/Java (ソースファイルを含む)、ウェブベース形式→ベスト 各章の講義終了後2週間以内に提出

2. プロジェクト課題 チームワーク( 2 ~ 3 人)、 1題、 30 %

一人 4 ページ以上研究レポートを作成 12 ~ 1 月( 2 ヶ月間)

3. 期末試験 基本概念、 40 %

Page 4: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

計算幾何学とは 幾何学的な問題を取り扱うための効

率的なアルゴリズムとデータ構造の設計と解析

Computational geometry is the branch of computer science that studies algorithms and data structures for solving geometric problems on a computer efficiently

Page 5: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

簡単な実例

Page 6: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

典型的な計算幾何学問題

Page 7: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

応用分野 地理情報システム( GIS ) コンピュータグラフィックス ロボティックス CAD/CAM

Molecular Modeling

Pattern Recognition

Database

Page 8: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

Protein 3D visualization

Page 9: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

復習 基礎幾何学( elementary geometry ) アルゴリズム( algorithm ) データ構造( data structure )

Page 10: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

基礎幾何学 (elementary geometry)

2 点間距離 ベクトル 直線方程式 三角形面積 四角形面積 多角形面積

Euclid:  Picture courtesy of Lexington High School

Page 11: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

2 点間距離 3 次元の 2 点 p0(x0 , y0 , z0) と p1(x1 , y1 , z1)

n 次元の 2 点 p(p1 , p2 ,…, pn) と q(q1 , q2 ,…, qn)

210

210

21010 , zzyyxxppd

n

iii qpd

1

2qpqp,

Page 12: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

ベクトル ベクトル a(a1 , a2 ,…, an) と b(b1 , b2 ,…, bn) 長さ

角度

n

iin aaaa

1

2222

21 ...a

ba

ba cos

Page 13: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

ベクトルの演算 和

内積

外積

n

iii ba

1ieba

n

iiiba

1

cosbaba

n

iii ba

1ieba

kji

kji

kji

bbb

aaa

eee

ebaba sin

Page 14: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

直線方程式

baxxfy

0, cbyaxyxf

Ltt vPP 0

010 PPP t

101 PP tt

Explicit equation

Implicit equation

Parametric equation

Page 15: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

三角形面積

0202

1VVVV1

wvwv 2

1sin

2

1 A

0201

0201

2

1

yyyy

xxxx

010202012

1yyxxyyxx

Page 16: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

四角形面積

0302 MMMM1

32103210 2 MMMMVVVV AA

2222

2 10031021 VVVVVVVV

021313022

1yyxxyyxx

13022

1VVVV

Page 17: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

多角形面積

When P= 原点 =(0,0)

1

01

1

0

n

iii

n

ii AAA VPV

iiiii yxyxA 112

1

1

0112

1 n

iiiii yxyxA

1

0112

1 n

iiiii yyxx

n

iiii yyx

1112

1

Page 18: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

アルゴリズム1. 定義

数学などの問題を解くための計算手順・方法 A finite set of precise instructions for

performing a computation or for solving a problem

2. 評価 領域計算量 (space complexity) 時間計算量 (time complexity)

Page 19: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

実例1. Linear search

数列 a1, a2, …, an

x を探す 最大計算量= O(n)

2. Binary search 数列 a1, a2, …, an , where a1< a2< …< an

x を探す 最大計算量= O(log2n)

Page 20: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

計算量の推計方法1. いくつかのステップに分解して、各ス

テップの計算量を解析する。例えば、まずはループ処理の中身、次は必要な繰り返し回数。

2. for ループを探す。上限値を得られる。特に注意すべきのはループの中にループを影響する処理がある場合。例えば、条件判断文など。

3. ループ、またループ、アルゴリズムというのは大抵幾つかのループから構成されている。ループの解析は一番重要だ。

 

Page 21: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

なにを計る? In sorting( 並び替え ) or searching( 探索 ),

the number of comparisons. In arithmetic( 数値計算 ), the number of

multiplications. Worst case (最大計算量) Average case (平均計算量) Best case (最小計算量)

 

Page 22: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

Big , , Notations Big O : f(n) = O (g(n)) iff there exist positive constants

c and n0 such that f(n) cg(n), for all n n0

For all sufficiently large n, g(n) is an upper bound for f.

: f(n) = (g(n)) iff there exist positive constants c and n0 such that f(n) cg(n), for all n n0

For all sufficiently large n, g(n) is a lower bound for f.

: f(n) = (g(n)) iff there exist positive constants c and n0 such that f(n) cg(n), for all n n0

For all sufficiently large n, g(n) is a tight bound for f .

Page 23: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

Different functions grow with n

O (g(n)) 1 2 4 8 16 32

1 1 1 1 1 1 1

Log n 0 1 2 3 4 5

n 1 2 4 8 16 32

n Log n

0 2 8 24 64 160

n2 1 4 16

64 256 1024

n3 1 8 64

512 4096 32768

2n 2 4 16

256 65536 4294967296

n! 1 2 24

40326

20922789888000

2613X1033

Page 24: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

データ構造 定義

基本的な操作(検索、挿入、削除など)を効率よく実行できるために、操作対象となるデータ集合の組織形態

基本データ構造1. リスト2. スタックとキュー3. ヒープ4. 2 分探索木5. 平衡 2 分探索木

Page 25: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

リスト (list)

ポインタ部データ部挿入

削除

実行時間一定

Page 26: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

スタック (stack) プッシュ push( 挿入 ) とポップ pop( 削

除 ) 後入れ先出し( last-in first-out, LIFO )実行時間一定

Page 27: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

キュー (queue) 二つのポインタ変数 front と rear 先入れ先出し( first-in first-out, FIFO )

実行時間一定

Page 28: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

木 (tree) 根、親、子 兄弟、先祖、子孫、 葉(外点) 節点(内点) 深さ、高さ(枝の数)

Page 29: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

木 (tree)

A

B DC

E F G H I J

K L M

内部節点 Internal Nodes = {A, B, C, D, E, H }

葉 Leaf Nodes = { K, L, F, G, M, I, J }

D の子 Children of D = { H, I, J }

根 Root = { A }

Page 30: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

2分木 (Binary tree) どの節点も 2 個以下の子を持つ

F, H

D J, LG

B E I K M

A C

G

D K

J

B E I L

A C HF M

Page 31: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

ヒープ (heap) 条件

親≦子孫 根

最小値 配列にての配置

親i番  左子 2i 右子 2i +1

操作 挿入、最小値削除

実行時間O(logn)

Page 32: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

ヒープの挿入 ( 任意値⑭を挿入 )

1. 次の位置に穴を用意する

2. If 親≦挿入値? Then 挿入する Else 親を下ろす

3. Repeat from 2

実行時間O(logn)

Page 33: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

ヒープの削除(最小値 = 根⑬を削除)1. 根に穴を空ける2. 穴に小さい子を入れる3. 最低層まで、 Repeat 24. 最後の要素を入れる

実行時間O(logn)

Page 34: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

2 分探索木 (binary search tree)

データ集合の基本操作→検索、挿入、削除 辞書構造=アルファベット順、昇順、降順

2 分探索→ O(logn) 、挿入、削除→ O(n)

問題: 挿入、削除→ O(logn) ?答え: 2分探索木

左子孫≦親≦右子孫

Page 35: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

2 分探索木の構築 ダミー頂点の導入

小さい値→空探索木 右子→根 葉の子→ nil (□)

内点

葉の子

ダミー頂点

Page 36: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

3 つの基本操作 検索

find(x) 挿入

insert(x) 削除

delete(x)

Page 37: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

検索 find(x) 根から始めて検索データ x を内点 v と比較

し、 x<v→ 左部分木 x>v→ 右部分木 x=v→found xv→no found

実行時間O(logn)

Page 38: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

挿入 insert(x) find(x)→ 最後の内点 vまで検索 x>v → 右に挿入 x<v → 左に挿入 x=v →有、無視

実行時間O(logn)

Page 39: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

削除 delete(x) - 1/3 find(x)=v

1. v→ 葉→削除→終了

delete(29)

Page 40: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

削除 delete(x) - 2/3 find(x)=v

2. v→ 一子→削除→ v の子で置き換える

delete(30)

Page 41: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

削除 delete(x) - 3/3 find(x)=v

3. v→ 双子  ① v より大きい最小値 u を検索 ( 右子の

左子孫 )  ② v← u

  ③ 右子→ u

実行時間O(logn)

delete(25)

Page 42: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

平衡 2 分探索木(balanced binary search tree)

一般的 高さ= O(logn) 操作時間= O(logn)

木の左右バランスを保つには→ How to …?

AVL 木 2色木 (red-black tree)

Best case

Worst case

Page 43: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

AVL 木 発明者

二人のロシアコンピュータ学者 Adelson-Velskii と Landis 、 1962

定義 どの内点においても、左部分木と右部分木の高さの差

は1以下を満たす二分探索木 判断指標

バランス度= ( 右ー左 ) 部分木の高さ 操作方法

通常の2分木と同様 バランス度の変化を計算する バランス度の復元操作→単一回転・二重回転

Page 44: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

AVL 木の回転操作

単一回転

一回転

二回転

2重回転

Page 45: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

AVL 木回転操作の実例

二重回転

単一回転

Page 46: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

2色木 (red-black tree) 構築ルール

赤と黒のプロパティを追加 内点=黒、又は赤 根=黒、新挿入の子=赤 赤内点→黒子 根から外点に至るすべてのルートは同じ数の黒

Page 47: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

2色木の回転操作 単一回転

二重回転

Page 48: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

操作実例(⑦の挿入と色の変化)

1 2

34

5

Page 49: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

操作実例( 0 の挿入と色の変化)

1 2

3 4

最初の木 0を挿入

単一回転 色の交換

Page 50: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

データ集合の並び替え 直接挿入法 直接選択法 バブル法 振動法 快速法

Page 51: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

直接挿入法 (Straight Insertion)

データを一つずつ処理し、該当する位置に直接挿入する

Page 52: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

直接選択法 (Straight Selection)

最小の要素を直接選択して、該当する位置に入れる

Page 53: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

バブル法 (Bubble Sort) 一番下から要素を選んで、上の要素と比較

上の要素より大きいところまで浮上

Page 54: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

振動法 (Shaker Sort) 下から比較し、浮上 上から比較し、下降

双方向のバブル法

Page 55: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts

快速法 (Quick Sort)

1. 基準値←(約)真中の要素

2. 前半の要素→後半 if >基準値

3. 後半の要素→前半 if <基準値

4. 2 つのサブセットについて1~3を繰り返す