Как передать регистр кубитов через объект Oracle в Q # - PullRequest
0 голосов
/ 06 июля 2018

Предположим, я создал объект ReflectionOracle, используя функцию ReflectionStart (), которая отражает ось | 00 ... 00>. Но как мне пройти мой регистр кубитов через этого оракула? Поскольку этот Oracle является объектом, я не могу использовать его как функцию. Существует ли стандартный инструмент библиотеки, похожий на UseOracle (refleoracle, register)?

1 Ответ

0 голосов
/ 07 июля 2018

Функции являются объектами первого класса в Q #, так что вы можете просто вызвать переменную, в которой вы храните результат вызова ReflectionStart. Более того, поскольку эта операция имеет adjoint, вы также можете вызвать сопряженную с ней, например:

operation Operation () : ()
{
    body
    {
        using (qubits = Qubit[5])
        {
            let oracle = ReflectionStart();
            oracle(0.5, qubits);
            (Adjoint oracle)(0.5, qubits);
        }
    }
}
...