PhaseOracle
class qiskit.circuit.library.PhaseOracle(expression, var_order=None)
Bases : QuantumCircuit
Phase Oracle.
L'objet Phase Oracle construit des circuits pour n'importe quelle expression logique d'entrée arbitraire. Une expression logique est composée des opérateurs logiques & (ET logique), | (OU logique), ~ (NOT logique) et ^ (XOR logique). ainsi que des symboles pour les littéraux (variables). Par exemple, "a & b" et ( v0 | ~v1 ) & ( ~v2 & v3 ) sont tous deux des représentations valables d'expressions logiques booléennes.
Un oracle de phase pour une fonction booléenne f(x) effectue l'opération quantique suivante :
Pour des raisons pratiques, cet oracle, en plus d'analyser des expressions logiques arbitraires, prend également en charge les chaînes d'entrée dans le format CNF DIMACS, qui est le format standard pour spécifier les instances de problèmes de SATisfiabilité (SAT) en forme normale conjonctive (CNF), qui est une conjonction d'une ou plusieurs clauses, où une clause est une disjonction d'un ou plusieurs éléments littéraux. Voir qiskit.circuit.library.phase_oracle.PhaseOracle.from_dimacs_file().
À partir de 16 variables, il faut s'attendre à des problèmes de performance lors de l'utilisation du synthétiseur par défaut.
La classe qiskit.circuit.library.phase_oracle.PhaseOracle est obsolète depuis Qiskit 2.2. Elle sera supprimée à Qiskit 3.0. Utilisez plutôt la classe qiskit.circuit.library.PhaseOracleGate.
Paramètres
- expression (str | BooleanExpression) – Une chaîne d'expression booléenne de type Python ou un objet BooleanExpression.
- var_order (list[str] | None) – Une liste indiquant l'ordre dans lequel les variables seront créées. (par défaut : par ordre d'apparition)
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_circuitMéthodes
evaluate_bitstring
evaluate_bitstring(bitstring)
Évaluer l'oracle sur une chaîne de bits. Cette évaluation est réalisée de manière classique, sans circuit quantique.
Paramètres
bitstring (str) – La chaîne de bits à évaluer. La chaîne de bits d'entrée est censée être dans l'ordre little-endian.
Retours
Vrai si la chaîne de bits est un bon état, Faux sinon.
Type de retour
from_dimacs_file
classmethod from_dimacs_file(filename)
Créer un PhaseOracle à partir de la chaîne au format DIMACS.
Il est possible de construire un site PhaseOracle à partir d'un fichier au format CNF de DIMACS, qui est le format standard pour spécifier des instances de problèmes de SATisfiabilité (SAT) en forme normale conjonctive (CNF), qui est une conjonction d'une ou de plusieurs clauses, où une clause est une disjonction d'un ou de plusieurs littéraux.
Voici un exemple de CNF exprimée dans le format DIMACS :
c DIMACS CNF file with 3 satisfying assignments: 1 -2 3, -1 -2 -3, 1 2 -3.
p cnf 3 5
-1 -2 -3 0
1 -2 3 0
1 2 -3 0
1 -2 -3 0
-1 2 3 0La première ligne, après le caractère « c », est un commentaire. La deuxième ligne précise que la CNF porte sur trois variables booléennes — appelons-les — et comporte cinq clauses. Les cinq clauses énumérées ci-après sont implicitement conjonctionnées par l'opérateur logique ET, , tandis que les variables de chaque clause, représentées par leurs indices, sont implicitement disjonctionnées par l'opérateur logique OU, . Le symbole précédant l'indice d'une variable booléenne correspond à l'opérateur logique NON, . Le caractère 0 (zéro) marque la fin de chaque clause. En substance, le code ci-dessus correspond à la CNF suivante :
.
Paramètres
filename (str) – Un fichier au format DIMACS.
Retours
Un circuit quantique avec un oracle de phase.
Type de retour