アルゴリズム論研究室
東北大学 大学院情報科学研究科 システム情報科学専攻
東北大学 工学部 電気情報物理工学科 情報工学コース
近年、将棋の電王戦のように、コンピュータと人間が対決するというニュースをよく耳にするようになりました。この時、コンピュータはいったいどのようにして戦っているのでしょうか?
(次の一手を導いているのでしょうか?)
将棋やオセロのように、二人のプレーヤーが交互に一手ずつ行動するゲームを考えてみましょう。このとき、コンピュータに対戦相手をさせるとすると、コンピュータには強いものから弱いものまでさまざまな強さのレベルが存在します。このコンピュータの強さを決定するものは何でしょうか。
コンピュータの行動を決定させるためには、「どのように行動するか」を示したプログラムが必要となります。このプログラムの中の「どのように」を決めるものがアルゴリズムです。つまり、アルゴリズムはある状態では「1」の行動を選択し、別の状態では「2」の行動を選択するというような、次の行動を決定するまでの手順のことを示します。
すなわち、アルゴリズムの良し悪しによってコンピュータは強くなったり弱くなったりするのです。
将棋などのゲームの単純なアルゴリズムとして自分と対戦相手が取り得るありとあらゆる手順をすべて挙げて、最も勝つ可能性の高い一手を選択するというものが考えられます。ですが、このアルゴリズムでは莫大な計算時間がかかってしまい、ゲームが進みません。
具体的には、将棋ですべての手を考えるとすると10の226乗の手を考える必要があります。これは、1秒間に1京(10の16乗)手考えられるスーパーコンピュータを用いても、10の202乗年以上かかってしまいます。宇宙の寿命が約137億(10の10乗)年と考えられているので、この計算は、宇宙が滅びても終了しません。
このように、全通りの手を考えることはできないので、いかに限られた時間の中で最善の一手を導かせるかが課題となっています。その中で、コンピュータに学習させ、局面がどれだけ自分に有利かを判断させる方法や、数手先の手を読み、次の手を考える方法などが考えられ、さまざまな工夫を凝らしたアルゴリズムについて長年研究が行われてきました。
では、実際の将棋などのゲームで使われているアルゴリズムの例を少し挙げます。皆さんが実際にゲームでコンピュータと対戦するとき、どのようなアルゴリズムが使われているか考えてみると面白いかもしれませんよ!
この方法は、自分が選択できる手の中からランダムに1つ選ぶアルゴリズムです。
貪欲法とは、定められたある基準に基づいてその場その場で最善となるように次の1手を選択するというアルゴリズムです。
min-max法とは、想定される最大の損害が最小になるように次の一手を決定するアルゴリズムです。一手を決定するために、数手先までのすべての局面を考え、局面がどの程度自分に有利かを点数づけます。そして、最も点数の高い手を選択します。
図2 min-max法の例
モンテカルロ法とは、乱数を用いて計算やシミュレーションを行う方法です。原始的なモンテカルロ法は、ある局面で、コンピュータが乱数に従い、2人の仮想プレイヤーを演じて終局まで対戦します(プレイアウト)。プレイアウトを複数回実行することで勝率を計算することができ、一番高い勝率となる手を選択するという方法です。この原始的なモンテカルロ法と他の方法を組合せることで、さまざまな強さのコンピュータを作ることができます。