計算機科学と計算幾何学

計算機科学と計算幾何学
12月学科会議
草苅 良至
計算機‐科学について
計算機科学とは
英語だと、
Computer Sience
です。
「計算」について考える学問
機械的な操作で行えること。
処理。
理想的なコンピュータ(=計算機モデル)
での基本動作の組み合わせ。
計算機モデル
「計算」を考えるとき、
実行する機械毎の違いを考えたくない。
理想的な計算機(=計算機モデル)を考えます。
・計算機モデル例
チューリング機械
RAM(Random Access Machine)
λ計算等
実は、これらのモデル間には能力の
差はない。
1930’年代Church-Turingの提唱
チューリング機械
有限状態
制御部
ヘッド
無限テープ
アルゴリズムと問題
「アルゴリズム」とは「問題」を解くために、
モデル上で「基本操作」(命令)を
有限個組み合わせてできる「計算」。
色々な問題
データのソート。
命令
アルゴリズム
四則演算
組み合わせ方
代入演算
比較演算
フーリエ変換。
連立方程式を解く
素因数分解。
問題の大きさ
同じ問題でも、
その大きさ毎に必要な演算数(総ステップ数、計算時間)は異なる。
大きさも考えた問題
n桁の足し算
n桁の数の素因数分解
n変数の連立方程式
n個のデータに対する、ソート
n個のデータに対する、離散フーリエ変換
通常入力サイズは、n,m等の文字で表します。
アルゴリズムの評価
アルゴリズムは通常「問題」を解くためのものであり、
どんな大きさでも解けないといけない。
総ステップ数を、入力サイズnの関数T(n)で評価します。
(使用メモリ量を、入力サイズnの関数S(n)で
評価することもあります。)
関数の分類(オーダー記法)
log n
n
2log n
10n
1000log n
1000n
O(log n)
対数(時間)
n
O ( n)
nk
2
10n
2n
2
100n
k
3n
cn
O(n2 )
k
O(n )
多項式(時間)
O(cn )
指数(時間)
計算時間と関数
1000MIPS(1秒間に10億回の演算可能)の
コンピュータで考えてみましょう。
関数
サイズ n
10
10 log n
8
10 n
5
10 n
2
2n
10
10秒
1秒
100
20秒
10秒
30秒
1分40秒
1分40秒
甚大
10 4
40秒
16分40秒
約2時間47分
甚大
105
50秒
約2時間47分
約11.5日
甚大
約3.2年
甚大
10
10
3
6
1分
約1日
0.01秒
1秒
6
1.0

10
約
秒
約3京世紀
関数の概形
漸近的評価がいいアルゴリズムは、
多量のデータを扱うときに力を発揮する。
計算機科学の目的
計算不可能
実用的に
解けるか?
「問題」
効率的に
解けるか?
指数時間
計算可能
解けるか?
多項式時間
O(n2 )
O ( n)
これら、一連の問いに答えるため学問。
さらに、例えば同じ O ( n) でも、より係数を小さく
することも目的になります。
対数時間
計算‐「幾何学」について
計算幾何学とは、
英語だと、
computational geometry.
図形・幾何情報を元に、いかに「計算」できるかを考える学問。
計算機科学の1分野。
計算幾何学
計算機科学
計算幾何学の応用
CAD
GUI
VLSIのレイアウト設計
CG
バーチャルリアリティ
地理情報処理
ロボティクス
多次元データ処理
計算幾何学の歴史
1978年I.Shamosの博士論文「Computational Geometry」
年から
幾何学が3000年以上の歴史を持っているのに対して、
高々20年強の歴史しかない。
(もっとも、計算機科学自体でも、60年ぐらいなのですが。)
「幾何学」と「計算幾何学」
幾何学では、(数学的)関係に主眼が置かれることが多かった。
これに対して計算幾何学は、『所望の値をどれくらいの「計算」で
求めれるか』まで考える。
 a  a   b  b 
