StabilizerState
class qiskit.quantum_info.StabilizerState(data, validate=True)
Bases: QuantumState
StabilizerState classe. Simulador de estabilizador usando a convenção da referência [1]. Com base na classe interna Clifford.
from qiskit import QuantumCircuit
from qiskit.quantum_info import StabilizerState, Pauli
# Bell state generation circuit
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
stab = StabilizerState(qc)
# Print the StabilizerState
print(stab)
# Calculate the StabilizerState measurement probabilities dictionary
print (stab.probabilities_dict())
# Calculate expectation value of the StabilizerState
print (stab.expectation_value(Pauli('ZZ')))StabilizerState(StabilizerTable: ['+XX', '+ZZ'])
{'00': 0.5, '11': 0.5}
1Dada uma lista de estabilizadores, qiskit.quantum_info.StabilizerState.from_stabilizer_list() retorna um estado estabilizado pela lista
from qiskit.quantum_info import StabilizerState
stabilizer_list = ["ZXX", "-XYX", "+ZYY"]
stab = StabilizerState.from_stabilizer_list(stabilizer_list)Referências
- S. Aaronson, D. Gottesman, Improved Simulation of Stabilizer Circuits (Simulação aprimorada de circuitos estabilizadores ), Phys. Rev. A 70, 052328 (2004). arXiv:quant-ph/0406196
Inicializar um objeto StabilizerState.
Parâmetros
- data (StabilizerState |Clifford |Pauli |QuantumCircuit |circuit.instruction.Instruction) – Dados a partir dos quais o estado do estabilizador pode ser construído.
- validate (bool) – validar se os dados de estado do estabilizador são um Clifford válido.
Atributos
clifford
Retornar dados de StabilizerState Clifford
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.
Métodos
conjugate
copy
dims
equiv
equiv(other)
Retorna True se os dois conjuntos geradores gerarem o mesmo grupo estabilizador.
Parâmetros
other (StabilizerState) – outro StabilizerState.
Retorna
Verdadeiro se o outro tiver um conjunto gerador que gere o mesmo StabilizerState.
Tipo de retorno
evolve
evolve(other, qargs=None)
Evolua um estado estabilizador por um operador de Clifford.
Parâmetros
- other (Clifford orQuantumCircuit orqiskit.circuit.Instruction) – O operador de Clifford para evoluir.
- qargs (list) – uma lista de posições do subsistema do estabilizador às quais aplicar o operador.
Retorna
o estado do estabilizador de saída.
Tipo de retorno
Aumentos
- QiskitError - se o outro não for um StabilizerState.
- QiskitError - se a dimensão do operador não corresponder às dimensões do subsistema StabilizerState especificadas.
expand
expand(other)
Retorna o estado do estabilizador do produto tensorial other ⊗ self.
Parâmetros
other (StabilizerState) – um objeto de estado do estabilizador.
Retorna
o operador de produto tensorial other ⊗ self.
Tipo de retorno
Aumentos
QiskitError - se o outro não for um StabilizerState.
expectation_value
expectation_value(oper, qargs=None)
Calcule o valor de expectativa de um operador Pauli ou SparsePauliOp.
Parâmetros
- oper (Pauli |SparsePauliOp) – Um operador Pauli ou SparsePauliOp para avaliar o valor de expectativa.
- qargs (None | list) – Subsistemas nos quais o operador deve ser aplicado.
Retorna
O valor da expectativa.
Aumentos
QiskitError - se oper não for um operador Pauli ou SparsePauliOp.
Tipo de retorno
from_stabilizer_list
classmethod from_stabilizer_list(stabilizers, allow_redundant=False, allow_underconstrained=False)
Crie um estado de estabilizador a partir da coleção de estabilizadores.
Parâmetros
- stabilizers (Collection[str]) – lista de cordas estabilizadoras
- allow_redundant (bool) – permitir estabilizadores redundantes (ou seja, alguns estabilizadores podem ser produtos de outros)
- allow_underconstrained (bool) – permitir um conjunto de estabilizadores sub-restrito (ou seja, os estabilizadores não especificam um estado único)
Retorna
um estado estabilizado por estabilizadores.
Tipo de retorno
is_valid
measure
measure(qargs=None)
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 do estabilizador pós-medição recolhido para o resultado correspondente.
Tipo de retorno
probabilities
probabilities(qargs=None, decimals=None)
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
probabilities_dict
probabilities_dict(qargs=None, decimals=None)
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 no formato dict (chave).
Tipo de retorno
probabilities_dict_from_bitstring
probabilities_dict_from_bitstring(outcome_bitstring, qargs=None, decimals=None)
Retorna o dicionário de probabilidade de medição do subsistema utilizando uma string de resultado_bit direcionada para realizar a medição. Isso calculará uma probabilidade para apenas um único valor de resultado direcionado_bitstring, proporcionando um aumento de desempenho em relação ao cálculo de todos os resultados possíveis.
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
- outcome_bitstring (None or str) – sequência de bits do resultado alvo para a qual se deseja realizar o cálculo da medição; isso reduzirá significativamente o número de cálculos realizados (Padrão: Nenhum)
- 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, não é feito nenhum arredondamento (Padrão: None)
Retorna
As probabilidades de medição na forma dict (ket).
Tipo de retorno
purity
purity()
Retorna a pureza do estado quântico, que é igual a 1, pois é sempre um estado puro.
Retorna
a pureza (deve ser igual a 1).
Tipo de retorno
Aumentos
QiskitError - se a entrada não for um StabilizerState.
reset
reset(qargs=None)
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
Informações adicionais:
Se todos os subsistemas forem redefinidos, isso retornará o estado de aterramento em todos os subsistemas. Se apenas alguns subsistemas forem redefinidos, essa função executará uma medição nesses subsistemas e os desenvolverá de modo que os estados colapsados pós-medição sejam girados para o estado 0. A semente do RNG para essa amostragem pode ser definida usando o método seed() método.
sample_counts
sample_counts(shots, qargs=None)
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
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)
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:
Essa função implementa o método de medição
measure()método.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
tensor
tensor(other)
Retorna o estado do estabilizador do produto tensorial self ⊗ other.
Parâmetros
other (StabilizerState) – um objeto de estado do estabilizador.
Retorna
o operador de produto tensorial self ⊗ other.
Tipo de retorno
Aumentos
QiskitError - se o outro não for um StabilizerState.
to_operator
trace
trace()
Retorna o traço do estado estabilizador como uma matriz de densidade, que é igual a 1, pois é sempre um estado puro.
Retorna
o rastro (deve ser igual a 1).
Tipo de retorno
Aumentos
QiskitError - se a entrada não for um StabilizerState.