연산자 클래스 개요
패키지 버전
이 페이지의 코드는 다음 요구 사항을 사용하여 개발되었습니다. 이 버전 이상을 사용하길 권장합니다.
qiskit[all]~=2.3.0
Qiskit에서 양자 연산자는 quantum_info 모듈의 클래스를 사용하여 표현됩니다. 가장 중요한 연산자 클래스는 SparsePauliOp로, 일반적인 양자 연산자를 파울리 문자열의 선형 결합으로 표현합니다. SparsePauliOp는 양자 관측량을 표현하는 데 가장 일반적으로 사용되는 클래스입니다. 이 페이지의 나머지 부분에서는 SparsePauliOp 및 기타 연산자 클래스의 사용 방법을 설명합니다.
# Added by doQumentation — required packages for this notebook
!pip install -q numpy qiskit
import numpy as np
from qiskit.quantum_info.operators import Operator, Pauli, SparsePauliOp
SparsePauliOp
SparsePauliOp 클래스는 파울리 문자열의 선형 결합을 표현합니다. SparsePauliOp를 초기화하는 방법은 여러 가지가 있지만, 가장 유연한 방법은 다음 코드 셀에서 시연하는 것처럼 from_sparse_list 메서드를 사용하는 것입니다. from_sparse_list는 (pauli_string, qubit_indices, coefficient) 삼중항의 목록을 받습니다.
op1 = SparsePauliOp.from_sparse_list(
[("ZX", [1, 4], 1.0), ("YY", [0, 3], -1 + 1j)], num_qubits=5
)
op1
SparsePauliOp(['XIIZI', 'IYIIY'],
coeffs=[ 1.+0.j, -1.+1.j])
SparsePauliOp는 다음 코드 셀에서 시연하는 것처럼 산술 연산을 지원합니다.
op2 = SparsePauliOp.from_sparse_list(
[("XXZ", [0, 1, 4], 1 + 2j), ("ZZ", [1, 2], -1 + 1j)], num_qubits=5
)
# Addition
print("op1 + op2:")
print(op1 + op2)
print()
# Multiplication by a scalar
print("2 * op1:")
print(2 * op1)
print()
# Operator multiplication (composition)
print("op1 @ op2:")
print(op1 @ op2)
print()
# Tensor product
print("op1.tensor(op2):")
print(op1.tensor(op2))
op1 + op2:
SparsePauliOp(['XIIZI', 'IYIIY', 'ZIIXX', 'IIZZI'],
coeffs=[ 1.+0.j, -1.+1.j, 1.+2.j, -1.+1.j])
2 * op1:
SparsePauliOp(['XIIZI', 'IYIIY'],
coeffs=[ 2.+0.j, -2.+2.j])
op1 @ op2:
SparsePauliOp(['YIIYX', 'XIZII', 'ZYIXZ', 'IYZZY'],
coeffs=[ 1.+2.j, -1.+1.j, -1.+3.j, 0.-2.j])
op1.tensor(op2):
SparsePauliOp(['XIIZIZIIXX', 'XIIZIIIZZI', 'IYIIYZIIXX', 'IYIIYIIZZI'],
coeffs=[ 1.+2.j, -1.+1.j, -3.-1.j, 0.-2.j])