変数と式のクラス

VarクラスとExprクラス

PyQBPPはQUBO/HUBO式を構築するための2つの主要なクラスを提供します:

  • Var: バイナリ変数を表し、表示用の名前が関連付けられます。
  • Expr: 整数の定数と0個以上の積の項からなる式を表します。

Var オブジェクトは qbpp.var() で作成し、イミュータブル(不変)です。 式は変数から算術演算子(+, -, *)を使って構築し、+= などの複合代入演算子で更新可能です。

以下のプログラムは、変数と式の作成を示しています:

import pyqbpp as qbpp

x = qbpp.var("x")
y = qbpp.var("y")
f = 2 * x * y - x + 1
f += 3 * y

print("f =", f)

このプログラムは以下を出力します:

f = 1 -x +2*x*y +3*y

NOTE PyQBPPはバックエンドとしてC++ QUBO++ライブラリを使用しており、内部的には Term2*x*y のような単一の積の項)と Expr(項の和)を区別しています。 しかしPyQBPPでは、この区別を意識する必要はありません。 Pythonの動的型付けが必要に応じて自動的に型変換を行うため、自然に式を記述できます。

係数型とエネルギー型

デフォルトの import pyqbpp では、係数に 32ビット整数、エネルギーに 64ビット整数c32e64)を使用します。 これは大半の問題に最適な最速の型バリアントです。

大規模な係数や任意精度が必要な場合は、サブモジュールをインポートして別の型バリアントを選択できます:

import pyqbpp as qbpp              # デフォルト: c32e64 (32ビット係数、64ビットエネルギー)
import pyqbpp.cppint as qbpp       # 任意精度 (cpp_int) — 非常に大きな係数向け

以下の型バリアントが利用可能です:

インポート 係数 エネルギー 用途
import pyqbpp 32ビット 64ビット デフォルト・最も一般的
import pyqbpp.c16e32 16ビット 32ビット 小規模問題
import pyqbpp.c32e64 32ビット 64ビット デフォルトと同じ
import pyqbpp.c64e64 64ビット 64ビット 大きな係数
import pyqbpp.c64e128 64ビット 128ビット 大きなエネルギー範囲
import pyqbpp.c128e128 128ビット 128ビット 非常に大規模な問題
import pyqbpp.cppint 無制限 無制限 任意精度

NOTE 型バリアントはインポート時に選択し、後から変更することはできません。 プログラム内の全ての変数、式、ソルバーが同じ型を使用します。

任意精度の例

import pyqbpp.cppint as qbpp

x = qbpp.var("x")
f = 123456789012345678901234567890 * x + 987654321098765432109876543210
print("f =", f)

このプログラムは以下の出力を生成します:

f = 987654321098765432109876543210 +123456789012345678901234567890*x

Back to top

Page last modified: 2026.04.10.