コンピュータのプログラムに書き込まれ、コンピュータがより速く大量に問題を解いていくための計算の手順を、アルゴリズムといいます。非常に大雑把にいうと、コンピュータのための数学といえます。私はアルゴリズム理論を研究しています。パズル的な要素を多分に含みますので、どんな感じかを掴むために、パズルを考えてみましょう。
2枚の紙AとBに、それぞれ1以上の整数が書かれています。(1)もしA(の数字)<B(の数字)の場合は、Aの数字を10倍します。(2)逆にA>Bの場合、Aの数字からBの数字を引いて、Aの数字とします。(3)AとBが同じ数字になれば、処理を停止します。
例えばAに4、Bに3が書かれている場合、(2) A>Bの状態なので、Aは、(4-3=)1となります。この時点で(1) A<Bの状態になるので、Aを10倍し、(1×10=)10となります。この時点で、AよりBの数の方が大きくなるので、Aは、(10-3=)7となります。この時点でも、まだAの数の方が大きいので、Aは(7-3=)4となります。ところで、この4は最初に書かれていたAの数です。よって上述の過程を無限に繰り返すことになり、処理が停止しません。ではAに3、Bに4が書かれている場合はどうでしょう。この場合は、最終的に処理が停止します。では、A、Bに書かれている数字がどのような場合に、処理が停止するのでしょうか。
この(1)~(3)のようにある一連の処理を記述したものを手続きと呼びます。実はこのパズルの例は、我々がよく知っている、割り算を手続きとして表現したものです。AがBで割り切れるときに手続きが停止します。アルゴリズムとは、どんな入力(この例ではAとBに最初に書かれる数)でも必ず停止することが保証されている手続きのことです。この例の場合は、4÷3=1.333・・・と循環小数となり手続きは停止しませんね。また、(1)の「Aの数字を10倍する」というルールを、「Aの数字を2倍する」に変えて考えてみることで、2進数の循環小数について考察することができます。
ものごとを構造で表すグラフ理論
もう1つの私の研究テーマは「グラフ理論」です。これは、折れ線グラフや棒グラフのことではありません。グラフ理論とは、対象(モノ)を点(頂点)で表し、対象間の関係を線(辺)で結んだ図形を“グラフ”と呼び、モノとモノがどのように関わり合っているかという構造を表現(数理モデル化)したものです。数理モデル化することで、コンピュータで処理や解析ができるようになります。例えば、ウエブページとそのリンクは50億頂点と1000億辺を持つといった具合にグラフ化してコンピュータで解析することで、インターネットに関する知見を得ることができます。
数理モデルが便利なツールであることを感じてもらうために、ここでもパズルを考えてみましょう。目、手、両、下、線、上の6文字を並べ替えて、(2文字)熟語が連続するように、つまりしりとりになるように並べたいとしましょう。どんな並べ方があるかを考えるために、下図のように、問題をグラフ化して考えると考え易くなります。このグラフは、2つの漢字(頂点)の間に矢印(辺)の向きで熟語が作れることを意味しています。このグラフから、入ってくる矢印がない「両」からスタートすることがわかります。両目下線上手、両目線上手下、両目線上下手、両目上手下線、両手下線上目など、複数解があることも容易にわかります。また、この数理モデル化により、2字熟語のデータベースを使って数万個の2字熟語しりとり問題(とその解)をコンピュータで自動生成することもできます。
数学というと数式だらけと思うかもしれませんが、たしかに必要な時は数式を使いますが、数式を使わないで考えることも実際多いです。パズルを解くような楽しさがこの分野にはあると思います。
一般的な傾向は?
- ●主な業種は→IT関連
- ●主な職種は→研究・開発
- ●業務の特徴は→技術面の環境変化が激しい
分野はどう活かされる?
最近は、医療、農業、建設業、サービス業など様々な分野・職種でICT技術が必要になっているため、就職先は多様化しています。効率よく動作するコンピュータの設計やコンピュータに効率よく作業させるためのプログラミングが、より高いレベルで、またより広範囲で求められています。また、大量かつ高速なデータ処理が可能になった現代では、「情報」や「データ」の価値が高まり、安全に情報を伝えたり、重要な情報を守ったりする、情報キュリティの技術も、分野・業種を問わず重要になっています。