Skip to main content
IBM Quantum Platform

Statevector

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

GitHub

Bases: QuantumState, TolerancesMixin

Classe de vetor de estado

Inicializa um objeto statevector.

Parâmetros

  • data (np.ndarray | list |Statevector |Operator |QuantumCircuit |circuit.instruction.Instruction) – Dados a partir dos quais o vetor de estado pode ser construído. Isso pode ser um vetor complexo, outro vetor de estado, um Operator com apenas uma coluna ou um QuantumCircuit ou Instruction. Se os dados forem um circuito ou uma instrução, o vetor de estado será construído presumindo-se que todos os qubits sejam inicializados no estado zero.
  • dims (int |tuple |list | None) – A dimensão do subsistema do estado (consulte informações adicionais).

Aumentos

QiskitError - se os dados de entrada não forem válidos.

Informações adicionais:

O dims kwarg pode ser None (Nenhum), um número inteiro ou um iterável de números inteiros.

  • Iterable - as dimensões do subsistema são os valores na lista com o número total de subsistemas dado pelo comprimento da lista.
  • Int ou None – o comprimento do vetor de entrada especifica a dimensão total do estado. Se for uma potência de dois, o estado será inicializado como um estado de N qubits. Se não for uma potência de dois, o estado terá um único subsistema de dimensão d.

Atributos

atol

Valor Padrão: 1e-08

data

Dados de retorno.

dim

Retorna a dimensão total do estado.

num_qubits

Retorna o número de qubits se for um estado N-qubit ou None caso contrário.

rtol

Valor Padrão: 1e-05

settings

Configurações de retorno.


Métodos

conjugate

conjugate()

GitHub

Retorna o conjugado do operador.

Tipo de retorno

Vetor de estado

copy

copy()

GitHub

Faça uma cópia do operador atual.

dims

dims(qargs=None)

GitHub

Retorna uma tupla de dimensão de entrada para os subsistemas especificados.

draw

draw(output=None, **drawer_args)

GitHub

Retorna uma visualização do Statevector.

repr : ASCII TextMatrix do site __repr__ do estado.

text : ASCII TextMatrix que pode ser impresso no console.

latex : Um objeto IPython Latex para exibição em Jupyter Notebooks.

latex_source : Fonte ASCII bruta e não compilada para gerar uma matriz usando LaTeX.

qsphere : Matplotlib figura, renderização do vetor de estado usando plot_state_qsphere().

hinton : Matplotlib figura, renderização do vetor de estado usando plot_state_hinton().

bloch : Matplotlib figura, renderização de statevector usando plot_bloch_multivector().

cidade : Matplotlib figura, renderização do vetor de estado usando plot_state_city().

paulivec : Matplotlib figura, renderização do vetor de estado usando plot_state_paulivec().

Parâmetros

  • output (str) – Selecione o método de saída a ser usado para desenhar o estado. As opções válidas são repr, text, latex, latex_source, qsphere, hinton, bloch, city ou paulivec. O padrão é repr. O padrão pode ser alterado adicionando a linha state_drawer = <default> a ~/.qiskit/settings.conf em [default].
  • drawer_args - Argumentos a serem passados diretamente para a função de desenho ou construtor relevante ( TextMatrix( ), array_to_latex(), plot_state_qsphere(), plot_state_hinton() ou plot_bloch_multivector()). Consulte a função relevante em qiskit.visualization para obter a documentação da função.

Retorna

matplotlib.Figure ou str ou TextMatrix ou IPython.display.Latex: Desenho do vetor de estado.

Aumentos

ValueError - quando um método de saída inválido é selecionado.

Exemplos

Traçar um dos estados de Bell

from numpy import sqrt
from qiskit.quantum_info import Statevector
sv=Statevector([1/sqrt(2), 0, 0, -1/sqrt(2)])
sv.draw(output='hinton')
Saída do código anterior.

equiv

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

GitHub

