다음을 통해 공유


레이블 다시 지정 작업

정규화된 이름: Std.Canon.Relabel

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

요약

current 배열의 큐비트를 updated 배열의 큐비트로 다시 레이블을 지정합니다. updated 배열은 current 배열의 유효한 순열이어야 합니다.

입력

전류

레이블을 다시 지정할 큐비트의 배열입니다.

업데이트

current 배열의 레이블을 다시 지정할 큐비트의 배열입니다.

발언

이 작업은 양자 연산이 발생하지 않는 방식으로 큐비트의 레이블을 다시 지정해야 하는 경우에 유용합니다. 큐비트 연결이 제한된 하드웨어에서 실행을 위해 컴파일하는 경우 이 작업으로 인해 큐비트 인접성이 변경되지 않을 수 있으며 하나 이상의 SWAP 게이트가 여전히 필요할 수 있습니다.

본보기

다음 예제에서는 레지스터에서 큐비트의 레이블을 다시 지정하는 방법을 보여 줍니다.

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

이 작업 후에는 qubits[0] 사용하면 원래 qubits[2]큐비트 등을 참조합니다. SWAP 게이트에 해당하는 가상의 두 큐비트에서 레이블을 교환하려면 다음 코드를 사용할 수 있습니다.

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

이 연산의 부호는 인수 순서를 효과적으로 변경하므로 Adjoint Relabel(qubits, newOrder)Relabel(newOrder, qubits)동일합니다.