Aracılığıyla paylaş


ApplyControlledOnBitString işlemi

Tam ad: Std.Canon.ApplyControlledOnBitString

operation ApplyControlledOnBitString<'T>(bits : Bool[], oracle : ('T => Unit is Adj + Ctl), controlRegister : Qubit[], target : 'T) : Unit is Adj + Ctl

Özet

oracle targettarafından belirtilen durumda olduğunda controlRegisterbits uygular.

Açıklama

belirli bir bit maskesi oracletarafından belirtilen bir durumda denetlenen targetbits bir birim işlem uygular. bits[i]'daki bit, controlRegister[i]'daki kubite karşılık gelir. bits tarafından verilen desen controlRegister'den kısa olabilir; bu durumda ek denetim kubitleri yoksayılır (yani, |0⟩ veya |1⟩ üzerinde denetlenemez). bits controlRegister'den uzunsa bir hata oluşur.

Girdi

Bit

Verilen birim işlemini denetlemek için bit dizesi.

Oracle

Hedefe uygulanacak birim işlemi.

hedef

Giriş olarak oracle geçirilecek hedef.

controlRegister (Kontrol Et)

oracleuygulamasını denetleen bir kuantum yazmaç.

Örnek

// When bits = [1,0,0] oracle is applied if and only if controlRegister
// is in the state |100⟩.
use t = Qubit();
use c = Qubit[3];
X(c[0]);
ApplyControlledOnBitString([true, false, false], X, c, t);
Message($"{M(t)}"); // Prints `One` since oracle `X` was applied.