計算幾何学 computational geometry 第一章 基本概念 basic concepts
Post on 22-Dec-2015
281 views
TRANSCRIPT
![Page 1: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/1.jpg)
計算幾何学Computational Geometry
第一章 基本概念Basic concepts
![Page 2: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/2.jpg)
教員と教材 教員 陳 文西 ( チン ブンシ )
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](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/3.jpg)
授業方針 講義 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](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/4.jpg)
計算幾何学とは 幾何学的な問題を取り扱うための効
率的なアルゴリズムとデータ構造の設計と解析
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](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/5.jpg)
簡単な実例
![Page 6: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/6.jpg)
典型的な計算幾何学問題
![Page 7: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/7.jpg)
応用分野 地理情報システム( GIS ) コンピュータグラフィックス ロボティックス CAD/CAM
Molecular Modeling
Pattern Recognition
Database
![Page 8: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/8.jpg)
Protein 3D visualization
![Page 9: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/9.jpg)
復習 基礎幾何学( elementary geometry ) アルゴリズム( algorithm ) データ構造( data structure )
![Page 10: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/10.jpg)
基礎幾何学 (elementary geometry)
2 点間距離 ベクトル 直線方程式 三角形面積 四角形面積 多角形面積
Euclid: Picture courtesy of Lexington High School
![Page 11: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/11.jpg)
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](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/12.jpg)
ベクトル ベクトル a(a1 , a2 ,…, an) と b(b1 , b2 ,…, bn) 長さ
角度
n
iin aaaa
1
2222
21 ...a
ba
ba cos
![Page 13: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/13.jpg)
ベクトルの演算 和
差
内積
外積
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](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/14.jpg)
直線方程式
baxxfy
0, cbyaxyxf
Ltt vPP 0
010 PPP t
101 PP tt
Explicit equation
Implicit equation
Parametric equation
![Page 15: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/15.jpg)
三角形面積
0202
1VVVV1
wvwv 2
1sin
2
1 A
0201
0201
2
1
yyyy
xxxx
010202012
1yyxxyyxx
![Page 16: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/16.jpg)
四角形面積
0302 MMMM1
32103210 2 MMMMVVVV AA
2222
2 10031021 VVVVVVVV
021313022
1yyxxyyxx
13022
1VVVV
![Page 17: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/17.jpg)
多角形面積
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](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/18.jpg)
アルゴリズム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](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/19.jpg)
実例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](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/20.jpg)
計算量の推計方法1. いくつかのステップに分解して、各ス
テップの計算量を解析する。例えば、まずはループ処理の中身、次は必要な繰り返し回数。
2. for ループを探す。上限値を得られる。特に注意すべきのはループの中にループを影響する処理がある場合。例えば、条件判断文など。
3. ループ、またループ、アルゴリズムというのは大抵幾つかのループから構成されている。ループの解析は一番重要だ。
![Page 21: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/21.jpg)
なにを計る? 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](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/22.jpg)
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](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/23.jpg)
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](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/24.jpg)
データ構造 定義
基本的な操作(検索、挿入、削除など)を効率よく実行できるために、操作対象となるデータ集合の組織形態
基本データ構造1. リスト2. スタックとキュー3. ヒープ4. 2 分探索木5. 平衡 2 分探索木
![Page 25: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/25.jpg)
リスト (list)
ポインタ部データ部挿入
削除
実行時間一定
![Page 26: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/26.jpg)
スタック (stack) プッシュ push( 挿入 ) とポップ pop( 削
除 ) 後入れ先出し( last-in first-out, LIFO )実行時間一定
![Page 27: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/27.jpg)
キュー (queue) 二つのポインタ変数 front と rear 先入れ先出し( first-in first-out, FIFO )
実行時間一定
![Page 28: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/28.jpg)
木 (tree) 根、親、子 兄弟、先祖、子孫、 葉(外点) 節点(内点) 深さ、高さ(枝の数)
![Page 29: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/29.jpg)
木 (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](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/30.jpg)
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](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/31.jpg)
ヒープ (heap) 条件
親≦子孫 根
最小値 配列にての配置
親i番 左子 2i 右子 2i +1
操作 挿入、最小値削除
実行時間O(logn)
![Page 32: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/32.jpg)
ヒープの挿入 ( 任意値⑭を挿入 )
1. 次の位置に穴を用意する
2. If 親≦挿入値? Then 挿入する Else 親を下ろす
3. Repeat from 2
実行時間O(logn)
![Page 33: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/33.jpg)
ヒープの削除(最小値 = 根⑬を削除)1. 根に穴を空ける2. 穴に小さい子を入れる3. 最低層まで、 Repeat 24. 最後の要素を入れる
実行時間O(logn)
![Page 34: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/34.jpg)
2 分探索木 (binary search tree)
データ集合の基本操作→検索、挿入、削除 辞書構造=アルファベット順、昇順、降順
2 分探索→ O(logn) 、挿入、削除→ O(n)
問題: 挿入、削除→ O(logn) ?答え: 2分探索木
左子孫≦親≦右子孫
![Page 35: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/35.jpg)
2 分探索木の構築 ダミー頂点の導入
小さい値→空探索木 右子→根 葉の子→ nil (□)
内点
葉の子
ダミー頂点
根
葉
![Page 36: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/36.jpg)
3 つの基本操作 検索
find(x) 挿入
insert(x) 削除
delete(x)
![Page 37: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/37.jpg)
検索 find(x) 根から始めて検索データ x を内点 v と比較
し、 x<v→ 左部分木 x>v→ 右部分木 x=v→found xv→no found
実行時間O(logn)
![Page 38: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/38.jpg)
挿入 insert(x) find(x)→ 最後の内点 vまで検索 x>v → 右に挿入 x<v → 左に挿入 x=v →有、無視
実行時間O(logn)
![Page 39: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/39.jpg)
削除 delete(x) - 1/3 find(x)=v
1. v→ 葉→削除→終了
delete(29)
![Page 40: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/40.jpg)
削除 delete(x) - 2/3 find(x)=v
2. v→ 一子→削除→ v の子で置き換える
delete(30)
![Page 41: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/41.jpg)
削除 delete(x) - 3/3 find(x)=v
3. v→ 双子 ① v より大きい最小値 u を検索 ( 右子の
左子孫 ) ② v← u
③ 右子→ u
実行時間O(logn)
delete(25)
![Page 42: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/42.jpg)
平衡 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](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/43.jpg)
AVL 木 発明者
二人のロシアコンピュータ学者 Adelson-Velskii と Landis 、 1962
定義 どの内点においても、左部分木と右部分木の高さの差
は1以下を満たす二分探索木 判断指標
バランス度= ( 右ー左 ) 部分木の高さ 操作方法
通常の2分木と同様 バランス度の変化を計算する バランス度の復元操作→単一回転・二重回転
![Page 44: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/44.jpg)
AVL 木の回転操作
単一回転
一回転
二回転
2重回転
![Page 45: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/45.jpg)
AVL 木回転操作の実例
二重回転
単一回転
![Page 46: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/46.jpg)
2色木 (red-black tree) 構築ルール
赤と黒のプロパティを追加 内点=黒、又は赤 根=黒、新挿入の子=赤 赤内点→黒子 根から外点に至るすべてのルートは同じ数の黒
子
![Page 47: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/47.jpg)
2色木の回転操作 単一回転
二重回転
![Page 48: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/48.jpg)
操作実例(⑦の挿入と色の変化)
1 2
34
5
![Page 49: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/49.jpg)
操作実例( 0 の挿入と色の変化)
1 2
3 4
最初の木 0を挿入
単一回転 色の交換
![Page 50: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/50.jpg)
データ集合の並び替え 直接挿入法 直接選択法 バブル法 振動法 快速法
![Page 51: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/51.jpg)
直接挿入法 (Straight Insertion)
データを一つずつ処理し、該当する位置に直接挿入する
![Page 52: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/52.jpg)
直接選択法 (Straight Selection)
最小の要素を直接選択して、該当する位置に入れる
![Page 53: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/53.jpg)
バブル法 (Bubble Sort) 一番下から要素を選んで、上の要素と比較
上の要素より大きいところまで浮上
![Page 54: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/54.jpg)
振動法 (Shaker Sort) 下から比較し、浮上 上から比較し、下降
双方向のバブル法
![Page 55: 計算幾何学 Computational Geometry 第一章 基本概念 Basic concepts](https://reader030.vdocuments.mx/reader030/viewer/2022033012/56649d7a5503460f94a5e8a0/html5/thumbnails/55.jpg)
快速法 (Quick Sort)
1. 基準値←(約)真中の要素
2. 前半の要素→後半 if >基準値
3. 後半の要素→前半 if <基準値
4. 2 つのサブセットについて1~3を繰り返す