文化祭で、発表するグループを教室と時間帯に割り当てることになりました。参加者が無理なく発表できる時間割を作りたいとすると、同じ人が参加する発表は時間を重ねない、人数の多い企画には大きな教室を用意する、といった条件を考慮する必要があります。候補を全部試せば決められそうでも、企画が増えると組み合わせは急速に増えていきます。[1]
「理論・数理・計算科学」分野は、こうした問題を数学で表し、解く手順を考え、正しさや計算の限界を調べる分野です。現実の現象を数式で表し、コンピュータ上で再現する計算科学にもつながります。
時間割を作る前に、問題を表す
まず、必ず守る条件と、できれば実現したい希望を分けます。「一つの教室で同時に二つの発表はできない」は制約です。「人気の企画が重ならないようにしたい」は、良さを測る目的として考えられます。
例えば、企画を点で表し、同じ人が参加する企画同士を線で結びます。線で結ばれた企画を別の時間帯に置けば、参加時間の重複を避けられます。このように必要な関係を取り出し、計算できる形に表したものを「モデル」と呼びます。企画や教室の一覧を入力すると、条件を満たす時間割が答えとして出てくる、という問題の形が見えてきます。
次に、すべての候補を調べる方法と、条件を利用して候補を減らす方法を比べます。一つの時間割が見つかること、最もよい時間割が見つかること、どの入力でも短時間で終わることは、別々の性質です。
一つの時間割が作れても、解き方の確認は続く
企画が少ない場合にうまく時間割を作れても、企画や参加者の組み合わせが変わったときに、条件を守れるとは限りません。考えた手順なら発表の重複をなぜ防げるのかを説明し、企画が10件から100件に増えると、計算の回数や必要な記憶量がどう変わるかも調べます。
計算機科学や工学の研究で知られる米国のマサチューセッツ工科大学(MIT)の公開授業「アルゴリズム入門」では、問題を解く手順を示すだけでなく、「なぜ正しい答えが得られるのか」「計算にどれだけの手間がかかるのか」を説明する課題が出されています。プログラムを動かす練習と、解き方の正しさや効率を考える練習を組み合わせるのです。[2]
ここでは時間割の例を使って、解き方の正しさや計算の効率を確かめる練習を考えてみましょう。
- 企画数を3〜4件に絞って手で時間割を作り、考えた手順では条件を守れなくなる組み合わせを探す。
- 企画を一列の一覧にするか、関係ごとにまとめるかなど、データの整理方法を変えて処理の数を比べる。
- 正しさの証明を読み、自分の言葉で理由を説明する。
- 希望を最も多くかなえる答えと、制限時間内に見つかる十分よい答えを比べる。
プログラムの速さだけを競う分野ではありません。計算では原理的に解けない問題や、解くことの難しさそのものも対象です。
数式を使って、現象を調べる道もある
同じ文化祭でも、「通路に人が集まると、どこが混むか」を調べるなら、移動や混雑のモデルを作ってシミュレーションする方法があります。
連続的な時間や空間を細かく区切って計算すると、区切り方や数値の丸めによって結果が変わり得ます。出力が現実に似ているか、計算の誤差はどの程度か、別の条件でも説明できるかを検討します。きれいな動画ができることと、妥当なモデルができることは同じではありません。
理論、最適化、数値計算の重点は課程によって異なります。この入口に含まれる内容を、すべて一つの研究室が扱うという意味ではありません。
データ分析や高性能計算との違い
記録から混雑の傾向を推定するなら、「データサイエンス・統計」分野とのつながりがあります。大量の計算を複数の装置で速く実行するなら、「コンピュータシステム・半導体・高性能計算」分野の知識が関わります。
この分野では、問題の表現、解法の性質、数理モデルに目を向けます。同じ課題を扱う場合でも、「どんな手順なら解けるか」「その答えをどこまで保証できるか」が中心の問いになります。
大学で学ぶ科目
学部では、整数や集合などを扱う離散数学、ベクトル・行列を扱う線形代数、微積分を土台に、アルゴリズム、最適化、数値解析などへ進みます。アルゴリズムの演習なら「同じ条件を満たす時間割を、より少ない手順で探せるか」を考え、プログラムと正しさの説明を作ります。数値解析では、近似計算の精度と計算時間を調べます。
大学院では、最適化や計算の理論などの専門科目と、論文を読んで議論するセミナー、研究が組み合わされます。例えば、今ある方法より速く解ける手順を考えて証明したり、流体などのシミュレーションで計算誤差を小さくする方法を調べたりします。京都大学の数理工学コースには、最適化数理・数理解析・離散数理の専門科目とセミナー、特別研究が置かれています。[3]
科目名や研究対象は大学・コースによって異なります。数学的な証明を深めたいのか、現象を計算で調べたいのかを考え、そのための専門科目と研究指導の内容を確認することが大切です。
「理論・数理・計算科学」分野を学べる大学学部・大学院を探すから、関心のある解き方へ進む科目群を確かめてみましょう。
仕事・業界ガイドでは、仕事内容から関連する分野を確認したり、学びたい分野から仕事を調べたりできます。
tojihubの情報分野の区分について
tojihubは、理論・数理的な解法・計算による現象の研究を、この「理論・数理・計算科学」分野として整理しています。
CS2023と科研費の区分を参考にしています。参照した区分と、各分野に含める内容・隣接分野との関係は、「18の分野について」のページで説明しています。
参考文献・注釈
- [1]この記事の文化祭の説明は、学び方を具体化するための架空の例です。特定大学の授業や実施結果を紹介するものではありません。 本文へ戻る
- [2]MIT OpenCourseWare「Introduction to Algorithms — Syllabus」、2011年秋の公開教材。解く手順・具体例・正しさ・計算の手間を説明する課題を参照。本文の時間割はtojihubが用意した説明用の例です。 大学の紹介は公式案内を参照。 本文へ戻る
- [3]京都大学情報学研究科「数理工学コースカリキュラム」。専門科目・セミナー・研究指導の構成を参照。本文の研究課題は学び方を説明する例です。 本文へ戻る