Поделиться через


Операция ApplyControlledOnBitString

Полное имя: 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.