Skip to main content
IBM Quantum Platform

HiddenLinearFunction

class qiskit.circuit.library.HiddenLinearFunction(adjacency_matrix)

GitHub

Basi: QuantumCircuit

Circuito per risolvere il problema della funzione lineare nascosta.

Il problema della funzione lineare nascosta 2D è determinato da una matrice di adiacenza A 2D, in cui solo gli elementi che sono vicini a una griglia hanno voci non nulle. Ogni riga/colonna corrisponde a una variabile binaria xix_i.

Il problema della funzione lineare nascosta è il seguente:

Si consideri la forma quadratica

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

e restringere q(x)q(x) sullo spazio nullo di A. Il risultato è una funzione lineare.

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 l'obiettivo è recuperare questa funzione lineare (equivalentemente un vettore [z0,...,zn1][z_0, ..., z_{n-1}] ). Possono esistere più soluzioni.

In [1] si dimostra che il presente circuito risolve questo problema su un computer quantistico a profondità costante, mentre una soluzione corrispondente su un computer classico richiederebbe circuiti che crescono logaritmicamente con nn. Questo circuito è quindi un esempio di vantaggio quantistico con circuiti poco profondi.

Circuito di riferimento:

Schema che illustra il circuito precedentemente descritto.

Riferimenti:

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

Creare un nuovo circuito HLF.

Deprecato dalla versione 2.1

La classe qiskit.circuit.library.hidden_linear_function.HiddenLinearFunction è deprecata a partire da Qiskit 2.1. Verrà rimosso in Qiskit 3.0. Utilizzare invece qiskit.circuit.library.hidden_linear_function.

Parametri

adjacency_matrix (list | np.ndarray) – un elenco simmetrico n per n di liste 0-1. n sarà il numero di qubit.

Aumenti

CircuitError – Se A non è simmetrica.


Attributi

name

Tipo: str

Un nome leggibile per il circuito.

Esempio

from qiskit import QuantumCircuit

qc = QuantumCircuit(2, 2, name="my_circuit")
print(qc.name)
my_circuit
Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.