Як зміниться програмування квантових обчислень? [зачинено]


33

Чим відрізняється програмування квантового алгоритму? Як виглядатиме мова на мові С, якби вона була розроблена для кубітів? Чи змінилися б типи?


Примітка. Я не впевнений, чи це правильне питання. Вибачте, якщо це не так.
MaiaVictor

4
Я думаю це. Знову ж таки, я не дуже добре знаю правила цього сайту. І я справді не маю великої відповіді на це питання, але я знаю про цей алгоритм, який міг би набагато ефективніше використовувати фактор чисел: arxiv.org/abs/0812.0380
Джон Девіс

3
Я думаю, хоча ця тема все ще знаходиться в науковому дослідженні, а основи гіпотетичного квантового комп'ютера є AFAIK добре відомими, тому питання повинно відповідати експертом з питань домену (яким я не є). Тому я голосую, щоб не закривати.
Док Браун

Відповіді:


17

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

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

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

Перевірте алгоритм пошуку Гровера .


ВСТАНОВЛЕНО, щоб показати фундаментальну роботу алгоритму Гровера. Припустимо, є проблема пошуку. Можливі відповіді - 0, 1, 2 і 3, але правильна відповідь - 2. Отже, квантовий комп'ютер ставиться в суперпозицію всіх чотирьох станів, і він проходить послідовність кроків, щоб побачити, який з них правильний, і перевертає свою амплітуду, як чорні точки та стрілки внизу:

введіть тут опис зображення

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

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

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

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

Хіба це не весело?


Мене особисто цікавило, як це можна застосувати для перевірки правильності програмного забезпечення. Тепер ми тестуємо програмне забезпечення, кидаючи на нього купу тестових входів і (бути надмірно просто), бачачи, чи потрапляє він у Assert. У квантовому комп’ютері можливо, паралельно його запустити проти набагато щільнішого набору входів і побачити, чи потрапив якийсь із цих випадків у Assert.

Як, якби вхід в алгоритм становив 128 байт або 1024 біт, можливі різні 2 входи 10 10 або 10 ^ 308. Немає можливості перевірити, чи багато входів на звичайному комп'ютері, але квантовий комп'ютер міг би їх спробувати паралельно.


2
Перевірка алгоритму пошуку Гровера ... О, БОГ! Я до цього не був готовий!
Філіп

1
@Philip: Я знаю, що математика досить відмінна, але ключовою ідеєю є обертання середнього значення, яке має ефект перенесення ймовірності у стан відповіді. Потім ви біжите назад на початок і біжите вперед і робите це знову, певну кількість разів. Тоді, якщо ви робите спостереження, ви збільшили максимум ймовірності побачити стан відповіді.
Майк Данлаве

Розумієте, насправді це не так вже й погано, коли ти так кажеш. Я думаю, я не знайомий з позначеннями, які вони використовують, або квантовими схемами. Сторінка з квантовими алгоритмами також залякує. Я вважаю, що Кубіт - це місце для початку. (Проста вікіпедія має сторінку на квантових комп’ютерах , але вона може використовувати деякі роботи)
Філіп

@Philip: Припустимо, у вас є таблиця 1024 записів, тому для її індексації потрібно 10 біт. У вас є 10- (qu) бітовий регістр, і він має 1024 можливих стану. Гаразд, ви створюєте всесвіт, в якому регістр дорівнює 0, інший, у якому він дорівнює 1, до 1024 паралельних всесвітів. Тоді квантові "інструкції" діють над усім цим паралельно. Кожен Всесвіт має "амплітудний вектор", величина якого є його вірогідністю, але він також має напрямок, і цим маніпулюють. Оскільки колекція 1024 векторів має ненульовий середній вектор, обертання робить один більшим, решта меншим.
Майк Данлаве

Я фізик, що реформується, і я спротив цю відповідь, оскільки вона вводить в оману. 1) квантові алгоритми часто є особливо (асимптотично) швидко - працює алгоритм пошуку Гровера в O (SQRT (п)) , тоді як кращий класичний комп'ютер може зробити , це O (п). Якби квантові комп'ютери не були асимптотично швидшими, вони не були б дуже цікавими. Зараз обладнання може бути повільним, але це не помилка алгоритмів!
Бенджамін Ходжсон

7

Як виглядатиме мова на мові С, якби вона була розроблена для кубітів? Чи змінилися б типи?

Це було б настільки різко, як бути незрозумілим, як C.

Основне питання (наскільки я це розумію) полягає в тому, що квантові обчислення не працюють приємно, так як це потрібно: "зроби це, то що, то це інше". Спроба змусити С зробити здатність зробити це в «процесорі» квантового комп'ютера буде, якщо не неможливо, дико неефективною.

Алгоритми програмування для квантових комп'ютерів (знову ж таки, наскільки я їх розумію), як правило, наближаються до карти / стилю функціонального стилю програмування, оскільки квантові обчислення дозволяють одночасно існувати всім кандидатам у частині "скорочення" та "випадати" з комп'ютера при спостереженні.

Зауважте, що існують деякі існуючі алгоритми для квантових комп'ютерів, хоча пристроїв не існує для їх запуску. Алгоритм Саймона, наприклад.


ELI5 для квантового алгоритму було б чудово.
MaiaVictor

3

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

Клас задач, які ефективно вирішуються на квантовому комп'ютері, відомий як BQP, для обмеженого квантового полінома. Це квантова версія BPP, і ви можете знайти більше інформації в цьому документі: http://www.scottaaronson.com/papers/bqpph.pdf

Мені минулої ночі дослідник квантових алгоритмів сказав мені, що існує дуже важлива проблема, яка є повною BQP: вирішення лінійної системи з N рівнянь. Класично це розв’язується на етапах O (N) з елімінацією Гаусса. Алгоритм Харроу-Хассідима-Ллойда ( http://arxiv.org/abs/0811.3171 ) вирішує його в полілозі (N), за умови, що ви готові прийняти відповідь, що рішення кодується як квантове стан. Якщо ви хочете в повній мірі використовувати квантовий комп'ютер, тому вам здається необхідним мати тип, що відповідає стану квантового регістра.

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

Попереджуйте, що ми дуже довго не маємо квантової мови програмування, оскільки ми перебуваємо на дуже примітивній стадії досліджень квантових обчислень. Попросити квантовий С прямо зараз схоже на те, щоб піти до Алана Тьюрінга і попросити його розробити Python. У нас ще навіть немає квантової версії вакуумної трубки!

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