システム論

受講前

この講義を履修したきっかけは、「システム論」という名前です。情報系の分野に興味がある筆者は、システムと言われるといくつものコンピュータープログラムから構成される巨大なソフトウェアを思い浮かべます。そういうものに関連した講義なのだろうかと思いながらシラバスを読んでみました。すると、講義のテーマが「問題解決」であることが分かりました。さらに、問題解決を行うために必要な「意思決定」と「計画」を扱うということでした。

システムといっても必ずしもコンピューターに関連するわけではないのですが、この講義を担当していた先生が1学期の必修科目「情報」の講義も受け持つ先生だったこともあり、期待を膨らませながら講義に臨みました。

意思決定

前半の講義で扱われたテーマは「意思決定」でした。複数の選択肢があるときにどれを選べばいいのかということについて、基礎的な知識を学びました。当然、一番良い選択肢を選べばいいのですが、そもそも「良い」とはどういうことか、から考えなければなりません。講義では、これを解決するための方法論として、選択肢の良さを数値化して表すものである「評価関数」や、評価関数を作る方法の1つである「AHP法」などを学びました。

さらに発展して、多人数での意思決定は「投票論」として、互いに敵対している状況での意思決定は「ゲーム論」として学びました。特に印象深かったのは、投票論の授業で先生が行なったある証明です。

ひとことに投票といっても実はいろいろな種類があります。単純な多数決の他にも、例えば株主総会では各株主が保有する株の数によって影響力が違います。授業では多数決を一般化しました。各参加者が選択肢に対して順位を付け、それをもとに何らかの方法で全体として各選択肢に順位を付けるのが多数決です。この「何らかの方法」の違いによって、さまざまな異なるルールの投票が生まれます。

投票に望ましい性質として、先生は2つの性質を挙げました。1つは全会一致の法則で、2つの選択肢A,Bについて参加者全員がA>B(AのほうがBより順位が上)と考えている場合、多数決の結果でもA>Bになるという法則です。そうでないと参加者の意思が反映されているとは思えませんから、これは当然のように思えます。もう1つはIIAと呼ばれるもので、2つの選択肢AとBの順序が変わらないなら、第3の選択肢Cの位置をどう変えても多数決の結果におけるAとBの順序は変わらないという法則です。すなわち、A>BのときにCの位置はC>A>B,A>C>B,A>B>Cの3つが考えられますが、どの場合でも多数決の結果がB>Aになることはないということです。これは1つ目と比べると直感的ではありませんが、言われてみればこれも納得できるものだと思いました。

ところがこの後、先生は「この2つの法則を満たす投票方法は『独裁政治』しか存在しない」ということを証明して見せました。これをアローの定理というそうです。独裁政治というと独裁者をイメージするかもしれませんが、それとは少し違います。ここでの独裁政治とは、多数決の結果が参加者のうち特定の1人のつけた順位と常に一致するという意味です。これではほかの人の意思が全く反映されませんから、やはり望ましい投票方法とはいえません。つまり、先生は「理想的な投票方法は存在しない」ということを示したのです。本当に先に示した2つの法則が「理想」なのかという問題はありますが、これを先生が目の前で証明してしまったことには衝撃を受けました。システム論の講義全体を通しても、最も印象的だった部分です。ただし、その後には、現実的な仮定をすれば問題のない投票方法を作ることができるということも併せて紹介してくれました。

計画・問題解決

問題を解決するには、意思決定の後にそれを実際に実行する必要があります。講義の後半ではその方法について基礎的なことを学びました。その1つが数理計画法です。これは簡単に言えば、色々な条件があるなかで一番いい行動を選択するために、条件を式で表して数学的に最適解を求める方法です。高校の数学で似たような内容があったのを懐かしみながら話を聞いていました。この他にも色々な問題解決法が紹介されました。

さらに話は計算機理論へと膨らみました。「NP困難」や「P≠NP予想」など、今まで聞いたことはあったけれど意味がよく分からなかった言葉が登場しました。これらは、問題を計算機で解くときの難しさに関する言葉です。授業ではこれらの意味をきちんと知ることができたので、とても有意義だと感じました。

オートマトンとの出会い

この科目では、成績評価は課題を解く形式の中間レポートと、自由に課題を選択する期末レポートの2つによって行なわれます(註:中間レポートの形式は年によって変わることがあるそうです)。授業も残すところ数回となったころ、期末レポートの課題に何を選ぶか迷っていました。期末レポートは授業で扱われたテーマなら何を題材にしても良かったのですが、今までに授業で扱われた内容は抽象的な内容が多く、当初期待していたようなコンピューターと直接関わるような題材に出会えないでいました。そのとき、前述の計算機理論の話から発展して、オートマトンの話に触れられました。オートマトンは単純なコンピューターのモデルで、暗証番号を入力すると開く電子鍵などをモデル化することができます。やはりコンピューターに関連したもののほうが興味をひかれるしレポートを書きやすいと思っていたので、これはいいと思って期末レポートの題材をオートマトンに決めました。

その後、話はチューリングマシンへとさらに発展しました。チューリングマシンはオートマトンよりも少しだけ複雑なコンピューターのモデルです。一見するとやはり単純に見えるのですが、チューリングマシンは現代的なプログラミング言語と同等の処理能力を持つことが分かっており、プログラムやコンピューターの研究においては重要な概念です。これについてもさまざまな話を聞くことができ、とても興味深く思いました。

全13回の講義の最後では、暗号技術や、それを元にしたオンライン通貨技術である「ビットコイン」などの現代的な技術についても紹介されました。

受講を終えて

後半のオートマトン以降は、当初のテーマである「問題解決」を離れてただ技術的なトピックを紹介しているという印象を受けました。個人的にはこの展開は嬉しく思いました。前半は意思決定などの「問題解決」に深く関わる話題でしたが、それらは抽象的なものだったので物足りなく感じていたからです。講義の内容は自分にとっては痒いところに手が届くような内容で、特に後半では今まであやふやな部分があった知識を確かなものにすることができました。

講義では、特に前半は抽象的な内容ではあったものの、基本的には理論的な背景まで掘り進めてさまざまなトピックを紹介してくれました。例えば講義の最初の意思決定の話の中で提示された「良いとはどういうことか?」という問題については、これは一見観念的な問題に見えますが、実際の「問題解決」の現場において有用な方法論を理論的に考察してくれました。しかし、だからといって理詰めすぎてついていくのが辛い授業だというわけではなく、色々な話を広く浅く紹介してくれるので、楽しみながら気楽に聞くことができます。

講義を終えて、理論的に考えることは重要だと思うようになりました。講義の前半では、テーマに関連したさまざまな話題について闇雲に「こうするのがいい」と教えこむことはせず、理路整然とした考察に基いて結論を導いてくれました。ときには集合論の簡単な言葉を用いて「証明」という形で極めて厳密な考察を行なうこともあります。内容は前述のように日常生活に応用できそうなものだったので、そういうものについて自ら考察をしてみようと思うようになりました。

「問題解決」というものに対する考え方も講義を通してはっきりとしたものになりました。まず問題について考察し、次にその解決法も考察して、そして実行するという一連の流れを体感できました。このように、理論的に考察するのが面白いと思う人にはぜひおすすめしたい講義です。