Skip to main content
IBM Quantum Platform

HiddenLinearFunction

class qiskit.circuit.library.HiddenLinearFunction(adjacency_matrix)

GitHub

Bases: QuantumCircuit

Circuito para resolver el problema de la función lineal oculta.

El problema 2D Hidden Linear Function está determinado por una matriz de adyacencia A de 2D, donde sólo los elementos que son vecinos más cercanos en una cuadrícula tienen entradas distintas de cero. Cada fila/columna corresponde a una variable binaria xix_i.

El problema de la función lineal oculta es el siguiente

Consideremos la forma cuadrática

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

y restringir q(x)q(x) al espacio nulo de A. El resultado es una función lineal.

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

y el objetivo es recuperar esta función lineal (equivalentemente un vector [z0,...,zn1][z_0, ..., z_{n-1}] ). Puede haber múltiples soluciones.

En [1] se demuestra que el presente circuito resuelve este problema en un ordenador cuántico de profundidad constante, mientras que cualquier solución correspondiente en un ordenador clásico requeriría circuitos que crecen logarítmicamente con nn. Así pues, este circuito es un ejemplo de ventaja cuántica con circuitos poco profundos.

Circuito de referencia:

Diagrama que ilustra el circuito descrito anteriormente.

Referencias:

[1] S. Bravyi, D. Gosset, R. Koenig, Ventaja cuántica con circuitos poco profundos, 2017. arXiv:1704.00690

Crear un nuevo circuito HLF.

Obsoleto desde la versión 2.1

La clase qiskit.circuit.library.hidden_linear_function.HiddenLinearFunction está obsoleta a partir de Qiskit 2.1. Se eliminará en Qiskit 3.0. Utilice qiskit.circuit.library.hidden_linear_function en su lugar.

Parámetros

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

Eleva

CircuitError - Si A no es simétrico.


Atributos

name

Tipo: str

Un nombre legible para el circuito.

Ejemplo

from qiskit import QuantumCircuit

qc = QuantumCircuit(2, 2, name="my_circuit")
print(qc.name)
my_circuit
¿Le ha resultado útil esta página?
Informe de un error, de una errata o solicite contenido en GitHub.