Як виглядатиме дуже проста квантова програма?


76

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

for i = 1 to 10
  print i
next i

Чи може хтось навести приклад коду порівнянної простоти, який би використовував квантові фотонні мікросхеми (або подібне обладнання), в псевдокоді або мові високого рівня? У мене виникають труднощі зробити концептуальний стрибок від традиційного програмування до заплутування тощо.


ваше посилання порушено
Суреш Венкат

1
+1 і для цього питання. Мені дуже цікаво мова програмування в іншій парадигмі, ніж у машинах Тьюрінга, однак далеко ми не можемо насправді виконувати код на квантовому комп'ютері.
Янома

Відповіді:


60

Caveat Emptor: наступне сильно упереджене в моїх власних дослідженнях та поглядах на поле QC. Це не становить загального консенсусу на місцях і навіть може містити певну саморекламу.

Проблема показу "привіт світу" квантових обчислень полягає в тому, що ми, як правило, ще далекі від квантових комп'ютерів, як Лейбніц або Беббідж, від вашого поточного комп'ютера. Хоча ми знаємо, як вони повинні працювати теоретично, не існує стандартного способу побудови фізичного квантового комп'ютера. Побічним ефектом цього є те, що не існує єдиної моделі програмування квантових обчислень. Підручники, такі як Nielsen та ін. покаже діаграму «квантової схеми», але вони далекі від формальних мов програмування: вони отримують трохи «махання руками» щодо деталей, таких як класичне управління або обробка результатів введення / виводу / вимірювання.

Те, що мені найбільше підходить у моєму дослідженні як інформатик з мов програмування, а також для того, щоб перетворити суть QC на інших вчених-комп'ютерів, - це використовувати найпростішу модель QC, яку я натрапив, і це все.

Найпростіша програма, з якої я бачив, що містить усі найважливіші елементи, - це невелика програма з трьома інструкціями в найпростішій моделі квантового програмування, яку я натрапила. Я використовую це, як ви б "привіт світ", щоб отримати основні принципи.

Дозвольте мені дати короткий спрощений підсумок обчислення вимірювань Danos et al. 1, що базується на основі квантового комп'ютера, що односторонній 2 : кубіт знищується при вимірюванні, але вимірювання впливає на всі інші кубіти, які були заплутані з ним. Він має певні теоретичні та практичні переваги перед «квотовими» квантовими комп'ютерами, що реалізовані фотонним чіпом, але це вже інше обговорення.

Розглянемо квантовий комп'ютер, у якого є лише п'ять інструкцій: N, E, M, X і Z. Його "мова складання" схожа на звичайний комп'ютер, після виконання однієї інструкції переходить до наступної інструкції в послідовності. Кожна інструкція бере цільовий ідентифікатор кубіта, тут ми використовуємо лише число та інші аргументи.

N 2          # create a new quantum bit and identify it as '2'
E 1 2        # entangle qubits '1' and '2', qubit 1 already exists and is considered input
M 1 0        # measure qubit '1' with an angle of zero  (angle can be anything in [0,2pi]
             # qubit '1' is destroyed and the result is either True or False
             # operations beyond this point can be dependent on the signal of '1'
X 2 1        # if the signal of qubit '1' is True, execute the Pauli-X operation on qubit '2'

Вищеописана програма таким чином створює анцилу, обплутує її вхідним кубітом, вимірює вхід і в залежності від результату вимірювання виконує операцію над ациллою. В результаті виходить, що кубіт 2 тепер містить стан кубіта 1 після операції Адамара .

Наведене вище, природно, на такому низькому рівні, що вам не хотілося б його кодувати вручну. Перевага обчислення вимірювань полягає в тому, що він вводить "шаблони", якісь композиційні макроси, які дозволяють складати більші алгоритми, як і підпрограми. Ви починаєте з шаблонів з 1 інструкцією і вирощуєте звідси більші візерунки.

Замість послідовності інструкцій, що нагадує асемблер, програму також часто записувати у вигляді графіка:

 input                .........
    \--> ( E ) ---> (M:0)     v
(N) ---> (   ) ------------> (X) ---> output

де повні стрілки - кубітна залежність, а пунктирна - залежність 'сигналу'.

Далі той самий приклад Хадамара, виражений у невеликому інструменті програмування, як я б міг би використовувати «квантовий програміст».

Інструмент обчислення вимірювань

