Operasi pelabelan

Nama yang sepenuhnya memenuhi syarat: Std.Canon.Relabel

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

Ringkasan

Melabeli kembali qubit dalam array current dengan qubit dalam array updated. Array updated harus merupakan permutasi array current yang valid.

Masukan

arus

Array qubit yang akan dilabeli kembali.

Diperbarui

Array qubit untuk melabeli ulang array current.

Komentar

Operasi ini berguna ketika Anda perlu melabeli qubit dengan cara yang tidak menimbulkan operasi kuantum apa pun. Perhatikan bahwa saat mengkompilasi untuk eksekusi pada perangkat keras dengan konektivitas kubit terbatas, operasi ini mungkin tidak mengakibatkan perubahan pada adjacency qubit dan satu atau beberapa gerbang SWAP mungkin masih diperlukan.

Contoh

Contoh berikut menunjukkan cara melabeli kubit dalam register:

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

Setelah operasi ini, setiap penggunaan qubits[0] akan mengacu pada qubit yang awalnya qubits[2], dan sebagainya. Untuk bertukar label pada dua qubit, yang setara dengan gerbang SWAP, Anda dapat menggunakan kode berikut:

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

Perhatikan bahwa berdekatan dari operasi ini secara efektif mengubah urutan argumen, sehingga Adjoint Relabel(qubits, newOrder) setara dengan Relabel(newOrder, qubits).