量子アルゴリズム:Grover探索とその応用
Atsushi Matsuo(2024年5月10日)
元の講義のPDFをダウンロードできます。コードスニペットは静止画像のため、一部が非推奨になっている可能性があります。
この実験を実行するおおよそのQPU時間は2秒です。
1. Groverのアルゴリズム入門
このノートブックは、量子コンピューティングにおけるユーティリティへの道に関する講義シリーズの第4回です。ここでは、Groverのアルゴリズムについて学びます。
Groverのアルゴリズムは、古典的な探索手法に対して2乗の高速化を実現することから、最もよく知られた量子アルゴリズムの一つです。古典コンピューティングでは、個の要素からなる未ソートのデータベースを検索するには の時間計算量が必要であり、最悪の場合、各要素を個別に調べなければなりません。しかし、Groverのアルゴリズムでは量子力学の原理を活用することで、 の時間でこの探索を実現し、目的の要素をより効率的に特定できます。
このアルゴリズムは振幅増幅を用います。これは量子重ね合わせにおける正解状態の確率振幅を増大させるプロセスであり、より高い確率でその状態を測定できるようにします。この高速化により、Groverのアルゴリズムは単純なデータベース検索を超えた様々な応用において価値を持ちます。特にデータセットが大きい場合に有効です。アルゴリズムの詳細な説明は、Groverのアルゴリズムノートブックをご参照ください。
Groverのアルゴリズムの基本構成
Groverのアルゴリズムは4つの主要なコンポーネントで構成されています:
- 初期化:すべての可能な状態の重ね合わせを設定します。
- オラクル:ターゲット状態の位相を反転させることでマークを付けるオラクル関数を適用します。
- 拡散オペレータ:マークされた状態の確率を増幅するための一連の操作を適用します。
これらの各ステップは、アルゴリズムを効率よく機能させるうえで重要な役割を果たしています。各ステップの詳細な説明は後ほど提供されます。
2. Groverのアルゴリズムの実装
2.1 準備
量子回路を実行するために必要なライブラリをインポートし、環境をセットアップします。
# Added by doQumentation — required packages for this notebook
!pip install -q qiskit qiskit-aer qiskit-ibm-runtime
%config InlineBackend.figure_format = 'svg' # Makes the images look nice
# importing Qiskit
from qiskit import QuantumCircuit, ClassicalRegister, QuantumRegister
# import basic plot tools
from qiskit.visualization import plot_histogram
ステップ1:問題を量子回路と演算子にマッピングする
4つの要素からなるリストを考えます。目標は、特定の条件を満たす要素のインデックスを特定することです。例えば、値が2である要素のインデックスを見つけたいとします。この例では、量子状態 がこの条件を満たす要素のインデックスを表しており、値2が格納されている位置を指しています。
ステップ2:ターゲットハードウェア向けの最適化
1:初期化
初期化ステップでは、すべての可能な状態の重ね合わせを作成します。これは、量子ビットレジスタの各量子ビットにアダマールゲートを適用することで実現され、 個の状態の等しい重ね合わせが得られます。数学的には次のように表されます: