Sposta
class Move(label=None)
Basi: Instruction
Un'istruzione a due qubit che rappresenta un reset del secondo qubit seguito da uno swap.
Simbolo del circuito:
┌───────┐
q_0: ┤0 ├ q_0: ──────X─
│ Move │ = │
q_1: ┤1 ├ q_1: ─|0>──X─
└───────┘L'effetto desiderato di questa istruzione, in genere, è quello di spostare lo stato del primo qubit sul secondo qubit. Affinché questo funzioni come previsto, il secondo qubit in arrivo non deve condividere alcun entanglement con il resto del sistema. Se questo qubit è entangled, l'esecuzione dell'operazione di reset implementerà a sua volta un canale quantistico sugli altri qubit con cui è entangled, provocando il collasso parziale di questi qubit.
Il modo più semplice per garantire che il secondo qubit (cioè quello di destinazione) non condivida l'entanglement con il resto del sistema è quello di utilizzare un qubit nuovo, che non sia stato utilizzato dopo l'inizializzazione.
Un altro modo valido è quello di utilizzare, come qubit di desinazione, un qubit il cui uso immediatamente precedente è stato come qubit sorgente (cioè primo) di un'operazione precedente Move operazione.
Il circuito seguente contiene due Move operazioni, corrispondenti a ciascuno dei casi citati:
import numpy as np
from qiskit import QuantumCircuit
from qiskit_addon_cutting.instructions import Move
qc = QuantumCircuit(4)
qc.ryy(np.pi / 4, 0, 1)
qc.rx(np.pi / 4, 3)
qc.append(Move(), [1, 2])
qc.rz(np.pi / 4, 0)
qc.ryy(np.pi / 4, 2, 3)
qc.append(Move(), [2, 1])
qc.ryy(np.pi / 4, 0, 1)
qc.rx(np.pi / 4, 3)
qc.draw("mpl")Una dimostrazione completa delle Move è disponibile nell' esercitazione introduttiva sul taglio del filo.
Creare un'istruzione Move istruzione.
Attributi
Parametri
label (str | None)
base_class
Ottiene la classe base di questa istruzione. È garantita la presenza nell'albero ereditario di self.
La "classe base" di un'istruzione è la classe più bassa dell'albero di ereditarietà con cui l'oggetto deve essere considerato completamente compatibile per le applicazioni dei circuiti. Questo in genere significa che la sottoclasse è definita solo per offrire una sorta di comodità al programmatore rispetto alla classe base, mentre la classe base è la "vera" classe dal punto di vista comportamentale. In particolare, non si dovrebbe sovrascrivere base_class se si sta definendo una versione personalizzata di un'istruzione che sarà implementata in modo diverso dall'hardware, come ad esempio una strategia di misura alternativa, o una versione di un gate parametrizzato con un particolare insieme di parametri per distinguerlo in un sito Target dal gate parametrizzato completo.
Spesso è esattamente equivalente a type(obj), tranne nel caso di istanze singleton di istruzioni della libreria standard. Queste istanze singleton sono sottoclassi speciali della loro classe base e questa proprietà restituirà la classe base. Ad esempio:
>>> isinstance(XGate(), XGate)
True
>>> type(XGate()) is XGate
False
>>> XGate().base_class is XGate
TrueIn generale, non si dovrebbe fare affidamento sulla classe precisa di un'istruzione; all'interno di un determinato circuito, si prevede che Instruction.name sia un discriminante più adatto nella maggior parte delle situazioni.
condition
La condizione classica sull'istruzione.
La proprietà qiskit.circuit.instruction.Instruction.condition è deprecata a partire da qiskit 1.3.0. Verrà rimosso in 2.0.0.
condition_bits
Ottenere Clbit in condizione.
La proprietà qiskit.circuit.instruction.Instruction.condition_bits è deprecata a partire da qiskit 1.3.0. Verrà rimosso in 2.0.0.
decompositions
Ottenere le scomposizioni dell'istruzione da SessionEquivalenceLibrary.
definition
Definizione di ritorno in termini di altri cancelli di base.
duration
Ottenere la durata.
La proprietà qiskit.circuit.instruction.Instruction.duration è deprecata a partire da qiskit 1.3.0. Verrà rimosso in Qiskit 2.0.0.
label
Etichetta di istruzioni per la restituzione
mutable
Questa istanza è un'istanza unica mutabile o meno.
Se questo attributo è False , l'istanza del gate è un singleton condiviso e non è mutabile.
name
Restituisce il nome.
num_clbits
Restituisce il numero di clbit.
num_qubits
Restituisce il numero di qubit.
params
I parametri di questo Instruction. Idealmente si tratta di angoli di passaggio.
unit
Ottiene l'unità di tempo della durata.
La proprietà qiskit.circuit.instruction.Instruction.unit è deprecata a partire da qiskit 1.3.0. Verrà rimosso in Qiskit 2.0.0.
Metodi
add_decomposition
add_decomposition(decomposition)
Aggiungere una decomposizione dell'istruzione a SessionEquivalenceLibrary.
assemble
assemble()
Assemblare un QasmQobjInstruction
Il metodo qiskit.circuit.instruction.Instruction.assemble() è deprecato a partire da qiskit 1.2. Verrà rimosso nella versione 2.0. La classe Qobj e le relative funzionalità fanno parte del flusso di lavoro deprecato di BackendV1 e non sono più necessarie per BackendV2. Se un flusso di lavoro dell'utente richiede Qobj, probabilmente si basa su una funzionalità deprecata e dovrebbe essere aggiornato per utilizzare BackendV2.
broadcast_arguments
broadcast_arguments(qargs, cargs)
Convalida degli argomenti.
Parametri
- qargs (List) – Elenco degli argomenti dei bit quantici.
- cargs (List) – Elenco degli argomenti classici dei bit.
Attese
Tuple(List, List) - Una tupla con singoli argomenti.
Aumenti
CircuitError - Se l'input non è valido. Ad esempio, il numero di argomenti non corrisponde alle aspettative del gate.
c_if
c_if(classical, val)
Impostare una condizione di uguaglianza classica su questa istruzione tra il registro o il cbit classical e il valore val.
Si tratta di un metodo setter, non additivo. Se viene richiamato più volte, annulla silenziosamente qualsiasi condizione impostata in precedenza; non si sovrappone.
Il metodo qiskit.circuit.instruction.Instruction.c_if() è deprecato a partire da qiskit 1.3.0. Verrà rimosso in 2.0.0.
copy
copy(name=None)
Copia dell'istruzione.
Parametri
name (str) – nome da assegnare al circuito copiato, se None il nome rimane invariato.
Risultati
una copia dell'istruzione corrente, con il nome aggiornato se è stato fornito
Tipo di restituzione
inverse
inverse(annotated=False)
Invertire questa istruzione.
Se annotated è False, l'istruzione inversa viene implementata come una nuova istruzione con la definizione ricorsivamente invertita.
Se annotated è True, l'istruzione inversa è implementata come AnnotatedOperation e corrisponde all'istruzione data annotata con il "modificatore inverso".
Le istruzioni speciali che ereditano da Instruction possono implementare il proprio inverso (ad esempio T e Tdg, Barrier, ecc.) In particolare, possono scegliere come gestire l'argomento annotated , tra cui ignorarlo e restituire sempre una classe gate concreta se l'inverso è definito come gate standard.
Parametri
annotated (bool) – se impostato su True, l'uscita del gate inverso verrà restituita come AnnotatedOperation.
Risultati
L'operazione inversa.
Aumenti
CircuitError - se l'istruzione non è composita e non è stato implementato un inverso per essa.
is_parameterized
is_parameterized()
Restituisce se Instruction contiene parametri in tempo di compilazione.
repeat
repeat(n)
Crea un'istruzione con self ripetuta :math`n` volte.
Se questa operazione ha una condizione, l'istruzione di uscita avrà la stessa condizione e le operazioni interne ripetute saranno incondizionate; le istruzioni all'interno di una definizione composta non possono essere condizionate sui registri nel modello di dati di Qiskit. Ciò significa che non è valido applicare un'istruzione ripetuta a un clbit che nella sua condizione scrive e legge.
Parametri
n (int) – Numero di volte in cui ripetere l'istruzione
Risultati
Contiene la definizione.
Tipo di restituzione
Aumenti
CircuitError - Se n < 1.
reverse_ops
reverse_ops()
Per un'istruzione composta, invertire l'ordine delle sottoistruzioni.
Ciò avviene invertendo ricorsivamente tutte le sottoistruzioni. Non inverte alcun cancello.
Risultati
una nuova istruzione con
le sottoistruzioni invertite.
Tipo di restituzione
soft_compare
soft_compare(other)
Confronto soft tra i gate. I loro nomi, il numero di qubit e i numeri di bit classici devono corrispondere. Il numero di parametri deve corrispondere. Ogni parametro viene confrontato. Se uno è un ParameterExpression non viene preso in considerazione.
Parametri
other (instruction) – altre istruzioni.
Risultati
sono auto e altri uguali fino alle espressioni dei parametri.
Tipo di restituzione
to_mutable
to_mutable()
Restituisce una copia mutabile di questo gate.
Questo metodo restituisce una nuova copia mutabile di questa istanza di gate. Se si utilizza un'istanza singleton, questa sarà una nuova istanza unica che può essere mutata. Se l'istanza è già mutabile, sarà una copia profonda di quell'istanza.
validate_parameter
validate_parameter(parameter)
I parametri delle istruzioni non hanno alcuna convalida o normalizzazione.