Compartilhar via


Operação de relançar

Nome totalmente qualificado: Std.Canon.Relabel

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

Resumo

Relança 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 rotulados novamente.

atualizado

Matriz de qubits com os quais relançar a matriz de current.

Observações

Essa operação é útil quando você precisa relançar qubits de uma maneira que não incorre 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 do qubit e uma ou mais SWAP portões ainda podem ser necessárias.

Exemplo

O exemplo a seguir demonstra como relançar 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] fará referência ao qubit que foi originalmente qubits[2]e assim por diante. Para trocar os rótulos em dois qubits, o equivalente virtual de uma porta de SWAP, você pode usar o seguinte código:

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

Observe que o adjacente dessa operação altera efetivamente a ordem dos argumentos, de modo que Adjoint Relabel(qubits, newOrder) é equivalente a Relabel(newOrder, qubits).