Qiskitで量子回路の行列を確認する(unitary_simulator)
一般的に、量子ビットに対するゲート操作と、その集合である量子回路はユニタリ行列により表される。
Qiskitで量子回路の行列表現を確認するにはunitary_simulator
を使用する。
unitary_simulator
はAer
のバックエンドとして提供され、量子回路に対応する行列を出力することができる。
UnitarySimulator — Qiskit Aer 0.12.1 documentation
例えば以下のように、1つのアダマールゲートだけで構成される回路があるとする。
from qiskit import QuantumCircuit qc = QuantumCircuit(1) qc.h(0) qc.draw()
この行列表現は以下のように出力できる。
from qiskit import Aer, execute job = Aer.get_backend('unitary_simulator').run(qc) print(job.result().get_unitary()) # Operator([[ 0.70710678+0.00000000e+00j, 0.70710678-8.65956056e-17j], [ 0.70710678+0.00000000e+00j, -0.70710678+8.65956056e-17j]], input_dims=(2,), output_dims=(2,))
これは実際の値と一致する。
または、以下のようにバックエンドのrun
メソッドを使用することもできる。どちらも得られる結果は同じ。
from qiskit import Aer job = execute(qc, Aer.get_backend('unitary_simulator')) print(job.result().get_unitary()) # Operator([[ 0.70710678+0.00000000e+00j, 0.70710678-8.65956056e-17j], [ 0.70710678+0.00000000e+00j, -0.70710678+8.65956056e-17j]], input_dims=(2,), output_dims=(2,))
なお、量子ビットの状態ベクトルを確認するstatevector_simulator
については以下の記事を参照。
また、回路の初期化方法については以下の記事を参照。