Skip to main content
IBM Quantum Platform

상태 벡터

class qiskit.quantum_info.Statevector(data, dims=None)

GitHub

Bases: QuantumState, TolerancesMixin

상태 벡터 클래스

상태 벡터 객체를 초기화합니다.

매개변수

  • data (np.ndarray | list |Statevector |Operator |QuantumCircuit |circuit.instruction.Instruction) – 상태 벡터를 구성할 수 있는 데이터. 이는 복소 벡터, 다른 상태 벡터, 열이 하나뿐인 Operator , 또는, 또는 QuantumCircuit 일 수 있습니다 Instruction. 데이터가 회로 또는 명령어인 경우, 모든 큐비트가 0 상태로 초기화되었다고 가정하여 상태 벡터를 구성합니다.
  • dims (int |tuple |list | None) – 상태의 하위 시스템 차원 (추가 정보 참조).

레이즈

QiskitError – 입력 데이터가 유효하지 않은 경우.

추가 정보:

dims kwarg는 None, 정수 또는 정수의 이터러블일 수 있습니다.

  • Iterable - 에서 하위 시스템 차원은 목록의 길이에 따라 주어진 총 하위 시스템 수를 가진 목록의 값입니다.
  • Int 또는 None – 입력 벡터의 길이는 상태의 전체 차원을 결정합니다. 2의 거듭제곱인 경우, 상태는 N-큐비트 상태로 초기화됩니다. 2의 거듭제곱이 아닌 경우, 해당 상태는 단일 d차원 부분계를 갖게 된다.

속성

atol

기본값: 1e-08

data

데이터를 반환합니다.

dim

총 상태 차원을 반환합니다.

num_qubits

N-큐비트 상태인 경우 큐비트 수를 반환하고, 그렇지 않으면 없음으로 반환합니다.

rtol

기본값: 1e-05

settings

설정을 반환합니다.


메소드

conjugate

conjugate()

GitHub

함수에서 반환된 벡터 성분들의 기저를 기준으로 한 상태 벡터의 복소 공액값을 반환합니다 data().

리턴 유형

상태 벡터

copy

copy()

GitHub

현재 운영자의 사본을 만듭니다.

dims

dims(qargs=None)

GitHub

지정된 하위 시스템에 대한 입력 차원의 튜플을 반환합니다.

draw

draw(output=None, **drawer_args)

GitHub

스테이트 벡터의 시각화를 반환합니다.

repr : ASCII TextMatrix 의 __repr__.

텍스트 : 콘솔에서 인쇄할 수 있는 ASCII TextMatrix.

라텍스 : 주피터 노트북에 표시하기 위한 IPython 라텍스 객체입니다.

latex_source : LaTeX 을 사용하여 배열을 생성하기 위한 컴파일되지 않은 원시 ASCII 소스입니다.

qsphere : Matplotlib 그림, plot_state_qsphere()를 사용한 상태벡터 렌더링.

힌튼 : Matplotlib 그림, plot_state_hinton()을 사용한 statevector 렌더링.

bloch : Matplotlib 그림, plot_bloch_multivector()를 사용한 상태벡터 렌더링.

도시 : Matplotlib 그림, plot_state_city()를 사용한 statevector 렌더링.

폴리벡 : Matplotlib 그림, plot_state_paulivec()을 사용한 상태벡터 렌더링.

매개변수

  • output (str) – 상태 표시 시 사용할 출력 방식을 선택하십시오. 유효한 선택 항목은 repr, text, latex, latex_source, qsphere, hinton, bloch, city 또는 paulivec입니다. 기본값은 repr입니다. 기본값은 아래의 ~/.qiskit/settings.conf state_drawer = <default> 에 해당 줄을 추가하여 변경할 수 있습니다 [default].
  • drawer_args - 관련 그리기 함수 또는 생성자에 직접 전달할 인수 ( TextMatrix( ), array_to_latex(), plot_state_qsphere(), plot_state_hinton() 또는 plot_bloch_multivector()). 해당 함수에 대한 설명서는 qiskit.visualization 에서 해당 함수를 참조하세요.

리턴

matplotlib.Figure 또는 str 또는 TextMatrix 또는 IPython.display.Latex: 상태 벡터의 도식.

레이즈

