計算幾何学

幾何的情報処理は多くの場面で必要とされる.パターン認識,地理情報処理,コンピュータグラフィックス,形状設計などがその例である.これらの分野に広く現れる基本的幾何問題を解くためのアルゴリズム体系を構築しようとするのが計算幾何学である.ここでは,注目する対象を囲む最小の凸図形,対象のそれぞれが張る勢力圏,領域の基本図形への分割などが中心的道具となる.また,数値誤差に対してロバストな幾何アルゴリズムの設計も,実用上大切な技術である.

数値計算法

いろいろな現象を非線形方程式や微分方程式などの数式の形に表現することが数理的解析の第一歩であるが,実は,そのようにして得られた方程式の解(答え)が閉じた形で解析的に分かることは稀である.工学においては最終的に「数値」が必要となるので,コンピュータを用いて方程式の解を数値的に計算することになるが,そのためのアルゴリズムの設計や解析を行うのが数値計算法の分野である.数値計算法の開発においては,問題固有の構造に加えて,解析学,線形代数,アルゴリズム論などの一般的な数学や計算機の利用技術が総合的に利用される.数値計算法は信頼性の高い数理手法の基礎を提供するものである.

モンテカルロ法

「針を落として円周率πが求まる」という問題(ビュフォンの針の問題)聞いたことがあるだろうか.平面に並行に線をひき,針を落として線と交わるかどうかを観測する.針と線が交わる確率は円周率πによって表されるので,針を何度も落として線と交わる頻度を求めればπを求めることができる.このようにランダムな試行をくり返すことにより確率や積分を求める方法をモンテカルロ法という.モンテカルロはカジノで有名な都市である.実際に多数回針を落とすのは面倒であるが,コンピュータの中で乱数を発生させて擬似的な実験をおこなうのは容易であるため,近年では解析的な解が求められないような問題に対してモンテカルロ法が多用されている.

データ構造

データの集まりを計算機の中で効率的に扱うには,一定の形式にのっとってデータを系統立てて格納することになる.計算機科学において,この形式のことをデータ構造と呼ぶ.同じ内容のデータに対してそれを表現するデータ構造が異なれば,必要とする記憶領域が異なるだけではなく,プログラムを実行する際の能率も大きく左右される.データ構造とそれを処理するプログラムの制御構造とは互いに深く結びついており,このデータ構造をどのように設計するかがアルゴリズム(プログラム)の効率に大きく影響するので,これまでに,様々なデータ構造が考案されてきた.基本的なデータ構造として,配列,スタック,キュー,線形リスト,木構造,グラフ,ハッシュ表などがある.

並列プログラミング

計算機プロセッサ(CPU)と高速ネットワークの発展によって,並列処理環境が簡単に得られるようになった.こうした環境を活かすためには,計算を逐次に行なうだけではなく,いくつかの計算を並行して進めてゆくという並列計算機構が必要である.計算機構は一般に,プログラムを書くための言語に反映され,人が設計したアルゴリズムを表現する手段として用いられる.計算機構をコンパイラなどといったプログラム言語の処理系として計算機上に構築することによって,アルゴリズムを計算機上に実現できることになる.逐次の計算機構に対する言語処理系の設計技術はかなりよく整理されてきているが,並列計算機構については未解決の問題が多い.並列計算機上でプログラムを効率よく実行するための計算機構とそれに基づくプログラム言語の処理系を構築することは,重要な課題のひとつである.

計算複雑度

計算機の能力が向上することにより現実的な時間で解けるようになった問題は多いが,計算能力の向上だけでは対処できない問題も存在する.こうした問題では計算対象の大きさが少し増えるだけで計算の手間が大きく増大し,これはその問題が本質的に難しいことを意味している.この計算時間に関する問題の難しさを計る指標が計算複雑度である.計算対象の大きさを変数として,その大きさに対して線形(一次式),多項式,指数関数というように表現する.同様に,計算に必要とされる空間量の指標を空間複雑度という.

関数プログミング

ソフトウェアがどんどん複雑になるにつれ,それを上手に構造化することがますます重要になっている.関数プログラミングは,ラムダ計算の概念をベースに関数だけで全体が構成され,すべての計算は関数の適用によって行われている.有名な関数型言語には Lisp,Haskell,MLなどがある.関数自体を引数として扱う高階関数と必要になるまで計算評価を行なわない遅延評価という二つの特徴により,関数プログラミングはソフトウェアの構造化に大きく貢献している.また,関数プログラム中のの関数は通常の数学的な関数に似ており,プログラミングを数学的な活動としてとらえて,プログラムのなすべきことの数学的記述から,等式による単純な推論によってプログラムを計算操作することができる.

プログラム変換

ひとつの問題に対して、それを解くアルゴリズムは複数存在し、それぞれの実行効率が大きく異なることも多い。同じ問題を解くいくつものプログラムが存在する中で、こうしたプログラム同士の関係やそれらを変換する規則が明らかになれば、プログラムを合成する手法や効率のよいプログラムを求める手法が確立できるようになる。これまで、多項式を因数分解するように、プログラムを対象とする計算術に関する研究が行なわれてきた。このプログラムを対象とする理論は、プログラムの構成手段として用いることができるばかりでなく、プログラムの性質を把握するにも有効であり、実際のプログラミングの基盤としてもきわめて重要なものである.

情報幾何学

平均と分散の組を決めると,正規分布をひとつ指定することができる.このように,正規分布には2つのパラメータ(平均と分散)があるため,正規分布全体の集まりは2次元の空間(多様体)と見なせる.この空間には,統計理論から見て自然な意味をもつ,計量や接続とよばれる微分幾何学的構造が導入される.このように情報幾何学では,統計,情報理論,量子情報,制御,最適化,統計物理など数理情報の諸分野で現れる対象に,情報の本来の意味から見て必然的で自然な幾何学的構造を導入する.この幾何学的構造を調べることにより,対象に鋭く切りこんでゆくことができる.

マルコフ連鎖

時間とともにある量がランダムに変化する現象は,自然科学・工学・経済などのさまざまな分野で現れる.マルコフ連鎖はこのような現象に対する基本的なモデルのひとつである.マルコフ連鎖をさらに発展させた確率モデルに,隠れマルコフモデル,マルコフ確率場,グラフィカルモデルなどがあり,遺伝子解析,エキスパートシステム,画像処理など多くの分野で利用されている.