问题描述
文献中 CNOT 门的正则矩阵表示为:
CNOT =
\begin{bmatrix}
1 & 0 & 0 & 0\\
0 & 1 & 0 & 0\\
0 & 0 & 0 & 1\\
0 & 0 & 1 & 0
\end{bmatrix}
然而在 Qiskit 中,矩阵表示为 CNOT =
\begin{bmatrix}
1 & 0 & 0 & 0\\
0 & 0 & 0 & 1\\
0 & 0 & 1 & 0\\
0 & 1 & 0 & 0
\end{bmatrix}
这与大端/小端问题有关吗?有没有办法像在文献中恢复矩阵一样表示我的矩阵?
解决方法
是的,正如您提到的,这与 Qiskit 中的小端位序有关。大多数教科书(以及您展示的第一个矩阵)都采用大端顺序。
如果您想了解更多信息,可以查看这些帖子/文档:
- https://qiskit.org/documentation/tutorials/circuits/3_summary_of_quantum_operations.html#Basis-vector-ordering-in-Qiskit
- https://quantumcomputing.stackexchange.com/questions/8244/big-endian-vs-little-endian-in-qiskit
如果您想将 Qiskit 电路转换为大端,您可以使用 reverse_bits
方法:
from qiskit import QuantumCircuit
from qiskit.quantum_info import Operator
circuit = QuantumCircuit(2)
circuit.cx(0,1)
print('Little endian:')
print(Operator(circuit))
print('Big endian:')
print(Operator(circuit.reverse_bits()))
给出:
Little endian:
Operator([[1.+0.j,0.+0.j,0.+0.j],[0.+0.j,1.+0.j],1.+0.j,0.+0.j]],input_dims=(2,2),output_dims=(2,2))
Big endian:
Operator([[1.+0.j,2))