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 하나뿐인, 또는 Instruction, QuantumCircuit 또는 일 수 있습니다. 데이터가 회로이거나 명령어인 경우, 상태 벡터는 모든 큐비트가 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

연산자의 활용형을 반환합니다.

리턴 유형

상태 벡터

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입니다. 기본값은 [default] 아래 ~/.qiskit/settings.confstate_drawer = <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

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

매개변수

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

리턴

자아와 타자의 내적 산물, selfother\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) – 측정값을 샘플링할 하위 시스템을 지정합니다(없음인 경우 모든 하위 시스템의 측정값을 샘플링합니다(기본값: 없음).

리턴

(outcome, state) 여기서 outcome

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

리턴 유형

튜플

probabilities

probabilities(qargs=None, decimals=None)

GitHub

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

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

매개변수

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

리턴

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

리턴 유형

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) – 하위 시스템 중 확률을 반환할 하위 시스템을 지정합니다(없음이 모든 하위 시스템에 대해 반환하는 경우 기본값: 없음).
  • decimals (None or int) – 값을 반올림할 소수점 이하 자릿수입니다. 없음인 경우 반올림이 수행되지 않습니다(기본값: 없음).

리턴

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

리턴 유형

dict

purity

purity()

GitHub

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

리턴 유형

float64

reset

reset(qargs=None)

GitHub

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

매개변수

qargs (list or None) – 를 선택하면 모든 하위 시스템이 0 상태로 초기화됩니다(기본값: 없음).

리턴

리셋 상태입니다.

리턴 유형

상태 벡터

추가 정보:

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

reverse_qargs

reverse_qargs()

GitHub

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

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

리턴

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

리턴 유형

상태 벡터

sample_counts

sample_counts(shots, qargs=None)

GitHub

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

매개변수

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

리턴

샘플링된 카운트 사전.

리턴 유형

계수

추가 정보:

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

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

sample_memory

sample_memory(shots, qargs=None)

GitHub

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

매개변수

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

리턴

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

리턴 유형

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) – 값을 반올림할 소수점 이하 자릿수입니다. 없음인 경우 반올림이 수행되지 않습니다(기본값: 없음).

리턴

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

리턴 유형

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에서 버그, 오타를 보고하거나 컨텐츠를 요청하십시오.