--- layout: page title: QPU 演算 description: 量子プログラミングのための低水準言語 ---
量子コンピュータの世界ではまだ、Python や Java のような高水準言語は登場していません。 このため、量子プログラミングでは、今後しばらくはアセンブラ命令のような低水準言語を使っていく必要があります。
初心者にとってひとつラッキーな点は、量子コンピュータの低水準言語は取っ付きやすい見た目であることです。
というのも、量子コンピュータの歴史のわりと早い段階 (90 年代半ば)
に、量子プログラムを図式として表現する方法が主流となったためです。 このため、従来の
MOV や
ADD
といった文字だけの無愛想なアセンブラ命令と比べると、量子コンピュータの演算命令はグラフィカルで構造を把握しやすく、また楽譜のような美しささえあります。
現在では、どんな量子コンピュータでも使える標準的な演算命令セットと、それぞれを表す記号 (アイコン) がほぼ決まっています。 代表的な基本演算を図にリストアップしました。 詳細は後に説明するとして、まずはどんな演算があるか眺めてみましょう。
| 記号 | 名前 | 説明 |
|---|---|---|
|
|
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 |