Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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.