Операция ApplyControlledOnBitString
Полное имя: Std.Canon.ApplyControlledOnBitString
operation ApplyControlledOnBitString<'T>(bits : Bool[], oracle : ('T => Unit is Adj + Ctl), controlRegister : Qubit[], target : 'T) : Unit is Adj + Ctl
Сводка
Применяется oracle
target
, если controlRegister
находится в состоянии, указанном bits
.
Описание
Применяет унитарную операцию oracle
на target
, контролируемой состоянием, указанным заданным bits
битовой маской.
Бит в bits[i]
соответствует кубитам в controlRegister[i]
.
Шаблон, заданный bits
, может быть короче controlRegister
, в этом случае дополнительные кубиты управления игнорируются (т. е. ни на |0⟩, ни на |1⟩).
Если bits
больше controlRegister
, возникает ошибка.
Ввод
Биты
Битовая строка для управления заданной унитарной операцией.
оракул
Унитарная операция, применяемая к целевому объекту.
цель
Целевой объект, передаваемый в oracle
в качестве входных данных.
controlRegister
Квантовый регистр, который управляет применением oracle
.
Пример
// 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.