# クイックスタート
:::{container} prog-cpp
このページでは,クイックスタートの手順の概要を説明します.
Windows 11 の WSL 上に Hi-QUBO をインストールするより詳細な手順は [Windows (WSL) でのクイックスタート](../startUp/WSL-quick-start.md) をご覧ください.
## インストール
[**インストール**](../downloadInstall/apt-install.md) の手順に従って Hi-QUBO をインストールしてください.
Windows ユーザーは [**Windows (WSL) でのクイックスタート**](../startUp/WSL-quick-start.md) をご覧ください.
## サンプルプログラムのコンパイルと実行
### Hi-QUBO サンプルプログラムの作成
以下の Hi-QUBO サンプルプログラムを作成し,ファイル **`test.cpp`** として保存してください:
```{literalinclude} /../programFiles/cppPrograms/startUp/quick-start-program1.cpp
:language: cpp
:caption: quick-start-program1.cpp
```
このプログラムでは,次の式$f$を展開整理して得られたQUBO式をEasySolverで解を求めます.
$$
\begin{aligned}
f &= (a+2b+3c-4)^2
\end{aligned}
$$
### プログラムのコンパイル
**`test.cpp`** をコンパイルして実行ファイル **`test`** を生成します:
```{include} /../programFiles/markDown/startUp/quick-start.md
:start-after:
:end-before:
```
このコマンドにより,test という名前の実行ファイルが作成されます.
コンパイラオプションの意味は以下の通りです:
- **`-std=c++17`**: C++17 標準を使用します.
- **`-ldl`**: 動的ローダライブラリをリンクします(Hi-QUBO は実行時に `dlopen` で .so をロードします).
- **`-pthread`**: POSIX スレッドのライブラリをリンクします(Hi-QUBO の `.so` が `std::thread` を内部で使用するため必須).
### プログラムの実行
`test` を以下のように実行すると,$f$を展開して得られた式と解を表示します:
```{include} /../programFiles/markDown/startUp/quick-start.md
:start-after:
:end-before:
```
## 次のステップ
1. ライセンスをアクティベートしてください.詳細は [**ライセンス管理**](../licenseManage/license-manage.md) をご覧ください.
2. Hi-QUBO の基本を学びましょう.[**Hi-QUBO (C++)**](../basic/variables-and-expressions.md) の **基礎** から始めてください.
3. [**ケーススタディ**](../example/real/cutting-stock.md) で Hi-QUBO プログラムの例を探索してください.
:::
:::{container} prog-python
このページでは,PyQBPP のクイックスタート手順の概要を説明します.
Windows 11 の WSL 上に PyQBPP をインストールするより詳細な手順は [Windows (WSL) でのクイックスタート](../startUp/WSL-quick-start.md) をご覧ください.
## インストール
[**インストール**](../downloadInstall/apt-install.md) の手順に従って PyQBPP をインストールしてください.
Windows ユーザーは [**Windows (WSL) でのクイックスタート**](../startUp/WSL-quick-start.md) をご覧ください.
PyQBPP は PyPI で配布されており,通常は以下のコマンドでインストールできます:
```{include} /../programFiles/markDown/startUp/quick-start.md
:start-after:
:end-before:
```
PyQBPP は `qbpp_*.so` 共有ライブラリを同梱しており,実行時にロードします.
## サンプルプログラムの作成と実行
### PyQBPP サンプルプログラムの作成
以下の PyQBPP サンプルプログラムを作成し,**`test.py`** として保存してください:
```{literalinclude} /../programFiles/pythonPrograms/startUp/quick-start-program1.py
:language: python
:caption: quick-start-program1.py
```
このプログラムでは,次の式 $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$ を展開して得られた式と解を表示します:
```{include} /../programFiles/markDown/startUp/quick-start.md
:start-after:
:end-before:
```
出力の 1 行目は $f$ を展開した QUBO 式です.
2 行目はソルバーが見つけた解で,エネルギー値(この例では 0 となり `target_energy` に一致)と変数割り当て $(a, b, c) = (1, 0, 1)$ を示しています.
## 次のステップ
1. ライセンスを有効化してください.詳細は [**ライセンス管理**](../licenseManage/license-manage.md) を参照してください.
2. PyQBPP の基礎を学びましょう.[**PyQBPP (Python)**](./) の **基礎** から始めてください.
3. [**ケーススタディ**](../example/real/cutting-stock.md) で PyQBPP プログラムの例を探索してください.
:::