№ 1804Квантовые вычисленияУровень 2

Полный протокол сверхплотного кодирования

Вход — два классических бита для передачи.

Напишите операцию на языке Q#, собирающую шаги предыдущих заданий в полный протокол:

1. Подготовьте состояние Белла.
2. Закодируйте два классических бита в состоянии кубитов, применяя квантовые вентили к одному кубиту пары Белла.
3. Декодируйте два классических бита из полученного состояния.
4. Верните результат декодирования.

Полные вспомогательные операции из предыдущих упражнений даны в заготовке.

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

namespace Kata {
    operation SuperdenseCodingProtocol(message : (Bool, Bool)) : (Bool, Bool) {
        // Implement your solution here...

        return (false, false);
    }

    // You might find these helper operations from earlier tasks useful.
    operation CreateEntangledPair(qAlice : Qubit, qBob : Qubit) : Unit is Adj {
        H(qAlice);
        CNOT(qAlice, qBob);
    }

    operation EncodeMessageInQubit(qAlice : Qubit, message : (Bool, Bool)) : Unit {
        let (bit1, bit2) = message;

        if bit2 {
            X(qAlice);
        }

        if bit1 {
            Z(qAlice);
        }
    }

    operation DecodeMessageFromQubits(qAlice : Qubit, qBob : Qubit) : (Bool, Bool) {
        CNOT(qAlice, qBob);
        H(qAlice);
        return (MResetZ(qAlice) == One, MResetZ(qBob) == One);
    }
}

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

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