Bewerking opnieuw labelen
Volledig gekwalificeerde naam: Std.Canon.Relabel
operation Relabel(current : Qubit[], updated : Qubit[]) : Unit is Adj
Samenvatting
Labelt de qubits in de current
matrix opnieuw met de qubits in de updated
matrix. De updated
matrix moet een geldige permutatie van de current
matrix zijn.
Invoer
actueel
Matrix van qubits die opnieuw moeten worden gelabeld.
Bijgewerkt
Matrix van qubits waarmee de current
-matrix opnieuw moet worden gelabeld.
Opmerkingen
Deze bewerking is handig wanneer u qubits opnieuw moet labelen op een manier die geen kwantumbewerkingen met zich meebrengt.
Houd er rekening mee dat bij het compileren van uitvoering op hardware met beperkte qubitconnectiviteit, deze bewerking mogelijk niet leidt tot wijzigingen in qubit-aangrenzing en een of meer SWAP
poorten mogelijk nog steeds vereist zijn.
Voorbeeld
In het volgende voorbeeld ziet u hoe u qubits opnieuw labelt in een register:
use qubits = Qubit[3];
let newOrder = [qubits[2], qubits[0], qubits[1]];
Relabel(qubits, newOrder);
Na deze bewerking verwijst elk gebruik van qubits[0]
naar de qubit die oorspronkelijk is qubits[2]
, enzovoort.
Als u de labels wilt uitwisselen op twee qubits, het virtuele equivalent van een SWAP
-poort, kunt u de volgende code gebruiken:
use (q0, q1) = (Qubit(), Qubit());
Relabel([q0, q1], [q1, q0]);
Houd er rekening mee dat de aangrenzende bewerking de volgorde van argumenten effectief wijzigt, zodat Adjoint Relabel(qubits, newOrder)
gelijk is aan Relabel(newOrder, qubits)
.