Retorna True se o outro for equivalente como um vetor de estado até a fase global.

Nota

Se other não for um Statevector, mas puder ser usado para inicializar um objeto statevector, isso verificará se Statevector(other) é equivalente ao statevector atual até a fase global.

Parâmetros

  • other (Statevector) – um objeto a partir do qual um Statevector pode ser construído.
  • rtol (float) – valor de tolerância relativa para comparação.
  • atol (float) – valor de tolerância absoluta para comparação.

Retorna

Verdadeiro se os vetores de estado forem equivalentes até a fase global.

Tipo de retorno

bool

evolve

evolve(other, qargs=None)

GitHub

Evolua um estado quântico por meio do operador.

Parâmetros

Retorna

o estado quântico de saída.

Tipo de retorno

Statevector

Aumentos

QiskitError - se a dimensão do operador não corresponder às dimensões do subsistema do Statevector especificado.

expand

expand(other)

GitHub

Retorna o estado do produto tensorial other ⊗ self.

Parâmetros

other (Statevector) – um objeto de estado quântico.

Retorna

o estado do produto tensorial other ⊗ self.

Tipo de retorno

Statevector

Aumentos

QiskitError - se outro não for um estado quântico.

expectation_value

expectation_value(oper, qargs=None)

GitHub

Calcule o valor de expectativa de um operador.

Parâmetros

  • oper (Operator) – um operador para avaliar o expval de.
  • qargs (None or list) – subsistemas aos quais aplicar o operador.

Retorna

o valor esperado.

Tipo de retorno

complexo

from_circuit

classmethod from_circuit(circuit, ignore_set_layout=False)

GitHub

Crie um vetor de estado a partir de um circuito quântico.

Parâmetros

  • circuit (QuantumCircuit) – Um circuito quântico
  • ignore_set_layout (bool) – Quando definido como True, se a entrada circuit tiver um layout definido, ele será ignorado. Padrão para False.

Retorna

O vetor de estado obtido pela aplicação do circuito no estado de entrada totalmente zero.

Tipo de retorno

Vetor de estado

Exemplo

Crie um vetor de estado a partir de um circuito transposto:

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

Retorna o vetor de estado de saída de uma instrução.

O vetor de estado é inicializado no estado 0,,0|{0,\ldots,0}\rangle com o mesmo número de qubits que a instrução ou o circuito de entrada, evoluído pela instrução de entrada, e o vetor de estado de saída é retornado.

Parâmetros

instruction (qiskit.circuit.Instruction orQuantumCircuit) – instrução ou circuito

Retorna

O vetor de estado final.

Tipo de retorno

Statevector

Aumentos

QiskitError - se a instrução contiver instruções inválidas para a simulação do vetor de estado.

from_int

static from_int(i, dims)

GitHub

Retorna um vetor de estado da base computacional.

Parâmetros

  • i (int) – o elemento de estado da base.
  • dims (int ortuple orlist) – As dimensões do subsistema do vetor de estado (consulte informações adicionais).

Retorna

O estado da base computacional i|i\rangle.

Tipo de retorno

Statevector

Informações adicionais:

O dims kwarg pode ser um número inteiro ou um iterável de números inteiros.

  • Iterable - as dimensões do subsistema são os valores na lista com o número total de subsistemas dado pelo comprimento da lista.
  • Int - o número inteiro especifica a dimensão total do estado. Se for uma potência de dois, o estado será inicializado como um estado N-qubit. Se não for uma potência de dois, o estado terá um único subsistema d-dimensional.

from_label

classmethod from_label(label)

GitHub

Retorna um produto tensorial de estados próprios de Pauli X, Y, Z.

Rótulo
Statevector
"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}]

Parâmetros

label (string) – um rótulo de cadeia de estados próprios (consulte a tabela para ver os valores permitidos).

Retorna

O vetor de estado da base de N qubits.

Tipo de retorno

Statevector

Aumentos

