我可以在 qiskit 中将字节顺序从小端更改为大端吗?

问题描述

文献中 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 中的小端位序有关。大多数教科书(以及您展示的第一个矩阵)都采用大端顺序。

如果您想了解更多信息,可以查看这些帖子/文档:

如果您想将 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))