Skip to main content
IBM Quantum Platform

PhaseOracle

class qiskit.circuit.library.PhaseOracle(expression, var_order=None)

GitHub

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:

∣x⟩↦(−1)f(x)∣x⟩|x\rangle \mapsto (-1)^{f(x)}|x\rangle

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.

Veraltet seit Version 2.2

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_circuit

Methoden

evaluate_bitstring

evaluate_bitstring(bitstring)

GitHub

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

bool

from_dimacs_file

classmethod from_dimacs_file(filename)

GitHub

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 0

Die 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 „ x1,x2,x3x_1, x_2, x_3 “ – und fünf Klauseln enthält. Die fünf im Folgenden aufgeführten Klauseln werden implizit durch den logischen UND-Operator ∧\land verknüpft, während die Variablen in jeder Klausel, die durch ihre Indizes dargestellt werden, implizit durch den logischen ODER-Operator ∨\lor verknüpft werden. Das Symbol −- vor einem booleschen Variablenindex entspricht dem logischen NICHT-Operator ¬\lnot. Das Zeichen 0 (Null) markiert das Ende jeder Klausel. Im Wesentlichen entspricht der obige Code der folgenden CNF:

(¬x1∨¬x2∨¬x3)∧(x1∨¬x2∨x3)∧(x1∨x2∨¬x3)∧(x1∨¬x2∨¬x3)∧(¬x1∨x2∨x3)(\lnot x_1 \lor \lnot x_2 \lor \lnot x_3) \land (x_1 \lor \lnot x_2 \lor x_3) \land (x_1 \lor x_2 \lor \lnot x_3) \land (x_1 \lor \lnot x_2 \lor \lnot x_3) \land (\lnot x_1 \lor x_2 \lor x_3).

Parameter

filename (str) – Eine Datei im DIMACS-Format.

Rückgabe

Eine Quantenschaltung mit einem Phasenorakel.

Rückgabetyp

PhaseOracle

War diese Seite hilfreich?
Melden Sie auf GitHub einen Fehler, einen Tippfehler oder fordern Sie Inhalte an.