ValueError – 유효하지 않은 출력 방법이 선택된 경우.

예제

벨 상태 중 하나를 플롯합니다

from numpy import sqrt
from qiskit.quantum_info import Statevector
sv=Statevector([1/sqrt(2), 0, 0, -1/sqrt(2)])
sv.draw(output='hinton')
이전 코드의 출력입니다.

equiv

equiv(other, rtol=None, atol=None)

GitHub

전역 위상까지 상태벡터로 다른 것이 같으면 True를 반환합니다.

참고

Other가 스테이트벡터는 아니지만 스테이트벡터 객체를 초기화하는 데 사용할 수 있는 경우, Statevector(other)가 현재 스테이트벡터와 전역 단계까지 동일한지 확인합니다.

매개변수

  • other (Statevector) – Statevector 를 구성할 수 있는 객체입니다.
  • 비교를 위한 rtol (float) – 상대 허용 오차 값.
  • atol (float) – 비교를 위한 절대 허용 오차 값.

리턴

상태 벡터가 전역 위상까지 동등한 경우 참입니다.

리턴 유형

부울

evolve

evolve(other, qargs=None)

GitHub

연산자가 양자 상태를 진화시킵니다.

매개변수

리턴

출력 양자 상태입니다.

리턴 유형

상태 벡터

레이즈

QiskitError – 연산자 차원이 지정된 Statevector 하위 시스템의 차원과 일치하지 않는 경우.

expand

expand(other)

GitHub

텐서 곱 상태 other ⊗ self를 반환합니다.

매개변수

other (Statevector) – 양자 상태 객체입니다.

리턴

텐서 곱 상태는 다른 ⊗ 자기입니다.

리턴 유형

상태 벡터

레이즈

QiskitError – ‘other’가 양자 상태가 아닌 경우.

expectation_value

expectation_value(oper, qargs=None)

GitHub

연산자의 기대값을 계산합니다.

매개변수

  • oper (Operator) – 의 기대값을 평가하는 연산자입니다.
  • 연산자를 적용할 qargs (None or list) – 하위 시스템.

리턴

기대값을 입력합니다.

리턴 유형

복합체

from_circuit

classmethod from_circuit(circuit, ignore_set_layout=False)

GitHub

양자 회로로부터 상태 벡터를 생성합니다.

매개변수

  • circuit (QuantumCircuit) – 양자 회로
  • ignore_set_layout (bool) – 이 값으로 설정된 경우 True, 입력에 레이아웃이 지정되어 circuit 있어도 무시됩니다. 기본값은 False.입니다.

리턴

모든 상태가 0인 입력 상태에 회로를 적용하여 얻은 상태벡터.

리턴 유형

상태 벡터

예제

트랜스파일된 회로로부터 상태벡터를 생성합니다:

from qiskit import QuantumCircuit, transpile
from qiskit.quantum_info import Statevector
from qiskit.providers.basic_provider import BasicSimulator

qc = QuantumCircuit(3)
qc.h(0)
qc.cx(0, 1)
qc.swap(1, 2)

backend = BasicSimulator()
transpiled1 = transpile(qc, backend, optimization_level=0)
transpiled2 = transpile(qc, backend, optimization_level=2)

# Get statevectors accounting for layout changes
sv1 = Statevector.from_circuit(transpiled1)
sv2 = Statevector.from_circuit(transpiled2)

# These will be equivalent up to global phase
print(sv1.equiv(sv2))  # True

from_instruction

classmethod from_instruction(instruction)

GitHub

인스트럭션의 출력 상태 벡터를 반환합니다.

상태 벡터는 입력 명령어 또는 회로와 동일한 큐비트 수의 상태 ∣0,…,0⟩|{0,\ldots,0}\rangle 로 초기화되고, 입력 명령어에 의해 진화하며, 출력 상태 벡터가 반환됩니다.

매개변수

instruction (qiskit.circuit.Instruction orQuantumCircuit) – 명령어 또는 회로

리턴

최종 상태벡터입니다.

리턴 유형

상태 벡터

레이즈

QiskitError – 해당 명령어에 상태 벡터 시뮬레이션에 사용할 수 없는 명령어가 포함된 경우.

from_int

static from_int(i, dims)

GitHub

계산 기준 상태 벡터를 반환합니다.

