Общие сведения о языке программирования Q# и пакете средств разработки Quantum (QDK)

Учимся программировать квантовый компьютер на основе игры «Морской бой»

«Квантовые компьютеры — довольно интересный новый вид вычислительной техники. Они словно мчатся через немыслимое количество параллельных вселенных, чтобы быстрее запускать программы. В их работе используются принципы, вводившие в заблуждение даже Эйнштейна. Это волшебные коробки, из-за которых ваши блоки с транзисторами будут храниться в пыли», — вероятно, такой текст вы увидите в популярных научных статьях. Они, несомненно, внесли свой вклад в то, чтобы новая технология звучала здорово. Однако они же, авторы подобных статей, могут превратить квантовые вычисления в какое-то оккультное искусство, заниматься которым позволено только самым умным учёным. Но несмотря на то, что это не так, большая часть программистов не увлекается квантовыми вычислениями.

Такие компании, как IBM и Google, занимаются созданием квантовых устройств. Это значит, что время игры с кубитами уже настало.

На начальном этапе программирования квантовых компьютеров вам ничего сверхъестественного делать не нужно будет. Ведь можно начать своё путешествие в мир квантового программирования с того же, с чего начинается и стандартное программирование — с создания игр.

Не беспокойтесь, для этого не нужно иметь собственное квантовое вычислительное устройство. Запуск простых квантовых программ можно симулировать на обычном компьютере благодаря сервисам IBM.

Примечание Обратите внимание, что код на Python, приведённый в статье, далёк от идеала и служит лишь для объяснения принципов работы квантового компьютера.

Рассматриваемая игра относится к самым первым играм для квантовых компьютеров. Для полного понимания её работы в статье будут показаны блоки кода, так что можете экспериментировать по ходу статьи.

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

Что можно сделать с помощью QDK

QDK — это полнофункциональный пакет средств разработки для Q#, который можно использовать с традиционными инструментами и языками для разработки квантовых приложений и их запуска в различных средах. Программы Q# можно запускать как консольные приложения (с помощью Jupyter Notebook) либо использовать ведущую программу Python или .NET.

Разработка в привычных средах с помощью знакомых инструментов

Вы можете интегрировать процесс квантовой разработки с такими инструментами, как Visual Studio, Visual Studio Code и Jupyter Notebooks. Используйте встроенные API для связывания своих программ с языками Python и .NET.

Квантовые операции и тематические библиотеки

Создавайте и тестируйте квантовые алгоритмы, чтобы понять принципы суперпозиции, запутанности и других квантовых операций. Библиотеки Q# позволяют выполнять сложные квантовые операции без необходимости разрабатывать последовательности низкоуровневых операций.

Отправка заданий в службу Azure Quantum

Создавайте программы для квантовых вычислений и квантовой оптимизации и отправляйте эти программы в Azure Quantum для их выполнения на основе партнерских поставщиков и решателей оптимизации.

Выполнение программ в симуляторах

Вы можете выполнять квантовые программы в квантовом симуляторе полного состояния, в симуляторе Тоффоли с ограниченной областью действия или тестировать код Q# в разных средствах оценки ресурсов.

Open Quantum Assembly Language (OpenQASM)

Исходный код OpenQASM был выпущен как часть программного обеспечения IBM Quantum Information Software Kit (QISKit) для использования с квантовой вычислительной платформой Quantum Experience. OpenQASM имеет общие черты со специализированными языками программирования (такими, как Verilog), используемыми для описания структуры и поведения электронных схем.

Программы QASM фактически всегда начинаются одинаково: мы определяем все биты, которые нам понадобятся — как квантовые, так и нормальные. Ниже приведен пример исходного кода OpenQASM. Программа добавляет два четырехбитовых номера.

Высокоуровневый язык программирования Q# нивелирует необходимость иметь глубокие знания в квантовой физике. Для заинтересованных в учебнике по языку дается информация по основным концепциям квантовых вычислений, охватывающая векторную и матричную математику, кубиты, обозначения Дирака, принцип Паули и квантовые схемы.

Скрипт Teleportation.qs из учебника по Q#. Учебник доступен здесь

Q# выглядит не так, как большинство других языков программирования, и несколько похож на C#.

Quantum Development Kit предоставляется бесплатно с подробными инструкциями по его установке и вводным учебным программам. Q# компилируется на квантовом симуляторе Visual Studio, имитируя квантовый процессор на 32 кубита. Симулятор может имитировать до 40 кубитов.

Если следовать туториалу от Microsoft, то процесс обучения пойдет от наблюдения запутанных состояний из двух кубитов к моделированию квантовой телепортации.

Обозначение Qubit

Мы часто обозначаем кубиты, используяНотация дирака, также известный какBra-кет обозначения, Эта запись является просто удобным способом записи векторов. Бюстгальтер представляет векторы строк и обозначается ⟨ ∣ ; кет представляет векторы столбцов и обозначается ∣ ⟩ , Например, мы можем записать состояния «0» и «1» кубита в нотации Bra-ket следующим образом (будьте осторожны, чтобы не перепутать, что находится внутри bra / ket с тем, что находится внутри вектора!):

Кубиты могут быть либо вчистые состоянияилисмешанные состояния, Если состояние кубита может быть полностью описано с использованием линейной комбинации ∣0⟩ а также ∣1⟩ , тогда мы говорим, что в чистом виде. Мы часто обозначаем кубиты чистого состояния, используя следующие обозначения:

Вот несколько примеров чисто государственных кубитов и общих сокращений для их обозначения.

