クイックスタート

このページでは,クイックスタートの手順の概要を説明します. Windows 11 の WSL 上に Hi-QUBO をインストールするより詳細な手順は Windows (WSL) でのクイックスタート をご覧ください.

インストール

インストール の手順に従って Hi-QUBO をインストールしてください. Windows ユーザーは Windows (WSL) でのクイックスタート をご覧ください.

サンプルプログラムのコンパイルと実行

Hi-QUBO サンプルプログラムの作成

以下の Hi-QUBO サンプルプログラムを作成し,ファイル test.cpp として保存してください:

quick-start-program1.cpp
#include <qbpp/easy_solver.hpp>
#include <qbpp/qbpp.hpp>

int main() {
  auto a = qbpp::var("a");
  auto b = qbpp::var("b");
  auto c = qbpp::var("c");
  auto f = qbpp::sqr(a + 2 * b + 3 * c - 4);
  f.simplify_as_binary();

  std::cout << "f = " << f << std::endl;

  auto solver = qbpp::EasySolver(f);
  auto sol = solver.search({{"time_limit", 10}, {"target_energy", 0}});
  std::cout << "sol = " << sol << std::endl;
}

このプログラムでは,次の式\(f\)を展開整理して得られたQUBO式をEasySolverで解を求めます.

\[ \begin{aligned} f &= (a+2b+3c-4)^2 \end{aligned} \]

プログラムのコンパイル

test.cpp をコンパイルして実行ファイル test を生成します:

g++ test.cpp -o test -std=c++17 -ldl -pthread

このコマンドにより,test という名前の実行ファイルが作成されます. コンパイラオプションの意味は以下の通りです:

  • -std=c++17: C++17 標準を使用します.

  • -ldl: 動的ローダライブラリをリンクします(Hi-QUBO は実行時に dlopen で .so をロードします).

  • -pthread: POSIX スレッドのライブラリをリンクします(Hi-QUBO の .so が std::thread を内部で使用するため必須).

プログラムの実行

test を以下のように実行すると,\(f\)を展開して得られた式と解を表示します:

./test
f = 16 -7*a -12*b -15*c +4*a*b +6*a*c +12*b*c
sol = 0:{{a,1},{b,0},{c,1}}

次のステップ

  1. ライセンスをアクティベートしてください.詳細は ライセンス管理 をご覧ください.

  2. Hi-QUBO の基本を学びましょう.Hi-QUBO (C++) の 基礎 から始めてください.

  3. ケーススタディ で Hi-QUBO プログラムの例を探索してください.

このページでは,PyQBPP のクイックスタート手順の概要を説明します. Windows 11 の WSL 上に PyQBPP をインストールするより詳細な手順は Windows (WSL) でのクイックスタート をご覧ください.

インストール

インストール の手順に従って PyQBPP をインストールしてください. Windows ユーザーは Windows (WSL) でのクイックスタート をご覧ください.

PyQBPP は PyPI で配布されており,通常は以下のコマンドでインストールできます:

pip install pyqbpp

PyQBPP は qbpp_*.so 共有ライブラリを同梱しており,実行時にロードします.

サンプルプログラムの作成と実行

PyQBPP サンプルプログラムの作成

以下の PyQBPP サンプルプログラムを作成し,test.py として保存してください:

quick-start-program1.py
import pyqbpp as qbpp

a = qbpp.var("a")
b = qbpp.var("b")
c = qbpp.var("c")
f = qbpp.sqr(a + 2 * b + 3 * c - 4)
f = qbpp.simplify_as_binary(f)
print("f =", f)

solver = qbpp.EasySolver(f)
sol = solver.search(time_limit=10, target_energy=0)
print("sol =", sol)

このプログラムでは,次の式 \(f\) を展開整理して得られた QUBO 式を EasySolver で解を求めます.

\[ \begin{aligned} f &= (a+2b+3c-4)^2 \end{aligned} \]

このサンプルで使用している主な API は以下の通りです:

  • qbpp.var(name): 指定した名前のバイナリ変数を生成します.

  • qbpp.sqr(expr): 式を二乗して展開した結果を返します.

  • qbpp.simplify_as_binary(expr): バイナリ(0/1)ルール(x*x = x,x*~x = 0 等)を適用し,同類項をまとめます.

  • qbpp.EasySolver(expr): 指定した QUBO 式に対するソルバーを生成します.

  • solver.search(**kwargs): ソルバーを実行します.time_limit(秒)や target_energy などのパラメータはキーワード引数で渡します.

プログラムの実行

test.py を以下のように実行すると,\(f\) を展開して得られた式と解を表示します:

./test
f = 16 -7*a -12*b -15*c +4*a*b +6*a*c +12*b*c
sol = 0:{{a,1},{b,0},{c,1}}

出力の 1 行目は \(f\) を展開した QUBO 式です. 2 行目はソルバーが見つけた解で,エネルギー値(この例では 0 となり target_energy に一致)と変数割り当て \((a, b, c) = (1, 0, 1)\) を示しています.

次のステップ

  1. ライセンスを有効化してください.詳細は ライセンス管理 を参照してください.

  2. PyQBPP の基礎を学びましょう.PyQBPP (Python) の 基礎 から始めてください.

  3. ケーススタディ で PyQBPP プログラムの例を探索してください.