計算幾何学 Computational...

28
計算幾何学 第一章 会津大学 生体情報学講座 陳文西 1 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts 教員と教材 講義 陳 文西(ちん ぶんし) [email protected] TA 朝妻 健人(あさつま けんと)、m5201125 明田川 主(あけたがわ つかさ)、m5201149 主な参考書 1. Computational GeometryAlgorithms and Applications M. de Berg, M. van Kreveld, M. Overmars, O. Schwarzkopf Springer, 2 nd ed. 2000 2. コンピュータ・ジオメトリー計算幾何学:アルゴリズムと応用 M. ドバーグ、M. ファン・クリベルド、M. オーバマーズ、O. シュワルツ コップ 著、浅野哲夫 訳、近代科学社(上記和訳本) 3. 計算幾何学入門ー幾何アルゴリズムとその応用 譚学厚、平田富夫、森北出版㈱、2001

Transcript of 計算幾何学 Computational...

Page 1: 計算幾何学 Computational Geometryi-health.u-aizu.ac.jp/CompuGeo/2017/handouts/chapter1/...基礎幾何学(elementary geometry) 2点間距離 ベクトル 直線方程式 三角形面積

計算幾何学 第一章

会津大学 生体情報学講座 陳文西 1

計算幾何学Computational Geometry

第一章 基本概念Basic concepts

教員と教材

講義 陳 文西(ちん ぶんし) [email protected]

TA 朝妻 健人(あさつま けんと)、m5201125

明田川 主(あけたがわ つかさ)、m5201149

主な参考書1. Computational GeometryーAlgorithms and Applications

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

2. コンピュータ・ジオメトリー計算幾何学:アルゴリズムと応用M. ドバーグ、M. ファン・クリベルド、M. オーバマーズ、O. シュワルツコップ 著、浅野哲夫 訳、近代科学社(上記和訳本)

3. 計算幾何学入門ー幾何アルゴリズムとその応用

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

Page 2: 計算幾何学 Computational Geometryi-health.u-aizu.ac.jp/CompuGeo/2017/handouts/chapter1/...基礎幾何学(elementary geometry) 2点間距離 ベクトル 直線方程式 三角形面積

計算幾何学 第一章

会津大学 生体情報学講座 陳文西 2

授業と評価

講義 10/2~11/27、月+木の4限、15回、M6 資料 http://i-health.u-aizu.ac.jp/CompuGeo/index.html 評価

方法=(① or ②) and ③① アルゴリズム実装:4題( 多1題/章)、50%

使用言語=C or Java、ウェブベース実装形式=better 提出期限=各章の期限内(約講義終了後1週間)

② プロジェクト研究:1回、50% 研究レポート作成、ウェブベース実装形式=better 提出期限=授業 終日(11/27)

③ 期末試験:基本概念、50%

宿題の提出期限と採点方法

1. 各回演習は100%満点として採点する

2. 結果が正しいものを100%とする

3. 結果が正しくない場合、再提出連絡後一週間内一回のみ再提出が可能

3-1.再提出の結果が正しい場合、80%とする

3-2.再提出の結果が正しくない場合、20%とする

3-3.再提出しない場合、10%とする

4. 期限後一週間以内提出の場合、正解に限り点数を折半する、再提出不可

No. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15date 10/2 10/5 10/12 10/16 10/19 10/23 10/26 10/30 11/2 11/6 11/9 11/13 11/16 11/20 11/27

lecture chapter 1 1 2 2 3 3/4 4 4 5 5 6 6 7 7 Q&A

deadline for ex Ex110

Ex210

Ex310

Ex420

Ex520

report50

Page 3: 計算幾何学 Computational Geometryi-health.u-aizu.ac.jp/CompuGeo/2017/handouts/chapter1/...基礎幾何学(elementary geometry) 2点間距離 ベクトル 直線方程式 三角形面積

計算幾何学 第一章

会津大学 生体情報学講座 陳文西 3

計算幾何学とは

幾何学的な問題を取り扱うための効率的なアルゴリズムとデータ構造の設計と解析

Computational geometry is the branch of computer science that studies algorithms and datastructures for solving geometricproblems on a computer efficiently

簡単な実例

美術館警備 も近い電話機

Page 4: 計算幾何学 Computational Geometryi-health.u-aizu.ac.jp/CompuGeo/2017/handouts/chapter1/...基礎幾何学(elementary geometry) 2点間距離 ベクトル 直線方程式 三角形面積

計算幾何学 第一章

会津大学 生体情報学講座 陳文西 4

典型的な計算幾何学問題

三角形分割問題

近点問題凸包問題 点位置決定問題

