新しい手法にはメリットとデメリットがある。しかし、量子アニーリングを検討し始めた現時点では、まず、メリットを追求するのが良い。その実績を積めば、次第に問題点にも気づき、改善提案もできるかもしれない。
(以下の3つの例題では、Fixstars AmplifyのWebページにあるデモプログラムを利用、または参考にさせていただいた。そのURLは、図4の中に示した。本記事の内容は、当方が独自に調査・試行した結果に基づいている。)
■量子アニーリングを用いた解法とは
量子アニーリングを用いた解法の最大のメリットは、「問題毎に固有の解法アルゴリズムを考えなくて良い」ことだろう。それを明確するため、ここでは「数独」と簡単な「会議スケジューリング」、および「グラフ彩色問題」の3つを例に、これらがほとんど同じ問題として扱えることを述べたい。
パズル数独は、よく知られたいくつかの制約条件のもとで、9 x 9 のマスに入れる数字を決める問題である。また、ここで扱う会議スケジューリングは、いくつかの制約条件のもとで(その仕様詳細はここに示したが)午前中に6つの会議を3つの会議室で行うために、各会議の開始時間を決める問題となる。3番目は、4色定理に基づくグラフ頂点彩色問題(典型的には地図の色塗り分け)である。
量子アニーリングを行うためには、問題の仕様を、目的関数 and/or 制約条件として表現すれば良いのである。問題固有の解法アルゴリズム(解法手順)は与える必要がない。これは、現代の数理計画法からの影響を受けているとも言えよう。今回の例題はいずれも、目的関数は与えずに、制約条件だけを設定すればよいケースとなっている。ただし(この言葉がよく出るのだが)、実際にはSDKが、制約条件を反映した目的関数(エネルギー関数)を生成していると言える。イジングによる処理は本質的にそういうものだ。
実際、図1に示した通り、これら3つの問題の構造はほとんど同じに見える。ただし、(a)と(b)では3次元QUBO配列、(c)は実質2次元QUBO配列となるが、その違いは問題ではなく、うまく行きそうだ。■量子アニーリングによる解法の実行
制約条件設定の詳細は略すが、3つの問題とも、Fixstars Amplify SDKを利用した短いPythonプログラムを作成することになる。その主要部は、制約条件を設定するために、QUBO変数(またはイジング変数)の一次または二次多項式による等式または不等式を生成するものだ。それを与えて量子アニーリングを実行し、その結果を得ることができた。図2〜図4に示す通り、数独、会議スケジューリング、グラフ頂点彩色とも極く短時間で正解が得られた。
0 件のコメント:
コメントを投稿