Delen via


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