Использование квантовых вентилей в библиотеке Qiskit на Python, часть первая
Всем привет! Меня зовут Сергей Ширкин, это моя первая публикация на vc.ru. Немного о себе: моя основная деятельность связана с математикой, машинным обучением и искусственным интеллектом.
Я работаю дата сайентистом в Dentsu Aegis, а также являюсь деканом факультетов Искусственного интеллекта и Аналитики Big Data в GeekUniversity на образовательном портале GeekBrains.
С этой статьи я начинаю рассказ про то, как работать с квантовыми вычислениями на Python, используя библиотеку Qiskit. Этот цикл статей рассчитан на аудиторию, которая уже знает в общих чертах, что такое квантовые вычисления, а также владеет математикой на уровне первого курса вуза (в основном потребуется линейная алгебра и комплексные числа) и умеет программировать на Python. Здесь не будет научпопа и новостей, только квантовые вычисления в чистом виде. Если все пойдет хорошо, то также мы начнем изучать квантовое машинное обучение, библиотеку PennyLane и многое другое.
Итак, начинаем.
Квантовые вентили (quantum gates) в квантовых вычислениях играют примерно такую же роль, как логические операторы (НЕ, И, ИЛИ и т.д.) в вычислениях, выполняемых с помощью классических компьютеров. В частности, практически аналогично логическому оператору НЕ действует квантовый вентиль X: кубит, на который он воздействует, меняет свое значение на противоположное:
То же самое действие можно привести в векторной форме:
Загрузим необходимые модули из библиотеки qiskit (в данном примере используется квантовый симулятор, но можно также и использовать квантовый компьютер в качестве бэкенда) и запишем последовательность этих операций, а также в конце измерим состояние кубита:
Как известно, состояния кубита (квантового бита), в отличие от классического бита, помимо базисных состояний 0 и 1 (для кубита используются обозначения |0⟩ и |1⟩), может включать в себя также и сочетание этих состояний, взятых с определенной амплитудой. Такое явление, когда кубит находится сразу в двух состояниях с разной вероятностью (до измерения кубита его состояние не может быть точно установлено), называется суперпозицией. Амплитуда может быть не только положительной, но и отрицательной, а в общем случае она является комплексным числом. Квадрат модуля амплитуды равен вероятности состояния.
В данном примере кубит переходит в состояние суперпозиции - в этом случае такой, что вероятность возникновения состояний |0⟩ и |1⟩ равна 50% (несмотря на то, что их амплитуды противоположны по знаку). Для получения суперпозиции используется оператор Адамара:
Подействуем таким оператором на кубит, изначально имеющий состояние 1:
Состояние кубита, которое мы получили до измерения, соответствует одному из базисных векторов базиса Адамара, который обозначается как |-⟩. Получить из него другой базисный вектор |+⟩ можно с помощью квантового вентиля Z:
В коде применение вентиля Z выглядит так:
Если производить измерение такого кубита в базисе векторов |0⟩ и |1⟩, то примерно в половине случаев будет получаться состояние |0⟩, а в другой половине |1⟩.
Мы рассмотрели применение простейших квантовых вентилей к однокубитной системе.
В следующей части изучим более сложные квантовые вентили, операции с двумя кубитами, а также рассмотрим работу с сервисом облачных квантовых вычислений IBM Q Experience.
Показываем, как сохранить за собой номер телефона и не переживать за доступ к картам и аккаунтам, если вы не пользуетесь SIM-картой постоянно.
А быстрее всех «умерла» GPT-4o.
Чтобы воспользоваться этим методом, нужно зарегистрироваться в системе и привязать биометрию к банковской карте.
Спрос будет, считает он.
Хабр переехал на vc?
Я бы ожидал такое прочесть на хабре
Очень обрадовался когда увидел в названии Qiskit, но почему-то пропало желание читать после упоминания GeekBrains.