動画(ハンズオン)

ブラウザで動く C++ Playground にプログラムを入力して実行し、結果を見てから機能を説明する、初心者向けのシリーズの C++ 版です。 コンパイラを用意しなくても、動画と一緒に入力しながら進められます。 同じ内容の Python 版は、Python 版のページにあります。 動画は YouTube のチャンネル QUBO++ で公開していて、再生リスト QUBO++ ハンズオン(日本語) に Python 版と一緒にまとめています。 画像をクリックすると、このページで再生できます。 QUBO++ の使い方を体系的に説明する動画は動画(チュートリアル)、具体的な問題を解く例は動画(ケーススタディ)のページにあります。

QUBO++ ハンズオン #1 式を作って整理する(C++)(9:26・YouTube)C++ の Playground にプログラムを入力し、Compile と Run を押して、出力を見ながら説明します。#include と main 関数、qbpp::var を読み、変数 x と y で (2x+3y-2) の 2 乗を作って式が自動的に展開されることを確かめ、qbpp::simplify・qbpp::simplify_as_binary・qbpp::sqr で整理し、式に変数の値を渡して計算します。
QUBO++ ハンズオン #2 ソルバーで解く(C++)(6:58・YouTube)第 1 回の式 (x+2y+3z-3) の 2 乗を一番小さくする値を、qbpp::ExhaustiveSolver で探します。std::cout で表示した解と sol(x)・sol.energy()、best_energy_sols ですべての最適解、all_sols ですべての解を見たあと、ヘッダとソルバーの名前を書き換えて EasySolver に切り替え、2 つのソルバーを比べます。
QUBO++ ハンズオン #3 変数の配列(C++)(7:25・YouTube)変数の配列を使って、8 個の数を和が等しい 2 つのグループに分けます。qbpp::var に名前と個数を渡して変数の配列を作り、qbpp::array と qbpp::sum で 2 つのグループの和 P と Q を式にして、(P − Q) の 2 乗を ExhaustiveSolver で最小にします。sol(x) で配列の値を取り出し、すべての最適解を表示したあと、std::vector と for で作った 1 から 40 までの数を EasySolver で分けます。
QUBO++ ハンズオン #4 制約(C++)(6:11・YouTube)10 個の品物から、重さの合計を 50 以下にして価値の合計が最大になる選び方を探します(ナップサック問題)。価値の合計にマイナスを付けて最小にし、qbpp::cons で重さの制約を加えて、制約の値と重みが式にどう効くかを見ます。sol.energy() と f.cons(sol) を表示し、重みを小さくすると制約を破った解が選ばれることを確かめたあと、選ぶ個数の制約を加えます。

Back to top

Page last modified: 2026.11.05.

© 2026 中野浩嗣, 広島大学