c
a b  c
2
2
c
2
幾何学
直角を挟む2辺の
2乗和は、
斜辺の2乗に等しい。
b
a
計算幾何学
斜辺は、
2回の乗算と、
1回の加算と、
1回の平方根で
求まる。
計算幾何学の代表的問題
凸包問題
最も外側のデータを求める
幾何的探索問題
最も近いデータを求める。
幾何アルゴリズム例
凸包問題
簡単な方法:
1.全ての2点間に直線を引く。
O(n2 ) 本
2.各直線に対して、
全ての点が同じ側にあるか調べる。O ( n) 時間/本
賢い方法:(略)
O(n log n) 時間
O(n3 ) 時間
扱う問題の複雑化
計算対象(点、線、面等)が、
低次元空間内に初めから固定されて動かない。
計算対象が、動く。
折れ線図形の
連続変形問題
計算対象の個数が
増減する。
高次元の
計算対象を扱う。
折れ線図形( Linkage)とは
折れ線図形:長さの変わらない線分が
各節点で接続している図形
ジョイント
バー
ジョイント:各節点
バー:節点間の線分
折れ線図形の(平面)連続変形
折れ線図形で禁止されている連続変形
バーは接続しているジョイントから離れない。
バーの長さは変形中に変わらない。
平面変形で禁止されている動き
バーは、平面内だけを移動する。
変形中に、2つのバーは交差しない。
折れ線図形の平面連続変形問題
バーはジョイントから離れない。
バーの長さは変わらない。
図形は平面上だけで変形する。
変形中に、どの2本のバーも交差しない。
これらの条件を満たしながら、
初期配置から、望みの配置に連続変形できるか?
何回の動作で望みの配置にできるか?
実際の動作計画を求めるのに必要な計算量は?
応用
ロボットアームの動作計画、動作解析
ロボットアーム
バー
間接
動作計画
ジョイント
連続変形問題
建築物の剛性判断
骨組み
折れ線図形
剛性判断
連続変形問題
折れ線図形の連続変形問題
計算幾何学
計算機科学
折れ線図形問題
グラフ理論
平面連続変形の研究1(道状折れ線図
形)
1970年代から1990年代の未解決問題
大工の経験則1
道状の折れ線図形は、
同じバーの系列を持つどんな配置にも平面連続変形できる。
大工の経験則 1’
道状の折れ線図形は、
どんな初期配置からでも直線状に平面連続変形できる。
定理1[Connelly et al. ’00]
全ての道状折れ線図形は、
平面連続変形で直線状にできる。
平面連続変形の研究2(木状折れ線図
形)
問題 2
木状の折れ線図形は、
どんな初期配置からでも
“直線状”に平面連続変形できるか?
定理2[Biedl et al. ’98]
平面連続変形では、
直線化できない木状折れ線図形が存在する。
新たな問題
問題 2
全ての木状の折れ線図形は、
平面連続変形で“直線状”にできるか?
問題 3
どのような木状の折れ線図形が、
平面連続変形で“直線状”にできるのか?
単調な木であれば直線化できる。
単調な道と単調な木
(x方向に)単調な道
(x方向に)単調な木
根
r
単調でない道と単調でない木
(x方向に)単調でない道
(x方向に)単調でない木
根
r
結果[kusakari et. al. '01]
単調な木は、
O(n)回の変形で直線化できる。
直線化の方法をO(n log n)時間で、
O(n)の記憶量で求めることができる。
n :木のジョイント数
n -1:木のバー数
根
r
r
これからの計算機科学について、
計算原理の多様化
並列・分散アルゴリズム(同時に複数台の計算機を使える)
確率アルゴリズム(計算機がサイコロを振れる)
量子アルゴリズム(計算が振幅で遷移する)
解決困難な問題に挑戦
近似アルゴリズム(最適解をあきらめる)
ヒューリスティック(正当性をあきらめる)
データの制限をゆるめる
オンラインアルゴリズム
(アルゴリズム開始時に、全入力データがわからない)
ロバストアルゴリズム
(データ自身に誤差があるかもしれない)
補足
これ以降のスライドは、
単調な木の直線化手法のより詳しく説明するためのものです。
アイディア1
引っぱり操作
r
r
この引っぱり操作だけで直線化できる。
どの順序で、引っぱり操作を行なうかが残る問題。
アイディア2
順序グラフ
木T
順序グラフGT
順序グラフの点集合は、木のバー集合
順序グラフの辺には、
接続辺と可視辺との2種類ある。
接続辺
木T
接続辺集合E con
木で接続している2辺間に、
(根から辿る順序で)
有向辺を引く。
可視辺
木T
可視辺集合E vis
互いに見える2本のバー間に
(左から右に)有向辺を引く。
接続対集合E con
可視対集合E vis

順序グラフG
T
単調な木の順序グラフの性質
単調な木の順序グラフには、
有向閉路がない。
順序グラフG
T
全てのバーにとトポロジカルソートで全順序が付けれる。
引っ張り操作の順序
順序グラフG
5
木T
T
4
11
3
7
4
7
8
8
10
6
10
5
11
1
6
3
9
2
9
2
1
アルゴリズム
1.接続辺集合Econ を求める;
2.可視辺集合Evis を求める;
3.順序グラフG T を求める;
4.トポロジカルソートでバーの全順序を求める;
5.得られた全順序の逆順
に引っぱり操作を行なう.
r
r
初期配置
引っ張り操作を2回適用後
計算量
1.接続辺集合Econ を求める;
2.可視辺集合Evis を求める;
3.順序グラフG T を求める;
4.トポロジカルソートでバーの全順序を求める;
5.得られた全順序の逆順
に引っぱり操作を行なう.
1.O(n)時間
2.O(n log n)時間(平面走査法)
3.O(n)時間
4.O(n)時間
n :木のジョイント数
5.O(n)時間
n -1:木のバー数
可視辺の求め方
平面走査法
木T
可視辺集合E vis
下界
ソート問題を帰着できるので、
Ω(n log n)時間必要。
数
(0, )
その傾きを持つバー
y
1
0.1
20
2
x
結論
単調な木は、
O(n)回の変形(引っ張り操作)
で直線化できる。
直線化の方法を最適な
O(n log n)時間
O(n)記憶量
で求めることができる。
n :木のジョイント数
n -1:木のバー数
r
根
r
課題
放射状に単調な木の直線化
順序グラフの単純な拡張だと、
有向閉路ができることがある。