주 콘텐츠로 건너뛰기

양자 정보 시각화

패키지 버전

이 페이지의 코드는 다음 요구 사항을 사용하여 개발되었습니다. 이 버전 이상을 사용하길 권장해요.

qiskit[all]~=2.4.0

학습이나 디버깅과 같은 많은 상황에서 양자 컴퓨터의 상태를 시각화하는 것이 도움이 됩니다. 여기서는 시뮬레이션 또는 상태 단층 촬영을 통해 이미 특정 상태를 얻었다고 가정합니다. 소규모 양자 시스템의 상태만 볼 수 있습니다.

함수의 출력 사용하기

이 페이지의 모든 함수는 풍부한 객체를 반환합니다. 코드 셀의 마지막 줄에서 이러한 객체를 출력하면 Jupyter 노트북에서 셀 아래에 표시됩니다. 다른 환경이나 스크립트에서 이러한 함수를 호출하는 경우, 출력을 명시적으로 표시하거나 저장해야 합니다.

대부분의 함수는 이미지를 반환하며, 이는 matplotlib.Figure 객체입니다. 두 가지 옵션이 있습니다:

  • 반환된 객체에 .show()를 호출하여 새 창에서 이미지를 엽니다 (설정된 matplotlib Backend가 대화형인 경우).
  • .savefig("out.png")를 호출하여 현재 작업 디렉토리의 out.png에 그림을 저장합니다. savefig() 메서드는 경로를 받으므로 출력을 저장하는 위치와 파일명을 조정할 수 있습니다. 예를 들어, plot_state_city(psi).savefig("out.png")와 같이 사용합니다.

LaTeX 출력은 IPython.display.Latex 객체입니다. Jupyter가 아닌 환경에서의 가장 좋은 방법은 텍스트 표현을 위해 상태를 출력하거나, LaTeX 소스 문자열을 반환하는 latex_source 드로어로 전환하여 이 출력을 피하는 것입니다.

양자 상태는 밀도 행렬 ρ\rho (에르미트 행렬) 또는 상태 벡터 ψ|\psi\rangle (복소 벡터) 중 하나입니다. 밀도 행렬은 상태 벡터와 다음의 관계가 있습니다.

ρ=ψψ,\rho = |\psi\rangle\langle \psi|,

그리고 혼합 상태(상태 벡터의 양의 합)를 나타낼 수 있으므로 더 일반적입니다.

ρ=kpkψkψk.\rho = \sum_k p_k |\psi_k\rangle\langle \psi_k |.

Qiskit은 StatevectorDensityMatrix 클래스를 통해 양자 상태를 표현하고 많은 시각화 함수를 제공합니다. 다음 코드 셀 이후의 섹션을 참조하여 Qiskit의 다양한 시각화 함수가 다음 양자 상태를 어떻게 플롯하는지 확인하세요.

# Added by doQumentation — required packages for this notebook
!pip install -q qiskit
from math import pi
from qiskit import QuantumCircuit
from qiskit.quantum_info import Statevector

# Create a Bell state for demonstration
qc = QuantumCircuit(2)
qc.h(0)
qc.crx(pi / 2, 0, 1)
psi = Statevector(qc)

엄밀히 말해 "플롯"은 아니지만, Qiskit은 Jupyter 노트북에서 보기 좋게 표시되는 StatevectorDensityMatrix 객체의 LaTeX 표현을 렌더링할 수 있습니다. 이는 양자 상태를 표기하는 표준 수학 관례를 따릅니다. 양자 정보 기초: 단일 시스템에서 더 자세히 읽어보세요.

상태 벡터는 기본적으로 "켓 표기법"을 사용하며, 밀도 행렬은 2×2 행렬로 표시됩니다.

"latex""latex_source"로 대체하여 원시 LaTeX 문자열을 얻을 수도 있습니다.

psi.draw("latex") # psi is a Statevector object

2200+1201i211\frac{\sqrt{2}}{2} |00\rangle+\frac{1}{2} |01\rangle- \frac{i}{2} |11\rangle

from qiskit.quantum_info import DensityMatrix

DensityMatrix(psi).draw("latex") # convert to a DensityMatrix and draw
[122402i424140i400002i4i4014] \begin{bmatrix} \frac{1}{2} & \frac{\sqrt{2}}{4} & 0 & \frac{\sqrt{2} i}{4} \\ \frac{\sqrt{2}}{4} & \frac{1}{4} & 0 & \frac{i}{4} \\ 0 & 0 & 0 & 0 \\ - \frac{\sqrt{2} i}{4} & - \frac{i}{4} & 0 & \frac{1}{4} \\ \end{bmatrix}
from qiskit.visualization import plot_state_city

plot_state_city(psi)
# Alternative: psi.draw("city")

Output of the previous code cell

from qiskit.visualization import plot_state_hinton

plot_state_hinton(psi)
# Alternative: psi.draw("hinton")

Output of the previous code cell

from qiskit.visualization import plot_state_paulivec

plot_state_paulivec(psi)
# Alternative: psi.draw("paulivec")

Output of the previous code cell

from qiskit.quantum_info import SparsePauliOp

SparsePauliOp.from_operator(psi)
SparsePauliOp(['II', 'IX', 'XY', 'YI', 'YX', 'YZ', 'ZI', 'ZX', 'ZZ'],
coeffs=[ 0.25 +0.j, 0.1767767+0.j, -0.1767767+0.j, -0.125 +0.j,
-0.1767767+0.j, 0.125 +0.j, 0.125 +0.j, 0.1767767+0.j,
0.125 +0.j])
from qiskit.visualization import plot_state_qsphere

plot_state_qsphere(psi)
# Alternative: psi.draw("qsphere")

Output of the previous code cell

from qiskit.visualization import plot_bloch_multivector

plot_bloch_multivector(psi)
# Alternative: psi.draw("bloch")

Output of the previous code cell

상태 플롯 함수의 옵션

모든 상태 플롯 함수는 다음 인수를 허용합니다 (Matplotlib 그림을 반환하지 않는 LaTeX 드로어와 figsize만 허용하는 plot_state_qsphere 제외):

  • title (str): 플롯 상단에 표시되는 플롯 제목 문자열
  • figsize (tuple): 인치 단위의 그림 크기 (너비, 높이)

plot_state_cityplot_state_paulivec 함수는 막대 색상을 지정하는 color 인수 (문자열 목록)도 허용합니다. 자세한 정보는 API 문서를 참조하세요.

다음 단계

권장 사항
  • 양자 정보 지식을 새로 고침해야 하나요? IBM Quantum Learning의 양자 정보 기초 과정을 확인하세요.
  • 오픈 소스 Qiskit SDK에 기여하고 싶다면 기여 가이드라인을 읽어보세요.