Sdílet prostřednictvím


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).