редагувати: (додаючи відношення до "класичних" комп'ютерів) Класичні комп'ютери все ще дуже ефективні в тому, що їм найкраще, і тому бачення полягає в тому, що квантові комп'ютери будуть використовуватися для вивантаження певних алгоритмів, аналогічно тому, як поточний комп'ютер завантажує графіку на GPU. Як ви вже бачили вище, центральний процесор керував квантовим комп'ютером, надсилаючи йому потік інструкцій та зчитуючи результати вимірювань із булевих "сигналів". Таким чином, у вас є чітке розділення класичного управління процесором та квантовим станом та ефектами на квантовий комп'ютер.

Наприклад, я буду використовувати свій квантовий спільний процесор для обчислення випадкових булевих чи коінтос. Класичні комп’ютери детерміновані, тому погано повертати гарне випадкове число. Квантові комп’ютери за своєю суттю є ймовірнісними, але все, що мені потрібно зробити, щоб отримати випадковий 0 або 1, - це виміряти рівноважний кубіт. Зв'язок між процесором та QPU виглядатиме приблизно так:

 qrand()       N 1; M 1 0;
 ==>  | CPU | ------------> | QPU |  ==> { q1 } ,  []
                 start()
      |     | ------------> |     |  ==> { } , [q1: 0]
                 read(q1)         
      |     | ------------> |     |
                  q1: 0 
 0    |     | <-----------  |     |
 <==

Де { ... }є квантова пам'ять QPU, що містить кубіти, і [...]є її класична (сигнальна) пам'ять, що містить булеві.


  1. Данос та ін. Обчислення вимірювання. arXiv (2007) вип. квант-ph
  2. Рауссендорф і Брігель. Односторонній квантовий комп'ютер. Фізичний огляд листів (2001), вип. 86 (22) С. 5188-5191

Відмінне обговорення теми, дякую, яловичина. До речі, в ОП йдеться про "у мене труднощі з концептуальним переходом від традиційного програмування до заплутування тощо". Отже, щось, що допомагає в цьому переході, повинно бути вітальним.
Кріс

Ви маєте рацію, я, здається, насправді пропустив цю частину, для сорому: / Додавання абзацу.
Яловичина

"Розглянемо квантовий комп'ютер, у якого є лише п'ять інструкцій: N, E, M, X і Z." немає пояснення інструкції Z :(
Фернандо Гонсалес Санчес

Z дуже нагадує X;) en.wikipedia.org/wiki/Pauli_matrices Операція X перетворює вектор [ab] в [ba], операція Z перетворює його в [a -b].
Яловичина

21

Я припускаю, що лібквант C , квантові монади Хаскелла або квантовий Perl :: Entanglement всі репрезентують квантові обчислення. Ви можете подивитися їх приклади.

Загалом, ви описуєте квантовий алгоритм як класичний алгоритм, який застосовує ряд лінійних операторів до суперпозиції, що представляє стан вашої квантової системи. У статтях журналу часто зображено схему з лініями для квантових бітів / регістрів та коробок для лінійних операторів.

Звичайно, важка частина не описує алгоритм, але розуміння, чому він працює, як імовірнісні алгоритми. Я завжди вважав алгоритм Гровера досить зрозумілим. Ви також можете прочитати про перетворення квантового Фур'є, використовуване алгоритмом Шора .


11

Це виглядає приблизно так: введіть тут опис зображення

Ви також можете мати доступ до справжнього квантового процесора. Перейдіть сюди та підпишіться: http://www.research.ibm.com/quantum/

Він також включає тренажер, щоб ви могли протестувати, не використовуючи фактичне обладнання, або використовувати кредити (безкоштовно) для запуску на фактичному обладнання.



3

Я вважаю, що відповідь - це дуже схоже на просту класичну програму.

Якщо ми вважаємо просто набране лямбда-числення (з продуктами) серцем класичного програмування, то ми можемо використати, що саме теорія внутрішнього типу закритої декартової категорії дає нам покажчик.

nk

Отже, якщо STLC відноситься до декартових закритих категорій, що таке закриті симетричні моноїдні категорії? Ну, ми знаємо, що внутрішня логіка симетричної моноїдальної категорії - МІЛЬ . Отже, нам потрібна теорія типів, що відповідає MILL - теорія лінійного типу.

Відступаючи від абстрактної дурниці, що ми отримуємо з теорією лінійного типу? Лінійність. Ми отримуємо лінійність ресурсів. І саме цього ми хочемо. Вам не дозволяється клонувати квантові біти. Вам не дозволяється неявно вимірювати. А лінійність означає, що ви не можете зробити жодне з них під час скорочення.

Була проведена деяка робота над теоріями лінійного типу, але не тонна. У цій публікації я отримав кілька ідей: Фізика, Топологія, Логіка та Обчислення: Камінь розетки Майка Стая та Джона Бееса, який детальніше описується, ніж моє рукоділля.


0

Напевно, я б почав із простої реалізації лічильника "поділити на малий n".

Наприклад: задавши джерело 10 ГГц, генеруйте вихід 5 ГГц (але ці числа є довільними і призначені лише для ілюстрації концепції).

Це дозволяє нам ігнорувати такі питання, як сховище та архітектура Фон Ноймана, і дозволяє нам зосередитись на тому, чи компоненти насправді роблять щось зрозуміле.

Наступною метою буде тоді створити невеликий репертуар "малих росіян" (але я б також слухав відштовхування від своїх дослідників - якби вони відчували, що інші невеликі цілі будуть негайно пліднішими, я, безумовно, хотів би зрозуміти що вони мені говорили.)

Довгострокові цілі включатимуть механізми завантаження інформації в систему та поза нею та утримання цієї інформації достатньо довго, щоб використовувати її.

(Напевно, варто пам’ятати, що ранні комп'ютерні програми всі були «провідними». Лише після великого досвіду роботи з цими системами ми змогли реалізувати збережені програми.)


-6

Я думаю, що програмування квантового комп'ютера на нього слід бачити з іншого погляду, що це нормальне об'єктно-орієнтоване програмування.

КК має таку ж здатність мозку думати і приймати рішення. Здатність мислити означає, що має можливість обміну даними джерело даних, яке було б можливим вибором, і вирішувати, який вибрати з усіх можливих станів.

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

КК повинен мати майстер даних, який обробляє зчитування даних, пов'язуючи різні варіанти разом з різними групами джерел даних, які представляють інформацію, зчитуючи всі можливі стани і вибираючи, який саме слід продовжувати.

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

ось наскільки потужним може бути QC, ви згодні?

https://www.cs.rutgers.edu/~mlittman/papers/openhouse11.pdf це момент почати, а потім створити datamerer для побудови квантового пристрою з воротами тощо, зчитувач, підключений до datamerer, для читання та забезпечити зворотній звязок. квантовий компонент Datasource хост даних та обсяг знань, де діє DataMer.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.