QiskitError - se o rótulo contiver caracteres inválidos ou se o comprimento do rótulo for maior do que um número_qubits explicitamente especificado.

inner

inner(other)

GitHub

Retorne o produto interno do eu e do outro como selfother\langle self| other \rangle.

Parâmetros

other (Statevector) – um objeto de estado quântico.

Retorna

o produto interno do eu e do outro, selfother\langle self| other \rangle.

Tipo de retorno

np.complex128

Aumentos

QiskitError - se o outro não for um estado quântico ou tiver uma dimensão diferente.

is_valid

is_valid(atol=None, rtol=None)

GitHub

Retorna True se um vetor de estado tiver norma 1.

Parâmetros

Tipo de retorno

bool

measure

measure(qargs=None)

GitHub

Medir os subsistemas e retornar o resultado e o estado pós-medição.

Observe que essa função usa o gerador interno de números aleatórios do site QuantumStates para amostrar o resultado da medição. A semente do RNG pode ser definida usando o método seed() método.

Parâmetros

qargs (list or None) – subsistemas para os quais as medições de amostra devem ser feitas; se nenhum, a medição de amostra de todos os subsistemas (Padrão: Nenhum).

Retorna

o par (outcome, state) onde outcome é o

rótulo da cadeia de caracteres do resultado da medição, e state é o estado recolhido pós-medição do resultado correspondente.

Tipo de retorno

tupla

probabilities

probabilities(qargs=None, decimals=None)

GitHub

Retorna o vetor de probabilidade de medição do subsistema.

As probabilidades de medição são relativas à medição na base de cálculo (diagonal).

Parâmetros

  • qargs (None or list) – subsistemas para os quais retornar as probabilidades; se nenhum, retornar para todos os subsistemas (Padrão: nenhum).
  • decimals (None or int) – o número de casas decimais para arredondar os valores. Se for None, nenhum arredondamento será feito (Padrão: None).

Retorna

A matriz de vetores Numpy de probabilidades.

Tipo de retorno

np.array

Exemplos

Considere um estado de produto de 2 qubits ψ=+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]

Também podemos permutar a ordem dos qubits na lista qargs para alterar a posição do qubit no resultado das probabilidades

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

Retorna o dicionário de probabilidade de medição do subsistema.

As probabilidades de medição são relativas à medição na base de cálculo (diagonal).

Essa representação de dicionário usa uma notação do tipo Ket, em que as chaves do dicionário são cadeias de caracteres qudit para os vetores de base do subsistema. Se algum subsistema tiver uma dimensão maior que 10, serão inseridos delimitadores de vírgula entre os números inteiros para que os subsistemas possam ser distinguidos.

Parâmetros

  • qargs (None or list) – subsistemas para os quais retornar as probabilidades; se nenhum, retornar para todos os subsistemas (Padrão: nenhum).
  • decimals (None or int) – o número de casas decimais para arredondar os valores. Se for None, nenhum arredondamento será feito (Padrão: None).

Retorna

As probabilidades de medição na forma dict (ket).

Tipo de retorno

dict

purity

purity()

GitHub

Retorna a pureza do estado quântico.

Tipo de retorno

float64

reset

reset(qargs=None)

GitHub

Redefine o estado ou os subsistemas para o estado 0.

Parâmetros

qargs (list or None) – subsistemas a serem redefinidos; se None, todos os subsistemas serão redefinidos para o estado 0 (Padrão: None).

Retorna

o estado de reinicialização.

Tipo de retorno

Statevector

Informações adicionais:

Se todos os subsistemas forem reiniciados, isso restaurará o estado inicial em todos os subsistemas. Se apenas alguns subsistemas forem reiniciados, esta função realizará uma medição nesses subsistemas e os atualizará de modo que os estados colapsados após a medição sejam levados ao estado 0. A semente do RNG para esta amostragem pode ser definida usando o seed() método.

reverse_qargs

reverse_qargs()

GitHub

Retorna um Statevector com ordenação de subsistema invertida.