短経路問題可視性問題

応用分野

地理情報システム(GIS) コンピュータグラフィックス

ロボティックス

CAD/CAM Molecular Modeling Pattern Recognition Database

Page 5: 計算幾何学 Computational Geometryi-health.u-aizu.ac.jp/CompuGeo/2017/handouts/chapter1/...基礎幾何学(elementary geometry) 2点間距離 ベクトル 直線方程式 三角形面積

計算幾何学 第一章

会津大学 生体情報学講座 陳文西 5

復習

高校

基礎幾何学(elementary geometry) 大2前期

アルゴリズム(algorithm)

データ構造(data structure)

基礎幾何学(elementary geometry) 2点間距離

ベクトル

直線方程式

三角形面積

四角形面積

多角形面積

Euclid: Picture courtesy of Lexington High School

Page 6: 計算幾何学 Computational Geometryi-health.u-aizu.ac.jp/CompuGeo/2017/handouts/chapter1/...基礎幾何学(elementary geometry) 2点間距離 ベクトル 直線方程式 三角形面積

計算幾何学 第一章

会津大学 生体情報学講座 陳文西 6

2点間距離

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

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

Other Distance MetricsNo Metric Definition1 euclidean2 seuclidean3 mahalanobis4 cityblock (manhattan)5 minkowski6 cosine7 correlation8 chebychev (chessboard)9 canberra10 braycurtis

vectors u and v

http://reference.wolfram.com/language/guide/DistanceAndSimilarityMeasures.html

y = pdist(X, metric) computes the distance between columns in the data matrix X.

X: rows correspond to observations, columns correspond to variables

Page 7: 計算幾何学 Computational Geometryi-health.u-aizu.ac.jp/CompuGeo/2017/handouts/chapter1/...基礎幾何学(elementary geometry) 2点間距離 ベクトル 直線方程式 三角形面積

計算幾何学 第一章

会津大学 生体情報学講座 陳文西 7

ベクトル

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

角度

ベクトルの演算

内積

外積

Page 8: 計算幾何学 Computational Geometryi-health.u-aizu.ac.jp/CompuGeo/2017/handouts/chapter1/...基礎幾何学(elementary geometry) 2点間距離 ベクトル 直線方程式 三角形面積

計算幾何学 第一章

会津大学 生体情報学講座 陳文西 8

直線方程式

Explicit equation

Implicit equation

Parametric equation

三角形面積

Page 9: 計算幾何学 Computational Geometryi-health.u-aizu.ac.jp/CompuGeo/2017/handouts/chapter1/...基礎幾何学(elementary geometry) 2点間距離 ベクトル 直線方程式 三角形面積

計算幾何学 第一章

会津大学 生体情報学講座 陳文西 9

四角形面積

多角形面積

When P=原点=(0,0)

Page 10: 計算幾何学 Computational Geometryi-health.u-aizu.ac.jp/CompuGeo/2017/handouts/chapter1/...基礎幾何学(elementary geometry) 2点間距離 ベクトル 直線方程式 三角形面積

計算幾何学 第一章

会津大学 生体情報学講座 陳文西 10

アルゴリズム

1. 定義

数学などの問題を解くための計算手順・方法

A finite set of precise instructions for performing a computation or for solving a problem

2. 評価

領域計算量(space complexity) 時間計算量(time complexity)

実例

1. 線形探索(Linear search) 数列 a1, a2, …, an

xを探す

大計算量=O(n)

2. 2分探索(Binary search)

数列 a1, a2, …, an , where a1< a2< …< an

xを探す

大計算量=O(log2n)

Page 11: 計算幾何学 Computational Geometryi-health.u-aizu.ac.jp/CompuGeo/2017/handouts/chapter1/...基礎幾何学(elementary geometry) 2点間距離 ベクトル 直線方程式 三角形面積

計算幾何学 第一章

会津大学 生体情報学講座 陳文西 11

計算量の推計

1. 探索 (Searching)、並び替え (Sorting) 比較の回数 (the number of comparisons)

2. 数値計算 (Arithmetic calculation) 乗算の回数 (the number of multiplications)

3. いくつかのステップに分解して、ループを探し、各ステップの計算量を解析する1. ループ処理の中身→乗算、比較

2. 繰り返し回数の上限値

繰り返し回数を影響する処理がある場合→条件判断等

Loop! Loop! 多くのアルゴリズムは大抵幾つかのループから構成さ

れる→ループの解析は一番重要!

計算量の種類

Worst case → 大計算量

Average case → 平均計算量

Best case → 小計算量

