Udostępnij przez


Zastosuj operację ApplyControlledOnBitString

W pełni kwalifikowana nazwa: Std.Canon.ApplyControlledOnBitString

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

Streszczenie

Stosuje oracle w target, gdy controlRegister jest w stanie określonym przez bits.

Opis

Stosuje operację jednostkową oracle na target, kontrolowaną w stanie określonym przez daną maskę bitową bits. Bit w bits[i] odpowiada kubitowi w controlRegister[i]. Wzorzec podany przez bits może być krótszy niż controlRegister, w takim przypadku dodatkowe kubity sterowania są ignorowane (czyli nie są kontrolowane w lokalizacji |0⟩ ani |1⟩). Jeśli bits jest dłuższy niż controlRegister, zostanie zgłoszony błąd.

Wkład

Bitów

Ciąg bitowy do sterowania daną operacją jednostkową.

wyrocznia

Operacja jednostkowa, która ma zostać zastosowana w obiekcie docelowym.

cel

Element docelowy, który ma zostać przekazany do oracle jako dane wejściowe.

controlRegister (kontrolaRejestr)

Rejestr kwantowy, który kontroluje zastosowanie oracle.

Przykład

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