量子最適化で楽しむ数独アプリのご紹介
今回は、量子最適化技術を応用した数独(ナンバープレイス)アプリについてご紹介します。もともとはD-Waveの量子アニーリングマシンを使って問題生成をしていましたが、今回のアップデートでは、フロントエンドのHTMLに移植することで、誰でも手軽に使えるようにしました。
このアプリには、主に二つの使い方があります。
1. 数独ジェネレーターとして使う
まず一つ目の使い方は、数独の問題を作成する「ジェネレーター」としての利用です。使い方は非常にシンプルです。初期状態で何も数字を入力せずに「SUDOKU」を押すと、全てのマス目が自動で埋められます。
そこから自分で数字を選んで入力し、一部を固定して再度「SUDOKU」を押すと、その固定された数字から問題が成り立つかどうかをチェックすることができます。特に、何度解いても常に同じ解が得られるようであれば、その問題は「一意解」を持つ、完成度の高い数独問題と言えるでしょう。
2. 数独ソルバーとして使う
もう一つの使い方は、実際の数独問題を入力して「ソルバー」として使う方法です。あらかじめ数字が入力されている問題を画面上に入力し、「SUDOKU」を押すことで、解答が得られます。
この数独アプリでは、問題をQUBO(Quadratic Unconstrained Binary Optimization)形式に変換して、制約を満たすように最適化計算を行っています。これは「制約充足問題」と呼ばれるタイプの問題で、量子最適化と非常に相性の良い応用例です。特にサンプル生成が早いので、実機でこれを試すと一瞬でたくさんの問題を作ってくれます。
ジェネレーターは量子、ソルバーは古典がいいと思いますが、この仕組みだと両方使えるので二つ用意する必要がないので、これを使っていれば数独を作ったり解いたりできます。