やること
QUBOアニーリングのDiscordコミュニティで面白い問題が共有されました。アニーリングでピタゴラス数を見つける、というものです。
ピタゴラス数は、x2 + y2 = z2 を満たす自然数 (x, y, z) の組です。
ピタゴラス数(英: Pythagorean triple)とは、a2 + b2 = c2 を満たす3つの自然数の組 (a, b, c) のことである。これはピタゴラスの定理に由来しており(中略)最小のピタゴラス数は (3, 4, 5) である。
Wikipedia「ピタゴラス数」
「qubomaster」認定試験にちょうど良いので、実力テスト2として調整しました。腕に自信がある方は挑戦してみてください。認定試験として挑戦する場合は別途その指示に従ってください。
TYTANについて
「TYTAN」はOSSのアニーリングSDKです。
筆者はチュートリアルコースを担当しています。
discordコミュニティもあるので気軽に質問できます。どなたでも参加できます → https://discord.gg/qT5etstPW8
チュートリアルを終えて試験に合格するとblueqat社が認定する「qubomaster」という資格が与えられます。qubomasterになると(blueqatサイト上で)認定バッジが付与され、有償業務の受託可能者リストに入ります。
おさらい
QUBOで設定できる条件式についてはこちらの記事にまとめてあります。暗記する必要はありませんが概要は把握しておくと良さそうです。
これまでのQUBOアニーリング系の記事はサイドバーの「カテゴリ一覧」→「量子コンピュータ」から絞れます。
実力テスト問題2
ピタゴラス数は、x2 + y2 = z2 を満たす自然数 (x, y, z) の組です。参考→ Wikipedia「ピタゴラス数」
(x, y, z) ともに20未満のピタゴラス数(原始ピタゴラス数)をすべて求めてください。
想定される解は
- 原始ピタゴラス数:(3, 4, 5), (5, 12, 13), (8, 15, 17)
- それらの倍数:(6, 8, 10), (9, 12, 15)
の5組で、少なくとも原始ピタゴラス数の3組が見つかれば良いこととします。また、xとyは入れ変わっても差し支えありません。
提出方法、注意事項など
解答は、そのまま実行するだけのpythonコードを「.py」または「.ipynb」のファイル形式で以下フォームから提出してください。すぐに自動返信メールが届きます。
※100KBまでの.py, .ipynbファイルのみ受け付けます
※受付完了メールが自動送信されます
▼注意事項
- テキスト欄やコメントアウトにより最低限の説明や思考過程を含めてください
- その際、チュートリアルの「おすすめコース」のどれと関連があるかにも触れてください
- 説明のための図は必ずしも必要ありません
- アニーリングのソルバーには必ずTYTANパッケージを使用してください
- 必ずしも1回の実行で正解が得られる必要はなく、正解が得られることが期待できるコードであれば問題ありません
▼合格条件
- QUBO条件式が妥当であること
- 説明や思考過程が妥当であること
- 十分な可読性のPythonコードであること
- チュートリアル「おすすめコース」を把握していること