매개변수

  • i (int) – 기저 상태의 성분.
  • dims (int ortuple orlist) – 상태 벡터의 하위 시스템 차원 (추가 정보 참조).

리턴

계산 기준 상태 ∣i⟩|i\rangle.

리턴 유형

상태 벡터

추가 정보:

dims kwarg는 정수 또는 정수의 이터러블일 수 있습니다.

  • Iterable - 에서 하위 시스템 차원은 목록의 길이에 따라 주어진 총 하위 시스템 수를 가진 목록의 값입니다.
  • Int - 정수는 상태의 전체 차원을 지정합니다. 2의 거듭제곱인 경우 상태는 N-큐비트 상태로 초기화됩니다. 2의 거듭제곱이 아닌 경우 상태는 단일 D차원 하위 시스템을 갖게 됩니다.

from_label

classmethod from_label(label)

GitHub

폴리 X,Y,Z 고유 상태의 텐서 곱을 반환합니다.

레이블
상태 벡터
"0"[1,0][1, 0]
"1"[0,1][0, 1]
"+"[1/2,1/2][1 / \sqrt{2}, 1 / \sqrt{2}]
"-"[1/2,−1/2][1 / \sqrt{2}, -1 / \sqrt{2}]
"r"[1/2,i/2][1 / \sqrt{2}, i / \sqrt{2}]
"l"[1/2,−i/2][1 / \sqrt{2}, -i / \sqrt{2}]

매개변수

label (string) – 고유상태 문자열 ket 라벨(허용되는 값은 표 참조).

리턴

N-큐비트 기저 상태의 상태 벡터.

리턴 유형

상태 벡터

레이즈

QiskitError – 레이블에 유효하지 않은 문자가 포함되어 있거나, 레이블의 길이가 명시적으로 지정된 num_qubits보다 긴 경우.

inner

inner(other)

GitHub

자신과 타인의 내부 곱을 ⟨self∣other⟩\langle self| other \rangle 으로 반환합니다.

매개변수

other (Statevector) – 양자 상태 객체입니다.

리턴

자아와 타자의 내적 산물, ⟨self∣other⟩\langle self| other \rangle.

리턴 유형

np.complex128

레이즈

QiskitError – ‘기타’가 양자 상태가 아니거나 차원이 다른 경우.

is_valid

is_valid(atol=None, rtol=None)

GitHub

상태 벡터가 규범 1을 가지면 True를 반환합니다.

매개변수

리턴 유형

부울

measure

measure(qargs=None)

GitHub

하위 시스템을 측정하고 결과 및 측정 후 상태를 반환합니다.

이 함수는 측정 결과 샘플링을 위해 QuantumStates 내부 난수 생성기를 사용합니다. RNG 시드는 seed() 메서드를 사용하여 설정할 수 있습니다.

매개변수

측정값을 샘플링할 qargs (list or None) – 개의 하위 시스템. None인 경우 모든 하위 시스템의 측정값을 샘플링합니다(기본값: None).

리턴

쌍 (outcome, state) 여기서 outcome 은

측정 결과 문자열 레이블, state 은 해당 결과에 대한 축소된 측정 후 상태입니다.

리턴 유형

튜플

probabilities

probabilities(qargs=None, decimals=None)

GitHub

하위 시스템 측정 확률 벡터를 반환합니다.

측정 확률은 계산(대각선) 기준의 측정에 관한 것입니다.

매개변수

  • 확률을 반환할 qargs (None or list) – 하위 시스템. None인 경우 모든 하위 시스템에 대해 반환합니다(기본값: None).
  • decimals (None or int) – 값을 반올림할 소수점 자리 수. None인 경우 반올림이 수행되지 않습니다(기본값: None).

리턴

확률의 넘피 벡터 배열입니다.

리턴 유형

np.array

예제

2쿼비트 제품 상태 ∣ψ⟩=∣+⟩⊗∣0⟩|\psi\rangle=|+\rangle\otimes|0\rangle 를 예로 들어보겠습니다.

from qiskit.quantum_info import Statevector

psi = Statevector.from_label('+0')

# Probabilities for measuring both qubits
probs = psi.probabilities()
print('probs: {}'.format(probs))

