common.title

Docs
Quantum Circuit
TYTAN CLOUD

QUANTUM GAMING


Overview
Contact
Event
Project
Research

Terms of service (Web service)

Terms of service (Quantum and ML Cloud service)

Privacy policy


Sign in
Sign up
common.title

D-Waveにおける数独ライブラリの解説

Yuichiro Minato

2020/11/07 10:03

#量子アニーリング #D-Wave #数独 #Leap

1

D-Waveに、とても便利な例題が沢山収録されているライブラリがありました。この中で数独を見てみましょう。

https://github.com/dwave-examples

数独

https://github.com/dwave-examples/sudoku

こちらになります。

ツール

ツールはD-Waveから提供されているD-Wave Oceanというものを利用できます。ダウンロードの上ご利用ください。

https://docs.ocean.dwavesys.com/en/stable/

pip経由でのインストールは、

pip install dwave-ocean-sdk

となります。

コード

先にコードをみましょう。メインのコードはこちらから手に入ります。

https://github.com/dwave-examples/sudoku/blob/master/sudoku.py

コード自体はとてもシンプルでわかりやすいものです。数独の満たすべき問題を式の形で実装し、ファイルを指定することで、式を自動的に作って解いてくれます。解く際に利用するのはD-Waveのマシンですが、ここではKerberosというハイブリッドシステムを利用していますので、そこだけ注意が必要です。

ハイブリッドアルゴリズム

解くまえに、Kerberosについてです。KerberosはハイブリッドソルバーでD-Waveを使った場合と使わない場合を複数計算をします。また、今回の数独問題は量子ビット数が700近く必要ですので、2020現在のD-Waveの最新マシンであるAdvantage System1.1であっても、一度で解くことはできません。ですので問題分割が利用されており、それによって多少前後処理の時間がかかります。

手順

問題を解く手順

1、問題の読み込み。問題が指定されない場合にはサンプルファイル

2、問題から定式化

3、Kerberosサンプラーに投入

4、答えをもらって、チェック

となります。数独は出てきた答えがあっているのかチェックが容易ですので、楽ですね。

実際にやってみると、今回はKerberosではなく、一部を改造してLeapHybridで実行してみました。

[[3, 8, 9, 7, 5, 2, 6, 1, 4], [2, 5, 1, 6, 4, 9, 8, 7, 3], [7, 4, 6, 3, 8, 1, 9, 2, 5], [8, 1, 2, 5, 7, 4, 3, 6, 9], [6, 9, 4, 8, 1, 3, 2, 5, 7], [5, 3, 7, 9, 2, 6, 4, 8, 1], [9, 7, 3, 2, 6, 5, 1, 4, 8], [4, 2, 8, 1, 3, 7, 5, 9, 6], [1, 6, 5, 4, 9, 8, 7, 3, 2]]
The solution is correct

このように、9*9の配列と、正解チェックがされて戻ってきました。かなり簡単に利用できますので、是非やってみてください。tokenの設定の仕方だけちょっとコツが必要ですので、最新の利用方法をチェックしてみてください。

数独は面白い

D-Waveの実機を利用した数独はインターネットを介して、実際にカナダのマシンで解かれて戻ってきます。D-Waveの登録で無料時間もありますので、ぜひ利用してみて体感してみてください。

License

Released under the Apache License 2.0. See LICENSE file.

© 2025, blueqat Inc. All rights reserved