Quantum teleportation of a pure state modeled by a classical computer
- Используется python3
- Для квантовых операций используется библиотека qutip
- Для написания программы будет полезен гайд
- Также полезны библиотеки numpy, matplotlib
- Файл скрипта должен называться qteleportation.py
Весь алгоритм разбит на 4 функции:
- initialize(state) – создание трехкубитного состояния (кет-вектора), состоящего из исходного кубита, который необходимо телепортировать, и состояния Белла |Ф+>. На вход подается объект типа qutip.Qobj размерности [[2], [1]], его можно генерировать с помощью функции qutip.rand_ket(N=2). На выходе объект типа qutip.Qobj размерности [[2, 2, 2], [1, 1, 1]].
- evolute(state) – перепутывание телепортируемого кубита и состояния Белла. На входе трехкубитное состояние – объект типа qutip.Qobj размерности [[2, 2, 2], [1, 1, 1]]. На выходе объект типа qutip.Qobj размерности [[2, 2, 2], [1, 1, 1]].
- measure(state) – измерение с элементом случайности. На входе трехкубитное состояние после эволюции – объект типа qutip.Qobj размерности [[2, 2, 2], [1, 1, 1]]. На выходе случайное число от 0 до 3, 0 соответствует состоянию |00>, 1 -- |01>, 2 -- |10>, 3 -- |11>. Вероятность появления определенного числа определяется вероятностью измерения соответствующего состояния. Где реализации случайных измерений можно использовать numpy.choice.
- teleport(state, mres) – сама телепортация. На вход подается трехкубитное состояние после эволюции – объект типа qutip.Qobj размерности [[2, 2, 2], [1, 1, 1]], и случайное число от 0 до 3 – результат измерения. На выходе – состояние кубита после телепортации, объект типа qutip.Qobj размерности [[2], [1]].
Весь выполняемый при запуске скрипта код заносится под условие if __name__ == “__main__”.
- Зарегистрироваться на github
- Установить GitHub Desktop
- Написать в личные сообщения группы ВК свой ник github и дождаться приглашения
- Клонировать этот репозиторий в удобное место на компьютере
- Создать в корне репозитория папку с названием: фамилия студента транслитом и маленькими буквами.
- Создать в этой папке пустой файл __init__.py
- Создать в этой папке файл qteleportation.py
- Написать код.
- Можно пройти тесты, выполнив в корне репозитория команду pytest -v qtest.py
- Закоммитить код в репозиторий в ветку main
- Запушить коммит на github
- При непрохождении теста, если уверены в правильности написанного кода -- запушить код на github, открыть issue, описать проблему
- Посмотреть логи тестов в Actions