Skip to main content
IBM Quantum Platform

HiddenLinearFunction

class qiskit.circuit.library.HiddenLinearFunction(adjacency_matrix)

GitHub

Bases : QuantumCircuit

Circuit pour résoudre le problème de la fonction linéaire cachée.

Le problème des fonctions linéaires cachées ( 2D ) est déterminé par une matrice d'adjacence A ( 2D ), où seuls les éléments qui sont les plus proches voisins sur une grille ont des entrées non nulles. Chaque ligne/colonne correspond à une variable binaire xix_i.

Le problème de la fonction linéaire cachée est le suivant :

Considérons la forme quadratique

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

et restreindre q(x)q(x) à l'espace nul de A. Il en résulte une fonction linéaire.

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

et l'objectif est de retrouver cette fonction linéaire (équivalente à un vecteur [z0,...,zn1][z_0, ..., z_{n-1}] ). Il peut y avoir plusieurs solutions.

En [1], il est démontré que le présent circuit résout ce problème sur un ordinateur quantique à profondeur constante, alors que toute solution correspondante sur un ordinateur classique nécessiterait des circuits qui croissent de manière logarithmique avec nn. Ce circuit est donc un exemple d'avantage quantique avec des circuits peu profonds.

Circuit de référence :

Schéma illustrant le circuit décrit précédemment.

Références :

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

Créer un nouveau circuit FHLM.

Déclassé depuis la version 2.1

La classe qiskit.circuit.library.hidden_linear_function.HiddenLinearFunction est obsolète depuis Qiskit 2.1. Elle sera supprimée à Qiskit 3.0. Utilisez plutôt qiskit.circuit.library.hidden_linear_function.

Paramètres

adjacency_matrix (list | np.ndarray) – une liste symétrique n-par-n de listes 0-1. n sera le nombre de qubits.

Augmentations

CircuitError – Si A n'est pas symétrique.


Attributs

name

Type : str

Un nom lisible par l'homme pour le circuit.

Exemple

from qiskit import QuantumCircuit

qc = QuantumCircuit(2, 2, name="my_circuit")
print(qc.name)
my_circuit
Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.