Другие кубиты требуют, чтобы смеси чистых состояний полностью описывали их, поэтому мы называем их смешанными кубитами состояний. Другими словами, кубит со смешанным состоянием описывается распределением вероятностей по чистым состояниям. Далее мы увидим пример смешанных кубитов состояния в этой статье (я укажу на это).

Трудности разработки ПО

Разработка ПО для квантовых компьютеров требует дополнительных навыков по сравнению с созданием традиционного. Учитывая высокие темпы эволюции квантового оборудования, необходимо активно развивать технологии и методы создания ПО для квантовых систем. Недостаточно только подчеркивать значимость такого ПО [1] — нужно продвигать дисциплину его инженерии. Параллельное развитие оборудования и ПО будет возможным, если работать с различными слоями сложных систем с использованием симуляции и дробления на меньшие компоненты [3].

Появление ПО для квантовых конфигураций, отвечающего отраслевым требованиям к быстродействию и надежности, будет означать выход программных технологий на новый уровень. Более того, квантовые вычисления способны положить начало новому «золотому веку» программной инженерии. Но для этого еще нужно преодолеть ряд трудностей и воспользоваться всеми возможностями квантовых систем, адаптироваться и создать нужные модели, стандарты и методы, которые помогут разрабатывать новые квантовые конфигурации и переносить существующие. Одним из этапов этой работы станет создание соответствующих инструментариев и обнародование их характеристик.

Квантовые программные платформы и инструментарии пока еще сложны для практического применения, они не обеспечивают контекстуальную поддержку при разработке алгоритмов. Предполагается, что разработчик уже знает, каким образом задействовать каждый продукт на соответствующей платформе. Вместе с тем доступны наборы алгоритмов для квантового ПО — например, обширный каталог Quantum Algorithm Zoo. Однако, чтобы иметь возможность работать с различным квантовым оборудованием, необходимы знания о требованиях и библиотеках каждой архитектуры.

Что такое квантовый компьютер?

Вычислительное устройство, которое для передачи и обработки данных использует такие явления квантовой механики, как квантовая суперпозиция или квантовая запутанность.

Квантовый компьютер (КК) в отличие от обычного оперирует не битами, способными принимать значение либо 0, либо 1, а так называемыми кубитами, имеющими значения одновременно и 0, и 1.

Теоретически, это позволяет обрабатывать все возможные состояния одновременно, достигая существенного превосходства над обычными компьютерами в ряде алгоритмов. Полноценный универсальный КК является, однако, пока лишь гипотетическим устройством.

На конец 2010-х годов практически были реализованы лишь единичные экспериментальные системы, исполняющие фиксированные алгоритмы небольшой сложности. Первым практическим высокоуровневым языком программирования для такого вида компьютеров считается язык Quipper.

Основная проблема квантового компьютера состоит в создании устойчивых методов изолирования кубитов и систем кубитов от воздействия внешних помех, мешающих производить квантовые расчеты и считывать их результаты.

End of insertion

В последнее десятилетие квантовым вычислениям уделяется повышенное внимание, поскольку такие компьютеры способны решать определенные задачи быстрее, чем классические вычислительные устройства.

Однако до сих пор трудно сказать, когда квантовые компьютеры станут доступны ученым, поскольку в настоящее время любые устройства на основе принципов квантового компьютера все еще слишком нестабильны и работают с большим количеством проблем.

Язык квантового программирования Silq помогает разобраться с источником этих проблем, от которых страдает квантовое программирование, а именно, он помогает выявлять и стирать временные пакеты данных, произведенные компьютером, но которые больше не нужны для решения той или иной задачи.

Ocean

ПО Ocean — это набор инструментов, предоставляемых D-Wave для решения сложных задач с помощью квантовых компьютеров. Программное обеспечение выполняет вычисления, необходимые для преобразования случайных задач в форму, которую может решить квантовый компьютер.

Если вы хотите начать путешествие в мир квантовых вычислений, вот несколько ресурсов, которые могут пригодиться:

1. Документация для Forest и pyQuil

Этот обучающий гайд содержит руководства к SDK, включая pyQuil, компилятор Rigetti Quil и квантовую виртуальную машину.

Их облачные сервисы также предлагают пользователям точки доступа к вантовым компьютерам.

2. Документация для Ocean

Документация для Ocean знакомит обучающихся с базовыми концепциями установки и пользования инструментами Ocean простым и понятным способом. SDK включает многочисленные пакеты, полезные для квантового программирования.

3. Полное руководство пользователя IBM Q

Полное руководство пользователя IBM Q позволяет создавать квантовые модели и приложения с помощью квантовой лаборатории IBM, интерфейса Jupyter, оптимизированного для Qiskit.

4. Заметки Джона Прескилла о квантовых вычислениях

Этот ресурс наиболее подробный, если речь идет о презентации концепций квантовых вычислений. Он знакомит обучающихся с физикой, лежащей в основе удивительных квантовых явлений перед тем, как углубиться в основы квантовых вычислительных моделей.

Это обязательно к прочтению для всех тех, кто хочет получить глубокие знания о квантовой программировании.

5. Туториалы Qiskit

В этом ресурсе содержится коллекция руководств Jupyter для тех, кто хочет использовать Qiskit для написания программ для квантового компьютера и их выполнения на онлайновых квантовых симуляторах. Он стремительно растет и приветствует вклад от онлайн-сообщества для улучшения качества ресурса.

Подождите, почему вы хотите изучать квантовое программирование?

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

С чем мы все можем согласиться — так это с тем, что знание о квантовых вычислениях даст преимущество первопроходца, когда этот вид вычислений приобретет масштабы. Так что не сидите на месте! Пользуйтесь преимуществом настоящего, чтобы насладиться изучением технологий будущего.

Оцените статью
Fobosworld.ru
Добавить комментарий

Adblock
detector