文献中发现的 CNOT 门的常规矩阵表示为:
CNOT =
\begin{bmatrix}
1 & 0 & 0 & 0\\
0 & 1 & 0 & 0\\
0 & 0 & 0 & 1\\
0 & 0 & 1 & 0
\end{bmatrix}
Run Code Online (Sandbox Code Playgroud)
然而在 Qiskit 中,矩阵表示为 CNOT =
\begin{bmatrix}
1 & 0 & 0 & 0\\
0 & 0 & 0 & 1\\
0 & 0 & 1 & 0\\
0 & 1 & 0 & 0
\end{bmatrix}
Run Code Online (Sandbox Code Playgroud)
这与大端/小端问题有关吗?有没有一种方法可以像文献中恢复的那样来表示我的矩阵?
是的,正如您提到的,这与 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()))
Run Code Online (Sandbox Code Playgroud)
给出:
Little endian:
Operator([[1.+0.j, 0.+0.j, 0.+0.j, 0.+0.j],
[0.+0.j, 0.+0.j, 0.+0.j, 1.+0.j],
[0.+0.j, 0.+0.j, 1.+0.j, 0.+0.j],
[0.+0.j, 1.+0.j, 0.+0.j, 0.+0.j]],
input_dims=(2, 2), output_dims=(2, 2))
Big endian:
Operator([[1.+0.j, 0.+0.j, 0.+0.j, 0.+0.j],
[0.+0.j, 1.+0.j, 0.+0.j, 0.+0.j],
[0.+0.j, 0.+0.j, 0.+0.j, 1.+0.j],
[0.+0.j, 0.+0.j, 1.+0.j, 0.+0.j]],
input_dims=(2, 2), output_dims=(2, 2))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
902 次 |
最近记录: |