Dela via


ApplyControlledOnBitString-åtgärd

Fullständigt kvalificerat namn: Std.Canon.ApplyControlledOnBitString

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

Sammanfattning

Tillämpar oracletarget när controlRegister är i det tillstånd som anges av bits.

Beskrivning

Utför en enhetlig åtgärd oracletarget, som styrs av ett tillstånd som anges av en viss bitmask bits. Biten vid bits[i] motsvarar qubit vid controlRegister[i]. Mönstret som anges av bits kan vara kortare än controlRegister, och i så fall ignoreras ytterligare kontrollkvabitar (d.a.s. varken kontrolleras på |0⟩ eller |1⟩). Om bits är längre än controlRegisterutlöses ett fel.

Inmatning

Bitar

Bitsträngen som ska styra den angivna enhetsåtgärden på.

orakel

Den enhetsåtgärd som ska tillämpas på målet.

mål

Målet som ska skickas till oracle som indata.

controlRegister

Ett kvantregister som styr tillämpningen av oracle.

Exempel

// 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.