PhaseOracle
class qiskit.circuit.library.PhaseOracle(expression, var_order=None)
Basen: QuantumCircuit
Phase Oracle.
Das Objekt Phase Oracle konstruiert Schaltungen für beliebige logische Ausdrücke. Ein logischer Ausdruck setzt sich aus den logischen Operatoren & (logisches UND), | (logisches ODER), ~ (logisches NICHT) und ^ (logisches XOR) zusammen. sowie Symbole für Literale (Variablen). So sind zum Beispiel "a & b" und ( v0 | ~v1 ) & ( ~v2 & v3 ) beides gültige Zeichenkettendarstellungen von booleschen logischen Ausdrücken.
Ein Phasenorakel für eine boolesche Funktion f(x) führt die folgende Quantenoperation durch:
Der Einfachheit halber unterstützt dieses Orakel neben dem Parsen beliebiger logischer Ausdrücke auch Eingabestrings im DIMACS-CNF-Format, dem Standardformat für die Spezifikation von SATisfiability (SAT)-Problemfällen in Conjunctive Normal Form (CNF ), die eine Konjunktion von einer oder mehreren Klauseln ist, wobei eine Klausel eine Disjunktion von einem oder mehreren Literalen ist. Siehe qiskit.circuit.library.phase_oracle.PhaseOracle.from_dimacs_file().
Ab 16 Variablen ist bei der Verwendung des Standard-Synthesizers mit Leistungseinbußen zu rechnen.
Die Klasse qiskit.circuit.library.phase_oracle.PhaseOracle ist ab Qiskit 2.2 veraltet. Sie wird in Qiskit 3.0 entfernt. Verwenden Sie stattdessen die Klasse qiskit.circuit.library.PhaseOracleGate.
Parameter
- expression (str | BooleanExpression) – Eine Python -ähnliche Zeichenkette mit booleschem Ausdruck oder ein BooleanExpression Objekt.
- var_order (list[str] | None) – Eine Liste mit der Reihenfolge, in der die Variablen angelegt werden. (Standard: nach Aussehen)
Attribute
name
Typ: str
Ein von Menschen lesbarer Name für den Stromkreis.
Beispiel
from qiskit import QuantumCircuit
qc = QuantumCircuit(2, 2, name="my_circuit")
print(qc.name)my_circuitMethoden
evaluate_bitstring
evaluate_bitstring(bitstring)
Das Orakel auf einem Bitstring auswerten. Diese Auswertung erfolgt klassisch ohne Quantenschaltung.
Parameter
bitstring (str) – Der Bitstring, der ausgewertet werden soll. Es wird erwartet, dass die Eingabe-Bitstrings in Little-Endian-Reihenfolge vorliegen.
Rückgabe
True, wenn der Bitstring ein guter Zustand ist, sonst False.
Rückgabetyp
from_dimacs_file
classmethod from_dimacs_file(filename)
Erstellen Sie eine PhaseOracle aus der Zeichenkette im DIMACS-Format.
Es ist möglich, eine PhaseOracle aus einer Datei im DIMACS-CNF-Format zu erstellen, dem Standardformat für die Spezifikation von SATisfiability (SAT)-Problemfällen in Conjunctive Normal Form (CNF ), die eine Konjunktion von einer oder mehreren Klauseln ist, wobei eine Klausel eine Disjunktion von einem oder mehreren Literalen ist.
Es folgt ein Beispiel für eine CNF, die im DIMACS-Format ausgedrückt ist:
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 0Die erste Zeile nach dem Zeichen „c“ ist ein Kommentar. Die zweite Zeile gibt an, dass die CNF über drei boolesche Variablen definiert ist – nennen wir sie „ “ – und fünf Klauseln enthält. Die fünf im Folgenden aufgeführten Klauseln werden implizit durch den logischen UND-Operator verknüpft, während die Variablen in jeder Klausel, die durch ihre Indizes dargestellt werden, implizit durch den logischen ODER-Operator verknüpft werden. Das Symbol vor einem booleschen Variablenindex entspricht dem logischen NICHT-Operator . Das Zeichen 0 (Null) markiert das Ende jeder Klausel. Im Wesentlichen entspricht der obige Code der folgenden CNF:
.
Parameter
filename (str) – Eine Datei im DIMACS-Format.
Rückgabe
Eine Quantenschaltung mit einem Phasenorakel.
Rückgabetyp