Partilhar via


Operação de reetiquetagem

Nome totalmente qualificado: Std.Canon.Relabel

operation Relabel(current : Qubit[], updated : Qubit[]) : Unit is Adj

Resumo

Rerotula os qubits na matriz current com os qubits na matriz updated. A matriz updated deve ser uma permutação válida da matriz current.

Entrada

atual

Matriz de qubits a serem remarcados.

atualizado

Matriz de qubits com a qual rerotular a matriz current.

Comentários

Essa operação é útil quando você precisa rerotular qubits de uma forma que não incorra em nenhuma operação quântica. Observe que, ao compilar para execução em hardware com conectividade de qubit limitada, essa operação pode não resultar em alterações na adjacência de qubit e uma ou mais portas de SWAP ainda podem ser necessárias.

Exemplo

O exemplo a seguir demonstra como rerotular qubits em um registro:

use qubits = Qubit[3];
let newOrder = [qubits[2], qubits[0], qubits[1]];
Relabel(qubits, newOrder);

Após essa operação, qualquer uso de qubits[0] se referirá ao qubit que foi originalmente qubits[2]e assim por diante. Para trocar as etiquetas em dois qubits, o equivalente virtual de um portão de SWAP, você pode usar o seguinte código:

use (q0, q1) = (Qubit(), Qubit());
Relabel([q0, q1], [q1, q0]);

Note-se que o adjunto desta operação altera efetivamente a ordem dos argumentos, de modo que Adjoint Relabel(qubits, newOrder) é equivalente a Relabel(newOrder, qubits).