Skip to main content
IBM Quantum Platform

HiddenLinearFunction

class qiskit.circuit.library.HiddenLinearFunction(adjacency_matrix)

GitHub

Bases: QuantumCircuit

Circuito para resolver o problema da função linear oculta.

O problema da função linear oculta 2D é determinado por uma matriz de adjacência 2D A, em que somente os elementos que são vizinhos mais próximos em uma grade têm entradas diferentes de zero. Cada linha/coluna corresponde a uma variável binária xix_i.

O problema da função linear oculta é o seguinte:

Considere a forma quadrática

q(x)=i,j=1nxixj (mod 4)q(x) = \sum_{i,j=1}^{n}{x_i x_j} ~(\mathrm{mod}~ 4)

e restringir q(x)q(x) ao espaço nulo de A. Isso resulta em uma função linear.

2i=1nzixi (mod 4)xKer(A)2 \sum_{i=1}^{n}{z_i x_i} ~(\mathrm{mod}~ 4) \forall x \in \mathrm{Ker}(A)

e o objetivo é recuperar essa função linear (ou seja, um vetor [z0,...,zn1][z_0, ..., z_{n-1}] ). Pode haver várias soluções.

Em [1], é mostrado que o circuito atual resolve esse problema em um computador quântico com profundidade constante, enquanto qualquer solução correspondente em um computador clássico exigiria circuitos que crescem logaritmicamente com nn. Portanto, esse circuito é um exemplo de vantagem quântica com circuitos rasos.

Circuito de referência:

Diagrama que ilustra o circuito descrito anteriormente.

Referências

[1] S. Bravyi, D. Gosset, R. Koenig, Quantum Advantage with Shallow Circuits, 2017. arXiv:1704.00690

Criar um novo circuito HLF.

Descontinuado desde a versão 2.1

A classe qiskit.circuit.library.hidden_linear_function.HiddenLinearFunction está obsoleta desde o Qiskit 2.1. Ele será removido no Qiskit 3.0. Em vez disso, use qiskit.circuit.library.hidden_linear_function.

Parâmetros

adjacency_matrix (list | np.ndarray) – uma lista simétrica n por n de listas 0-1. n será o número de qubits.

Aumentos

CircuitError - Se A não for simétrico.


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
Esta página foi útil?
Relate um bug, erro de digitação ou solicite conteúdo no GitHub.