QPU 命令その 1

CPU 命令との違い

量子コンピュータ版 論理演算

QPU 命令は、CPU で実行される AND や NOT, OR といった命令 (論理演算) の量子ビット版です。 QPU 命令と CPU 命令には、次の大きな違いがあります。

QPU 命令は重ね合わせ状態に作用できる

CPU 論理演算は 0 または 1 のみを入力・出力します。 0 と 1 は古典 1 ビットで表せる値のすべてです。

一方で QPU 命令は量子ビットを入出力します。 量子ビットは 0 と 1 だけでなく、0 と 1 の確率 (重ね合わせ) を持つことができ、また位相という角度データも持つのでした。 QPU 命令は量子ビットの持つ確率と位相の両方に作用します。

QPU命令

QPU 命令の大部分は逆方向の命令 (逆演算) を持つ

AND などの CPU 命令では、出力の 1 ビットから入力の 2 ビットを知ることはできません。 たとえば、AND の出力が 0 だった場合には、入力は 00/01/10 の 3 通りで、どれか 1 つに特定することはできません。 これを「AND は非可逆である」と言います。

一方でほとんどの QPU 命令は可逆です。 つまりある QPU 命令に対応する逆命令 (逆演算) を適用することで、出力の量子ビットから元々の入力された量子ビットを得ることができます

命令
逆演算

後に詳しく見ていきますが、逆演算は量子プログラミングでひんぱんに使うテクニックの 1 つです。

たとえば量子ビット同士をもつれさせるいくつかの QPU 命令の後に逆演算を施すと、もつれた量子ビットを元通りに戻すことができます。 この量子ビットをもつれさせる/ほどくという操作は、量子プログラミングの基本的なテクニックです量子もつれもつれをほどくで説明しています。

逆演算は実行中にぐちゃぐちゃになった量子ビットの状態をリセットして、元の初期状態に戻すのにも使えます。 たとえばある処理内の一時変数として使った量子ビットを、処理が終了した後リセットして 0 に戻し、再利用する場合などですかけ算回路で説明しています。

これらのテクニックの基本となる、代表的な QPU 命令と逆演算を具体的に見ていきましょう。