PhaseOracle
class qiskit.circuit.library.PhaseOracle(expression, var_order=None)
Basi: QuantumCircuit
Fase Oracle.
L'oggetto Phase Oracle costruisce circuiti per qualsiasi espressione logica arbitraria in ingresso. Un'espressione logica è composta dagli operatori logici & (AND logico), | (OR logico), ~ (NOT logico) e ^ (XOR logico). nonché i simboli per i letterali (variabili). Ad esempio, "a & b" e ( v0 | ~v1 ) & ( ~v2 & v3 ) sono entrambe rappresentazioni valide di espressioni logiche booleane.
Un oracolo di fase per una funzione booleana f(x) esegue la seguente operazione quantistica:
Per comodità, questo oracolo, oltre ad analizzare espressioni logiche arbitrarie, supporta anche stringhe di input nel formato DIMACS CNF, che è il formato standard per specificare istanze di problemi di SATisfiabilità (SAT) in Conjunctive Normal Form (CNF), ovvero una congiunzione di una o più clausole, dove una clausola è una disgiunzione di uno o più letterali. Vedere qiskit.circuit.library.phase_oracle.PhaseOracle.from_dimacs_file().
A partire da 16 variabili, si devono prevedere possibili problemi di prestazioni quando si utilizza il sintetizzatore predefinito.
La classe qiskit.circuit.library.phase_oracle.PhaseOracle è deprecata a partire da Qiskit 2.2. Verrà rimosso in Qiskit 3.0. Utilizzare invece la classe qiskit.circuit.library.PhaseOracleGate.
Parametri
- expression (str | BooleanExpression) – Una stringa di espressione booleana simile a Python o un oggetto BooleanExpression.
- var_order (list[str] | None) – Un elenco con l'ordine in cui verranno create le variabili. (impostazione predefinita: in base all'aspetto)
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_circuitMetodi
evaluate_bitstring
evaluate_bitstring(bitstring)
Valutare l'oracolo su una stringa di bit. Questa valutazione viene effettuata in modo classico senza alcun circuito quantistico.
Parametri
bitstring (str) – La stringa di bit da valutare. La stringa di bit in ingresso deve essere in ordine little-endian.
Risultati
Vero se la stringa di bit è uno stato buono, falso altrimenti.
Tipo di restituzione
from_dimacs_file
classmethod from_dimacs_file(filename)
Crea un PhaseOracle dalla stringa nel formato DIMACS.
È possibile costruire un PhaseOracle a partire da un file in formato DIMACS CNF, che è il formato standard per specificare istanze di problemi di SATisfiabilità (SAT) in Conjunctive Normal Form (CNF), ovvero una congiunzione di una o più clausole, dove una clausola è una disgiunzione di uno o più letterali.
Di seguito è riportato un esempio di CNF espressa nel formato 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 prima riga, dopo il carattere «c», è un commento. La seconda riga specifica che il CNF riguarda tre variabili booleane — chiamiamole — e contiene cinque clausole. Le cinque clausole, elencate di seguito, sono implicitamente unite dall'operatore logico AND, , mentre le variabili in ciascuna clausola, rappresentate dai loro indici, sono implicitamente disgiunte dall'operatore logico OR, . Il simbolo che precede l'indice di una variabile booleana corrisponde all'operatore logico NOT, . Il carattere 0 (zero) segna la fine di ciascuna clausola. In sostanza, il codice sopra riportato corrisponde alla seguente CNF:
.
Parametri
filename (str) – Un file in formato DIMACS.
Risultati
Un circuito quantistico con un oracolo di fase.
Tipo di restituzione