Operace přeznakování
Plně kvalifikovaný název: Std.Canon.Relabel
operation Relabel(current : Qubit[], updated : Qubit[]) : Unit is Adj
Shrnutí
Znovu označí qubity v poli current
s qubity v poli updated
. Pole updated
musí být platným permutací pole current
.
Vstup
současný
Pole qubitů, které se mají znovu oznamovat.
aktualizovaný
Pole qubitů, se kterými chcete znovu oznamovat current
pole.
Poznámky
Tato operace je užitečná, když potřebujete znovu oznamovat qubity způsobem, který nedochází k žádným kvantovým operacím.
Mějte na paměti, že při kompilaci pro spouštění na hardwaru s omezeným připojením qubitu nemusí tato operace vést ke změnám sousedství qubitu a jedna nebo více bran SWAP
může být stále vyžadována.
Příklad
Následující příklad ukazuje, jak znovu označit qubity v registru:
use qubits = Qubit[3];
let newOrder = [qubits[2], qubits[0], qubits[1]];
Relabel(qubits, newOrder);
Po této operaci bude jakékoli použití qubits[0]
odkazovat na qubit, který byl původně qubits[2]
atd.
Pokud chcete vyměnit popisky na dvou qubitech, virtuální ekvivalent brány SWAP
, můžete použít následující kód:
use (q0, q1) = (Qubit(), Qubit());
Relabel([q0, q1], [q1, q0]);
Všimněte si, že adjoint této operace účinně změní pořadí argumentů, aby Adjoint Relabel(qubits, newOrder)
je ekvivalentní Relabel(newOrder, qubits)
.