Skip to main content
IBM Quantum Platform

LinearAmplitudeFunction

class qiskit.circuit.library.LinearAmplitudeFunction(num_state_qubits, slope, offset, domain, image, rescaling_factor=1, breakpoints=None, name='F')

GitHub

Bases: QuantumCircuit

Um circuito que implementa uma função linear (por partes) em amplitudes de qubit.

Uma função de amplitude FF de uma função ff é um mapeamento

Fx0=1f^(x)x0+f^(x)x1.F|x\rangle|0\rangle = \sqrt{1 - \hat{f}(x)} |x\rangle|0\rangle + \sqrt{\hat{f}(x)} |x\rangle|1\rangle.

para uma função f^:{0,...,2n1}[0,1]\hat{f}: \{ 0, ..., 2^n - 1 \} \rightarrow [0, 1], em que x|x\rangle é um estado de qubit nn.

Esse circuito implementa o FF para funções lineares por partes f^\hat{f}. Nesse caso, o mapeamento FF pode ser implementado aproximadamente usando uma expansão de Taylor e rotações Pauli-Y linearmente controladas; consulte [1, 2] para obter mais detalhes. Essa aproximação usa o site rescaling_factor para determinar a precisão da expansão de Taylor.

Em geral, a função de interesse ff é definida a partir de algum intervalo [a,b][a,b], o domain para [c,d][c,d], o image, em vez de {1,...,N}\{ 1, ..., N \} para [0,1][0, 1]. Usando uma transformação afim, podemos redimensionar ff para f^\hat{f} :

f^(x)=f(ϕ(x))cdc\hat{f}(x) = \frac{f(\phi(x)) - c}{d - c}

com o

ϕ(x)=a+ba2n1x.\phi(x) = a + \frac{b - a}{2^n - 1} x.

Se ff for uma função linear por partes em intervalos mm [pi1,pi],i{1,...,m}[p_{i-1}, p_i], i \in \{1, ..., m\} com inclinações αi\alpha_i e deslocamentos βi\beta_i, ela poderá ser escrita como

f(x)=i=1m1[pi1,pi](x)(αix+βi)f(x) = \sum_{i=1}^m 1_{[p_{i-1}, p_i]}(x) (\alpha_i x + \beta_i)

onde 1[a,b]1_{[a, b]} é uma função indicadora que assume o valor 1 se o argumento estiver no intervalo [a,b][a, b] e, caso contrário, 0. Os pontos de interrupção pip_i podem ser especificados pelo breakpoints argumento.

Referências

[1] Woerner, S., e Egger, D. J. (2018). Análise de risco quântico. arXiv:1806.06893

[2] Gacon, J., Zoufal, C., & Woerner, S. (2020). Otimização baseada em simulação com aprimoramento quântico. arXiv:2005.10780

Descontinuado desde a versão 2.2

A classe qiskit.circuit.library.arithmetic.linear_amplitude_function.LinearAmplitudeFunction está obsoleta desde o Qiskit 2.2. Ele será removido no Qiskit 3.0. Em vez disso, use a classe qiskit.circuit.library.LinearAmplitudeFunctionGate.

Parâmetros

  • num_state_qubits (int) – O número de qubits usados para codificar a variável xx.
  • slope (float |list[float]) – A inclinação da função linear. Pode ser uma lista de inclinações se for uma função linear por partes.
  • offset (float |list[float]) – O deslocamento da função linear. Pode ser uma lista de deslocamentos se for uma função linear por partes.
  • domain (tuple[float, float]) – O domínio da função como uma tupla (xmin,xmax)(x_{\min}, x_{\max}).
  • image (tuple[float, float]) – A imagem da função como uma tupla (fmin,fmax)(f_{\min}, f_{\max}).
  • rescaling_factor (float) – O fator de redimensionamento para ajustar a precisão na aproximação de Taylor.
  • breakpoints (list[float] | None) – Os pontos de interrupção se a função for linear por partes. Se for None, a função não é por partes.
  • name (str) – Nome do circuito.

Atributos

name

Tipo: str

Um nome legível por humanos para o circuito.

Exemplo

from qiskit import QuantumCircuit

qc = QuantumCircuit(2, 2, name="my_circuit")
print(qc.name)
my_circuit

Métodos

post_processing

post_processing(scaled_value)

GitHub

Mapeie o valor da função do f^\hat{f} aproximado para ff.

Parâmetros

scaled_value (float) – Um valor de função da expansão de Taylor de f^(x)\hat{f}(x).

Retorna

O scaled_value foi mapeado de volta para o domínio do ff, primeiro invertendo a transformação usada para a aproximação de Taylor e, em seguida, mapeando de volta do [0,1][0, 1] para o domínio original.

Tipo de retorno

Valor flutuante

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