Я ищу квантовый алгоритм, который я могу использовать для демонстрации синтаксиса различных квантовых языков. Мой вопрос похож на это , однако для меня «хорошо» означает:
- То, что он делает, может быть описано в 1-2 параграфах, и должно быть легко понять.
- Следует использовать больше элементов «мира квантового программирования» (я имею в виду, что алгоритм должен использовать как можно больше классических констант, измерений, условий, регистров, операторов и т. Д.).
- Алгоритм должен быть небольшим (максимум 15-25 псевдокодов).
Полезные алгоритмы часто бывают слишком длинными / сложными, но алгоритм Дойча не использует столько элементов. Может кто-нибудь предложить мне алгоритм «демо-версия»?
algorithm
resource-request
programming
klenium
источник
источник
Ответы:
Я предлагаю взглянуть на протоколы оценки собственного значения / собственного вектора. Существует большая гибкость, чтобы сделать задачу настолько простой или сложной, насколько вы хотите.
Начните с выбора двух параметров,n а также k , Вы хотите создатьn -кубит унитарный, U имеет собственные значения вида e−2πiq/2k для целых чисел q , Убедитесь, что хотя бы одно из этих собственных значений уникально, и назовите егоω , Также убедитесь, что простое состояние продукта, скажем,|0⟩⊗n , имеет ненулевое перекрытие с собственным вектором собственного значения ω ,
Цель состоит в том, чтобы реализовать алгоритм оценки фазы для этого, учитывая значениеk и поручено вывести вектор |ψ⟩ это собственный вектор, соответствующий собственному значению ω , В общем, это будет состоять изn+k кубиты (если вам не нужны вспомогательные средства для реализацииU ).
Это работает следующим образом:
Для простоты вы можете выбратьn=2 , k=1 так что тебе нужна 4×4 унитарная матрица с собственными значениями ±1 , Я бы использовал что-то вроде
Для чего-то более сложного, положитеk=3 и заменить C с квадратным корнем из ворот своп,
источник
Похоже, вы хотите квантовый «Hello World». Наиболее простой квантовой версией этого было бы просто записать двоично-закодированную версию текста
Hello World
в регистр кубитов. Но это потребует ~ 100 кубитов и будет длиннее вашего верхнего предела длины кода.Итак, давайте напишем более короткую часть текста. Давайте напишем
;)
, нам нужна строка битов длиной 16. В частности, используя кодировку ASCIIИспользуя QISKit, вы сделаете это, используя следующий код.
Конечно, это не очень квант. Таким образом, вы можете сделать суперпозицию из двух разных смайликов. Самый простой пример - наложение;) на 8), поскольку битовые строки для них отличаются только на кубитах 8 и 9.
Таким образом, вы можете просто заменить строки
из вышеизложенного с
Адамар создает суперпозицию
0
и1
, а узел превращает ее в суперпозицию00
и11
на два кубита. Это единственная обязательная суперпозиция для;)
и8)
.Если вы хотите увидеть реальную реализацию этого, это можно найти в руководстве по QISKit (полное раскрытие: оно было написано мной).
источник
Я бы предложил (идеальный) 1-битный генератор случайных чисел. Это почти тривиально легко:
Вы начинаете с одного кубита в обычном начальном состоянии| 0 ⟩ , Затем вы применяете ворота АдамараЧАС который производит равную суперпозицию | 0 ⟩ а также | 1 ⟩ , Наконец, вы измеряете этот кубит, чтобы получить 0 или 1, каждый с вероятностью 50%.
источник