OpenQASM における古典レジスタ
量子ビットが量子コンピューティングの構成要素であるように、古典ビットは古典コンピューティングの基礎です。OpenQASM には、ビットをまとめて古典レジスタとしてグループ化する機能があり、これは量子操作による測定結果を扱う際に特に役立ちます。この章では、OpenQASM で古典レジスタを作成して利用する方法を学びます。
古典レジスタを理解する
古典レジスタは古典プログラミングにおける配列に似ていますが、2進状態の 0 または 1 を表すビットを保持するように設計されています。
OpenQASM では、古典レジスタは creg キーワードと識別子、そしてサイズとしてのビット数を用いて宣言します。
creg <identifier>[<size>];
識別子は OpenQASM の命名規則に従う必要があり、サイズは正の整数でなければなりません。
実験: 古典レジスタの作成と活用
量子測定の結果を記録するための古典レジスタを作成する実験を見てみましょう123456。
OPENQASM 2.0; // Specify OpenQASM version [^1]
include "qelib1.inc"; // Include the standard quantum library [^2]
// Quantum register with a single qubit and classical register with two bits
qreg qubit[1]; // Single-qubit quantum register [^4]
creg bits[2]; // Two-bit classical register [^3]
// Prepare qubit in a superposition state
h qubit[0]; // Apply Hadamard gate to the qubit [^5]
// Measure the qubit and store the result in the first bit of classical register
measure qubit[0] -> bits[0]; // Measurement operation [^6]
// The second bit remains in its initial state (0)
この組み合わせ実験では、量子レジスタが1つの量子ビットを保持し、それをアダマールゲートで重ね合わせ状態に準備します。次に量子ビットの状態を測定し、その測定結果を2ビットの古典レジスタの最初のビットに格納します。レジスタの2番目のビットは変更されないままであり、複数の測定結果を格納したり、余ったビットを他の古典計算に活用したりできることを示しています。
1ビットの古典レジスタ
OpenQASM では単独の古典ビットを宣言することはできませんが、1ビットだけが必要な場面では1ビットのレジスタを宣言できます。
// One-bit classical register declaration
creg flag[1]; // Single-bit register named 'flag' [^3]
まとめると、OpenQASM の古典レジスタは量子測定の結果を取得して保持するために不可欠であり、量子アルゴリズムで必要となるさらなる処理を可能にします。