--- layout: page title: QPU 演算 description: 量子プログラミングのための低水準言語 ---

量子コンピュータの世界ではまだ、Python や Java のような高水準言語は登場していません。 このため、量子プログラミングでは、今後しばらくはアセンブラ命令のような低水準言語を使っていく必要があります。

初心者にとってひとつラッキーな点は、量子コンピュータの低水準言語は取っ付きやすい見た目であることです。 というのも、量子コンピュータの歴史のわりと早い段階 (90 年代半ば) に、量子プログラムを図式として表現する方法が主流となったためです。 このため、従来の MOV や ADD といった文字だけの無愛想なアセンブラ命令と比べると、量子コンピュータの演算命令はグラフィカルで構造を把握しやすく、また楽譜のような美しささえあります。

Quantum Circuit Design for Training Perceptron Models より引用

現在では、どんな量子コンピュータでも使える標準的な演算命令セットと、それぞれを表す記号 (アイコン) がほぼ決まっています。 代表的な基本演算を図にリストアップしました。 詳細は後に説明するとして、まずはどんな演算があるか眺めてみましょう。

記号 名前 説明
NOT または X ビットペアの入れ替え
CNOT 条件付き NOT
CCNOT または Toffoli (トフォリ) 条件2個付き NOT
H または Hadamard (アダマール) シンプルな重ね合わせの作成
Phase Shift (位相シフト) 相対位相を回転
CPHASE 条件付きの Phase Shift
CZ CPHASE (π 回転)
MEASUREMENT (測定) 量子ビットを測定し 0 または 1 を返す
WRITE 指定した値で量子ビットを初期化する
Square root of NOT X の平方根 (2 度適用することで X と同等の作用)
SWAP 2 つの量子ビットを交換
CSWAP 条件付き SWAP