Page 12: 計算幾何学 Computational Geometryi-health.u-aizu.ac.jp/CompuGeo/2017/handouts/chapter1/...基礎幾何学(elementary geometry) 2点間距離 ベクトル 直線方程式 三角形面積

計算幾何学 第一章

会津大学 生体情報学講座 陳文西 12

計算量の記述 ー Big , , 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 .

nと伴う計算量関数f(n)の変化

f(n) 1 2 4 8 16 321 1 1 1 1 1 1Log n 0 1 2 3 4 5n 1 2 4 8 16 32n Log n 0 2 8 24 64 160n2 1 4 16 64 256 1024n3 1 8 64 512 4096 32,7682n 2 4 16 256 65,536 4,294,967,296n! 1 2 24 40320 20,922,789,888,000 2.6313X1035

Page 13: 計算幾何学 Computational Geometryi-health.u-aizu.ac.jp/CompuGeo/2017/handouts/chapter1/...基礎幾何学(elementary geometry) 2点間距離 ベクトル 直線方程式 三角形面積

計算幾何学 第一章

会津大学 生体情報学講座 陳文西 13

データ構造

定義

基本的な操作(検索、挿入、削除など)を効率よく

実行できるために、操作対象となるデータ集合の

組織形態

基本データ構造

1. リスト

2. スタックとキュー

3. ヒープ

4. 2分探索木

5. 平衡2分探索木

リスト(list)

ポインタ部データ部挿入

削除

実行時間一定

Page 14: 計算幾何学 Computational Geometryi-health.u-aizu.ac.jp/CompuGeo/2017/handouts/chapter1/...基礎幾何学(elementary geometry) 2点間距離 ベクトル 直線方程式 三角形面積

計算幾何学 第一章

会津大学 生体情報学講座 陳文西 14

スタック(stack) プッシュpush(挿入)とポップpop(削除) 後入れ先出し(last-in first-out, LIFO)

実行時間一定

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

実行時間一定

Page 15: 計算幾何学 Computational Geometryi-health.u-aizu.ac.jp/CompuGeo/2017/handouts/chapter1/...基礎幾何学(elementary geometry) 2点間距離 ベクトル 直線方程式 三角形面積

計算幾何学 第一章

会津大学 生体情報学講座 陳文西 15

木(tree) 根、親、子

兄弟、先祖、子孫、

葉(外点)

節点(内点)

深さ、高さ(枝の数)

