初級量子アニーリングプログラミング入門講座「QUBOプログラミングの基本形」についての質問です(https://www.quanta-ml.com/challenge-page/acb748fc-843d-440f-bdee-fc66115d8392?origin=auto_suggest).
H = (x + y + z - 2)^2
のQUBO式において, x, y, zのいずれか2つに1, 1つに0を代入することでH=0にするのですが(2、QUBO式を作成する), 計算結果後のエネルギー値は-4.0になっています(4、計算を行う). Hはエネルギー値ではないのでしょうか. だとすると, エネルギー値はどのように計算するのでしょうか. 自分が"元の式"をQUBO式のことだと勘違いしているのでしょうか.
ありがとうございます。とても的確なご指摘です。
H = (x + y + z - 2)^2
において、1を2つ、0を1つ代入するとH=0でエネルギーが最小になるという考え方はまったく正しいです。
疑問が生じているのは、コンパイルから計算にかけて(教材に)説明不足のことがあるためです(え?)。コンパイルの際に、QUBO式を展開したときの定数項4(-2の2乗)がオフセットとして算出されます。そして、解のエネルギーにオフセットを足したものが、QUBO式Hに解を代入した値と一致します。つまり、Hの値と解のエネルギーにはオフセット分のズレがあります。
実際のコーディングの際はprint(offset)を確認して、解のエネルギーが-offset(マイナスオフセット)と一致していれば理想的だ(H=0だ)、といった判断をする形になります。このことは後半の「チュートリアル」の中に解説が出てきます。
なお、なぜオフセットというややこしい仕組みを取っているかは私も明確に分からず、引き続き調べさせてください。TYTANパッケージがそう作られている理由は、他の既存アニーリングサービスの仕組みに合わせたためです。それが慣習なのか数学的・物理的意味があるのかなど、分かり次第またご報告いたします!