Запрос относительно неожиданного поведения при контролируемых операциях в QDK - PullRequest
1 голос
/ 20 июня 2020

Я изучал QDK и наблюдаю за предоставленным выводом для следующей программы:

Программа: '' '

operation BitIsOne( qs : Qubit[] ): Unit is  Adj+Ctl
{
    Message( "Is One" );
    X(qs[0]);                                        // added in update
}

operation BitIsZero( qs: Qubit[] ): Unit is Adj+Ctl
{
    Message( "Is Zero" );
}

operation RandomBehavior( qs: Qubit[] ) : Unit is Adj+Ctl
{
    X( qs[0] );
    Controlled BitIsZero( [qs[0]], Rest( qs ) );
    X( qs[0] );
    Controlled BitIsOne( [qs[0]], Rest( qs ) );
    DumpMachine("");                                 // added in update
}
 
operation TestFunc3() : Unit is Adj+Ctl
{
    using( qs = Qubit[3] )
    {
        RandomBehavior( qs[0..1] );  
    }
}

@EntryPoint()
operation Start2() : Unit {
    Message(" Started Execution");
    TestFunc3();
}

Вывод:

Started Execution
Is Zero
Is One

Я не понимаю, почему здесь напечатано Is One ? Входной кубит, который я думал, был 00, поэтому почему вторая управляемая операция выполнила функцию BitIsOne ?

Обновление для предоставления запрошенной информации, которая поддерживает объяснение в ответе (Код правки для получения информации и подтверждения включены объяснения)

Вывод DumpMachine. Изменил функцию BitIsOne, чтобы включить X (qs [0]). Это показывает, что квантовая операция выполнялась не в части else, а в классической функции

Изменил функцию BitIsOne , чтобы включить X (qs [0]). Это показывает, что квантовая операция не выполнялась в части else, но классическая функция «Сообщение» выполнялась.

1 Ответ

1 голос
/ 20 июня 2020

Попробуйте измерить кубиты в конце и поделитесь результатом. Должно быть 00, несмотря на то, что было напечатано. «Управление» в кванте не ведет себя как классический оператор IF, поскольку и часть «THEN», и часть «ELSE» «выполняются». Неквантовый оператор «Сообщение» «выполняется» в части «ELSE», хотя с квантовой точки зрения часть «ELSE» является «No-Op» (идентичность).

...