№ 1491Квантовая связьУровень 3

Перенести запутанность между двумя парами

Алиса и Боб независимо располагают своими парами в состоянии $|\Phi^+\rangle=(|00\rangle+|11\rangle)/\sqrt2$. Каждый отдаёт один кубит своей пары Чарли. Он может телепортировать состояние полученного от Алисы кубита на оставшийся у Боба кубит. Боб выполняет поправки, зависящие от результатов Чарли. В итоге оставшиеся у Алисы и Боба кубиты должны образовать $|\Phi^+\rangle$, хотя они никогда не взаимодействовали.

Напишите операцию Q#, возвращающую пару операций:

1. Операция Чарли принимает два переданных ему кубита и выдаёт целое число — закодированное классическое сообщение для Боба.
2. Операция Боба принимает оставшийся у него кубит и это число, затем корректирует кубит так, чтобы два удалённых кубита оказались в общем состоянии $|\Phi^+\rangle$.

Нужно реализовать две отдельные вспомогательные операции и вернуть их, а не помещать весь протокол в тело верхней операции. Заготовка содержит вспомогательные SendMessage и ReconstructMessage из обычной телепортации.

Заготовка Q#:

namespace Kata {
    import Std.Convert.*;

    operation EntanglementSwapping() : ((Qubit, Qubit) => Int, (Qubit, Int) => Unit) {
        return (SendMessageCharlie, ReconstructMessageBob);
    }

    // The skeleton operations for two parts of the protocol.
    operation SendMessageCharlie(qAlice1 : Qubit, qBob1 : Qubit) : Int {
        // Implement your solution here...
        return -1;
    } 

    operation ReconstructMessageBob(qBob2 : Qubit, resultCharlie : Int) : Unit {
        // Implement your solution here...
    }

    // You might find these helper operations from earlier tasks useful.
    operation SendMessage(qAlice: Qubit, qMessage: Qubit) : (Bool, Bool) {
        CNOT(qMessage, qAlice);
        H(qMessage);
        return (M(qMessage) == One, M(qAlice) == One);
    }

    operation ReconstructMessage(qBob : Qubit, (b1 : Bool, b2 : Bool)) : Unit {
        if b1 {
            Z(qBob);
        }
        if b2 {
            X(qBob);
        }
    }
}

Предложить решение

Войти, чтобы отправить материал.