4

文献中发现的 CNOT 门的常规矩阵表示是:

CNO =

      \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}

这与大端/小端问题有关吗?有没有办法像在文学中恢复我的矩阵一样表示我的矩阵?

4

1 回答 1

4

是的,正如您提到的,这与 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],
          [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))
于 2021-01-22T09:03:43.470 回答