Yeniden etiketleme işlemi

Tam ad: Std.Canon.Relabel

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

Özet

current dizisindeki kubitleri updated dizisindeki kubitlerle yeniden etiketler. updated dizisi, current dizisinin geçerli bir permütasyonu olmalıdır.

Girdi

geçerli

Yeniden etiketlenecek kubit dizisi.

Güncel -leştirilmiş

current dizisinin yeniden etiketlendiği kubit dizisi.

Açıklamalar

Bu işlem, kubitleri herhangi bir kuantum işlemine neden olmayacak şekilde yeniden etiketlemeniz gerektiğinde kullanışlıdır. Sınırlı kubit bağlantısına sahip donanımlarda yürütme için derleme yapılırken bu işlemin kubit bitişikliği üzerinde herhangi bir değişiklik yapılmasına neden olmayabileceğini ve bir veya daha fazla SWAP kapısı gerekebileceğini unutmayın.

Örnek

Aşağıdaki örnekte, bir yazmaçtaki kubitlerin nasıl yeniden etiketlendir olduğu gösterilmektedir:

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

Bu işlemden sonra, qubits[0] kullanımı başlangıçta qubits[2]olan kubite başvurur ve bu şekilde devam eder. Etiketleri bir SWAP geçidinin sanal eşdeğeri olan iki kubitte değiştirmek için aşağıdaki kodu kullanabilirsiniz:

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

Bu işlemin bir parçasının bağımsız değişkenlerin sırasını etkili bir şekilde değiştirdiğini, Adjoint Relabel(qubits, newOrder)Relabel(newOrder, qubits)eşdeğer olduğunu unutmayın.