Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Полное имя: Std.Canon.ApplyControlledOnBitString
operation ApplyControlledOnBitString<'T>(bits : Bool[], oracle : ('T => Unit is Adj + Ctl), controlRegister : Qubit[], target : 'T) : Unit is Adj + Ctl
Сводка
Применяется oracletarget, если 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.