Para um estado de produto tensorial, isso é equivalente a inverter a ordem dos subsistemas de produto tensorial. Para um vetor de estado ψ=ψn1...ψ0|\psi \rangle = |\psi_{n-1} \rangle \otimes ... \otimes |\psi_0 \rangle, o vetor de estado retornado será ψ0...ψn1|\psi_{0} \rangle \otimes ... \otimes |\psi_{n-1} \rangle.

Retorna

o vetor de estado com ordem de subsistema invertida.

Tipo de retorno

Statevector

sample_counts

sample_counts(shots, qargs=None)

GitHub

Amostragem de um ditado de resultados de medição de qubit na base computacional.

Parâmetros

  • shots (int) – número de amostras a serem geradas.
  • qargs (None or list) – subsistemas para os quais as medições de amostra devem ser feitas; se nenhum, a medição de amostra de todos os subsistemas (Padrão: Nenhum).

Retorna

dicionário de contagens amostradas.

Tipo de retorno

Contagens

Mais informações:

Esta função amostra os resultados da medição usando a medida probabilities() para o estado atual e qargs. Na verdade, ele não implementa a medição, portanto, o estado atual não é modificado.

A semente do gerador de números aleatórios utilizada para a amostragem pode ser definida como um valor fixo por meio do método seed() state.

sample_memory

sample_memory(shots, qargs=None)

GitHub

Amostra de uma lista de resultados de medição de qubit na base computacional.

Parâmetros

  • shots (int) – número de amostras a serem geradas.
  • qargs (None or list) – subsistemas para os quais as medições de amostra devem ser feitas; se nenhum, a medição de amostra de todos os subsistemas (Padrão: Nenhum).

Retorna

lista das contagens amostradas na ordem em que foram amostradas.

Tipo de retorno

np.array

Mais informações:

Esta função amostra os resultados da medição usando a medida probabilities() para o estado atual e qargs. Na verdade, ele não implementa a medição, portanto, o estado atual não é modificado.

A semente do gerador de números aleatórios utilizada para a amostragem pode ser definida como um valor fixo por meio do método seed() state.

seed

seed(value=None)

GitHub

Defina a semente para o RNG de estado quântico.

tensor

tensor(other)

GitHub

Retorna o estado do produto tensorial self ⊗ other.

Parâmetros

other (Statevector) – um objeto de estado quântico.

Retorna

o operador de produto tensorial self ⊗ other.

Tipo de retorno

Statevector

Aumentos

QiskitError - se outro não for um estado quântico.

to_dict

to_dict(decimals=None)

GitHub

Converte o vetor de estado para o formato de dicionário.

Essa representação de dicionário usa uma notação do tipo Ket, em que as chaves do dicionário são cadeias de caracteres qudit para os vetores de base do subsistema. Se algum subsistema tiver uma dimensão maior que 10, serão inseridos delimitadores de vírgula entre os números inteiros para que os subsistemas possam ser distinguidos.

Parâmetros

decimals (None or int) – o número de casas decimais para arredondar os valores. Se for None, nenhum arredondamento será feito (Padrão: None).

Retorna

o formato de dicionário do vetor de estado.

Tipo de retorno

dict

Exemplo

A forma ket de um vetor de estado de 2 qubits ψ=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)}

Para subsistemas sem qubit, o intervalo de números inteiros pode ir de 0 a 9. Por exemplo, em um sistema qutrit

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)}

Para grandes dimensões do subsistema, são necessários delimitadores. O exemplo a seguir é para um sistema de 20 dimensões que consiste em um qubit e um qudit de 10 dimensões.

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

Converter o estado em um operador de projetor rank-1

Tipo de retorno

Operador

trace

trace()

GitHub

Retorna o traço do estado quântico como uma matriz de densidade.

Tipo de retorno

float64

Esta página foi útil?
Relate um bug, erro de digitação ou solicite conteúdo no GitHub.