木(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 16: 計算幾何学 Computational Geometryi-health.u-aizu.ac.jp/CompuGeo/2017/handouts/chapter1/...基礎幾何学(elementary geometry) 2点間距離 ベクトル 直線方程式 三角形面積

計算幾何学 第一章

会津大学 生体情報学講座 陳文西 16

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

ヒープ(heap) 条件

親≦子孫

小値

配列にての配置

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

操作

挿入、 小値削除

実行時間O(logn)

Page 17: 計算幾何学 Computational Geometryi-health.u-aizu.ac.jp/CompuGeo/2017/handouts/chapter1/...基礎幾何学(elementary geometry) 2点間距離 ベクトル 直線方程式 三角形面積

計算幾何学 第一章

会津大学 生体情報学講座 陳文西 17

ヒープの挿入(任意値⑭を挿入)1. 次の位置に穴を用意する

2. If 親≦挿入値?

Then 挿入する

Else 親を下ろす

3. Repeat from 2

実行時間O(logn)

ヒープの削除( 小値=根⑬を削除)

1. 根に穴を空ける

2. 穴に小さい子を入れる

3. 低層まで、Repeat 24. 後の要素を入れる

実行時間O(logn)

Page 18: 計算幾何学 Computational Geometryi-health.u-aizu.ac.jp/CompuGeo/2017/handouts/chapter1/...基礎幾何学(elementary geometry) 2点間距離 ベクトル 直線方程式 三角形面積

計算幾何学 第一章

会津大学 生体情報学講座 陳文西 18

2分探索木(binary search tree) データ集合の基本操作→検索、挿入、削除

辞書構造=アルファベット順、昇順、降順 2分探索→O(logn)、挿入、削除→O(n)

問題:

挿入、削除→O(logn)?答え:

2分探索木

左子孫≦親≦右子孫

2分探索木の構築

ダミー頂点の導入

小さい値→空探索木

右子→根

葉の子→nil(□)

内点

葉の子

ダミー頂点 根

Page 19: 計算幾何学 Computational Geometryi-health.u-aizu.ac.jp/CompuGeo/2017/handouts/chapter1/...基礎幾何学(elementary geometry) 2点間距離 ベクトル 直線方程式 三角形面積

計算幾何学 第一章

会津大学 生体情報学講座 陳文西 19

3つの基本操作

検索 find(x)

挿入 insert(x)

削除 delete(x)

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

x<v→左部分木

x>v→右部分木

x=v→found

xv→no found

実行時間O(logn)

Page 20: 計算幾何学 Computational Geometryi-health.u-aizu.ac.jp/CompuGeo/2017/handouts/chapter1/...基礎幾何学(elementary geometry) 2点間距離 ベクトル 直線方程式 三角形面積

計算幾何学 第一章

会津大学 生体情報学講座 陳文西 20

挿入insert(x) find(x)→ 後の内点vまで検索

x>v →右に挿入

x<v →左に挿入

x=v →有、無視

実行時間O(logn)

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

1. v→葉→削除→終了

delete(29)

Page 21: 計算幾何学 Computational Geometryi-health.u-aizu.ac.jp/CompuGeo/2017/handouts/chapter1/...基礎幾何学(elementary geometry) 2点間距離 ベクトル 直線方程式 三角形面積

計算幾何学 第一章

会津大学 生体情報学講座 陳文西 21

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

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

delete(30)

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

3. v→双子

① vより大きい 小値uを検索(右子の左子孫)② v← u

③ 右子→u

実行時間O(logn)

delete(25)

Page 22: 計算幾何学 Computational Geometryi-health.u-aizu.ac.jp/CompuGeo/2017/handouts/chapter1/...基礎幾何学(elementary geometry) 2点間距離 ベクトル 直線方程式 三角形面積

計算幾何学 第一章

会津大学 生体情報学講座 陳文西 22

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

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

木の左右バランスを保つには→How to …? AVL木 2色木(red-black tree)

Best case

Worst case

AVL木 発明者

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

定義

どの内点においても、左部分木と右部分木の高さの差は1以下を満たす二分探索木

判断指標 バランス度=(右ー左)部分木の高さ

操作方法 通常の2分木と同様

バランス度の変化を計算する

バランス度の復元操作→単一回転・二重回転

Page 23: 計算幾何学 Computational Geometryi-health.u-aizu.ac.jp/CompuGeo/2017/handouts/chapter1/...基礎幾何学(elementary geometry) 2点間距離 ベクトル 直線方程式 三角形面積

計算幾何学 第一章

会津大学 生体情報学講座 陳文西 23

AVL木の回転操作

単一回転

一回転

二回転

2重回転

AVL木回転操作の実例

二重回転

単一回転

Page 24: 計算幾何学 Computational Geometryi-health.u-aizu.ac.jp/CompuGeo/2017/handouts/chapter1/...基礎幾何学(elementary geometry) 2点間距離 ベクトル 直線方程式 三角形面積

計算幾何学 第一章

会津大学 生体情報学講座 陳文西 24

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

赤と黒のプロパティを追加

内点=黒、又は赤

根=黒、新挿入の子=赤

赤内点→黒子

根から外点に至るすべてのルートは同じ数の黒子

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

二重回転

Page 25: 計算幾何学 Computational Geometryi-health.u-aizu.ac.jp/CompuGeo/2017/handouts/chapter1/...基礎幾何学(elementary geometry) 2点間距離 ベクトル 直線方程式 三角形面積

計算幾何学 第一章

会津大学 生体情報学講座 陳文西 25

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

5

34

1

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

初の木 0を挿入

単一回転 色の交換

11 2

3 4

Page 26: 計算幾何学 Computational Geometryi-health.u-aizu.ac.jp/CompuGeo/2017/handouts/chapter1/...基礎幾何学(elementary geometry) 2点間距離 ベクトル 直線方程式 三角形面積

計算幾何学 第一章

会津大学 生体情報学講座 陳文西 26

データ集合の並び替え

直接挿入法

直接選択法

バブル法

振動法

快速法

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

Page 27: 計算幾何学 Computational Geometryi-health.u-aizu.ac.jp/CompuGeo/2017/handouts/chapter1/...基礎幾何学(elementary geometry) 2点間距離 ベクトル 直線方程式 三角形面積

計算幾何学 第一章

会津大学 生体情報学講座 陳文西 27

直接選択法(Straight Selection) 小の要素を直接選択して、該当する位置に入れる

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

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

Page 28: 計算幾何学 Computational Geometryi-health.u-aizu.ac.jp/CompuGeo/2017/handouts/chapter1/...基礎幾何学(elementary geometry) 2点間距離 ベクトル 直線方程式 三角形面積

計算幾何学 第一章

会津大学 生体情報学講座 陳文西 28

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

上から比較し、下降双方向のバブル法

快速法(Quick Sort)1. 基準値←(約)真中

の要素

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

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

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