# Probabilities for measuring only qubit-0
probs_qubit_0 = psi.probabilities([0])
print('Qubit-0 probs: {}'.format(probs_qubit_0))

# Probabilities for measuring only qubit-1
probs_qubit_1 = psi.probabilities([1])
print('Qubit-1 probs: {}'.format(probs_qubit_1))
probs: [0.5 0.  0.5 0. ]
Qubit-0 probs: [1. 0.]
Qubit-1 probs: [0.5 0.5]

또한 qargs 목록의 큐비트 순서를 순열하여 확률 출력에서 큐비트 위치를 변경할 수 있습니다

from qiskit.quantum_info import Statevector

psi = Statevector.from_label('+0')

# Probabilities for measuring both qubits
probs = psi.probabilities([0, 1])
print('probs: {}'.format(probs))

# Probabilities for measuring both qubits
# but swapping qubits 0 and 1 in output
probs_swapped = psi.probabilities([1, 0])
print('Swapped probs: {}'.format(probs_swapped))
probs: [0.5 0.  0.5 0. ]
Swapped probs: [0.5 0.5 0.  0. ]

probabilities_dict

probabilities_dict(qargs=None, decimals=None)

GitHub

하위 시스템 측정 확률 사전을 반환합니다.

측정 확률은 계산(대각선) 기준의 측정에 관한 것입니다.

이 사전 표현은 사전 키가 하위 시스템 기준 벡터에 대한 쿼트 문자열인 Ket과 유사한 표기법을 사용합니다. 하위 시스템의 차원이 10보다 큰 경우 하위 시스템을 구분할 수 있도록 정수 사이에 쉼표 구분 기호를 삽입합니다.

매개변수

  • 확률을 반환할 qargs (None or list) – 하위 시스템. None인 경우 모든 하위 시스템에 대해 반환합니다(기본값: None).
  • decimals (None or int) – 값을 반올림할 소수점 자리 수. None인 경우 반올림이 수행되지 않습니다(기본값: None).

리턴

딕셔너리(케트) 형식의 측정 확률입니다.

리턴 유형

dict

purity

purity()

GitHub

양자 상태의 순도를 반환합니다.

리턴 유형

float64

reset

reset(qargs=None)

GitHub

상태 또는 하위 시스템을 0 상태로 초기화합니다.

매개변수

재설정할 qargs (list or None) – 하위 시스템. None인 경우 모든 하위 시스템이 0 상태로 재설정됩니다(기본값: None).

리턴

리셋 상태입니다.

리턴 유형

상태 벡터

추가 정보:

모든 하위 시스템이 재설정되면, 모든 하위 시스템이 초기 상태로 돌아갑니다. 일부 하위 시스템만 재설정된 경우, 이 함수는 해당 하위 시스템에 대해 측정을 수행하고, 측정 후의 수축된 상태가 0-상태로 회전되도록 하위 시스템을 진화시킵니다. 이 샘플링에 대한 RNG 시드는 seed() 메서드를 사용하여 설정할 수 있습니다.

reverse_qargs

reverse_qargs()

GitHub

서브시스템 순서가 반전된 상태 벡터를 반환합니다.

텐서 곱 상태의 경우 이는 텐서 곱 하위 시스템의 순서를 뒤집는 것과 같습니다. 상태 벡터 ∣ψ⟩=∣ψn−1⟩⊗...⊗∣ψ0⟩|\psi \rangle = |\psi_{n-1} \rangle \otimes ... \otimes |\psi_0 \rangle 의 경우 반환되는 상태 벡터는 ∣ψ0⟩⊗...⊗∣ψn−1⟩|\psi_{0} \rangle \otimes ... \otimes |\psi_{n-1} \rangle 입니다.

리턴

서브시스템 순서가 반전된 상태벡터를 반환합니다.

리턴 유형

상태 벡터

sample_counts

sample_counts(shots, qargs=None)

GitHub

큐비트 측정 결과의 딕셔너리를 계산 기반으로 샘플링합니다.

매개변수

  • shots (int) – 생성할 샘플 수.
  • 측정값을 샘플링할 qargs (None or list) – 개의 하위 시스템. None인 경우 모든 하위 시스템의 측정값을 샘플링합니다(기본값: None).

리턴

샘플링된 카운트 사전.

리턴 유형

계수

추가 정보:

이 함수는 현재 상태에 대한 측정값 probabilities() 를 사용하여 측정 결과를 샘플링합니다. 실제로 측정을 구현하지 않으므로 현재 상태가 수정되지 않습니다.

샘플링에 사용되는 난수 생성기의 시드는 state의 seed() 메서드를 사용하여 고정된 값으로 설정할 수 있습니다.

sample_memory

sample_memory(shots, qargs=None)

GitHub

큐비트 측정 결과 목록을 계산 기준으로 샘플링합니다.

매개변수

  • shots (int) – 생성할 샘플 수.
  • 측정값을 샘플링할 qargs (None or list) – 개의 하위 시스템. None인 경우 모든 하위 시스템의 측정값을 샘플링합니다(기본값: None).

리턴

표본 추출 순서대로 정렬된 표본 개수 목록.

리턴 유형

np.array

추가 정보:

이 함수는 현재 상태에 대한 측정값 probabilities() 를 사용하여 측정 결과를 샘플링합니다. 실제로 측정을 구현하지 않으므로 현재 상태가 수정되지 않습니다.

샘플링에 사용되는 난수 생성기의 시드는 state의 seed() 메서드를 사용하여 고정된 값으로 설정할 수 있습니다.

seed

seed(value=None)

GitHub

양자 상태 RNG의 시드를 설정합니다.

tensor

tensor(other)

GitHub

텐서 곱 상태 self ⊗ other를 반환합니다.

매개변수

other (Statevector) – 양자 상태 객체입니다.

리턴

텐서 곱 연산자 자기 ⊗ 다른.

리턴 유형

상태 벡터

레이즈

QiskitError – ‘other’가 양자 상태가 아닌 경우.

to_dict

to_dict(decimals=None)

GitHub

상태 벡터를 사전 형식으로 변환합니다.

이 사전 표현은 사전 키가 하위 시스템 기준 벡터에 대한 쿼트 문자열인 Ket과 유사한 표기법을 사용합니다. 하위 시스템의 차원이 10보다 큰 경우 하위 시스템을 구분할 수 있도록 정수 사이에 쉼표 구분 기호를 삽입합니다.

매개변수

decimals (None or int) – 값을 반올림할 소수점 자리 수. None인 경우 반올림이 수행되지 않습니다(기본값: None).

리턴

스테이트벡터의 사전 형식입니다.

리턴 유형

dict

예제

2쿼비트 상태벡터의 케트 형태 ∣ψ⟩=∣−⟩⊗∣0⟩|\psi\rangle = |-\rangle\otimes |0\rangle

from qiskit.quantum_info import Statevector

psi = Statevector.from_label('-0')
print(psi.to_dict())
{'00': (0.7071067811865475+0j), '10': (-0.7071067811865475+0j)}

비쿼비트 하위 시스템의 경우 정수 범위는 0에서 9까지 가능합니다. 예를 들어 큐트리트 시스템에서

import numpy as np
from qiskit.quantum_info import Statevector

vec = np.zeros(9)
vec[0] = 1 / np.sqrt(2)
vec[-1] = 1 / np.sqrt(2)
psi = Statevector(vec, dims=(3, 3))
print(psi.to_dict())
{'00': (0.7071067811865475+0j), '22': (0.7071067811865475+0j)}

큰 하위 시스템 치수의 경우 구분 기호가 필요합니다. 다음 예는 큐비트와 10차원 큐디트로 구성된 20차원 시스템에 대한 예입니다.

import numpy as np
from qiskit.quantum_info import Statevector

vec = np.zeros(2 * 10)
vec[0] = 1 / np.sqrt(2)
vec[-1] = 1 / np.sqrt(2)
psi = Statevector(vec, dims=(2, 10))
print(psi.to_dict())
{'00': (0.7071067811865475+0j), '91': (0.7071067811865475+0j)}

to_operator

to_operator()

GitHub

상태를 rank-1 프로젝터 연산자로 변환

리턴 유형

운영자

trace

trace()

GitHub

양자 상태의 트레이스를 밀도 행렬로 반환합니다.

리턴 유형

float64

이 페이지가 도움이 되었습니까?
GitHub에서 버그, 오타를 보고하거나 컨텐츠를 요청하십시오.