Pull to refresh

Comments 40

любое преобразование можно реализовать… можно имитировать любое физическое явление...
Напоминает рисование совы из кругов.
Начнём с простого как представить целое число. Как поделить одно число на другое с помощью имеющегося набора универсальных вентилей?
quantumexperience.ng.bluemix.net/qx/editor
1. Квантовый компьютер бессмыслено использовать для обычных вычислений. Это скорее сопроцессор к обычному компьютеру.
2. Это цикл статей, а не одна статья, которая должна дать ответ на все вопросы.
3. Но если это именно вопрос, то вот в этой статье можно найти частичный ответ arxiv.org/abs/1609.01241 и здесь arxiv.org/pdf/1609.01241.pdf
Начнем с основ — с обозначений некоторых распространенных...


Похоже рано я обрадовался, что появилась статья, которая позволит мне быстро разобраться в квантовых вычислениях))
Читаю всякие статьи по квантовым вычислениям. Мало что понятно.
Вот, например, пишут, что |0> это вектор [1,0] а |1> это вектор [0,1]. Отсюда казалось бы логичным, чтобы точки |0> и |1> находились на перпендикулярных осях с координатами [ x0=1, y0=0 ] и [ x1=0, y1=1 ] но нет, все рисуют сферу Блоха и точки |0> и |1> рисуют на одной оси. Но почему?
Понятно, что при суперпозиции двух этих состояний с комплексными коэффициентами итоговое состояние наверное может быть в любой точке сферы, но вот почему рисуют сферу Блоха именно так с точками |0> и |1> на одной оси — не понятно.

https://ru.wikipedia.org/wiki/Сфера_Блоха — просмотрите вывод до представления вектора состояния через полярные углы. А потом попробуйте подставить в качестве углов 0, пи, 2пи...

нда, квантовые вычисления это самое «понятное» что я вообще видел в ИТ.
Вопрос — эти кубиты ведь нельзя реализовать обычной микроэлектроникой когда в микросхеме есть 2 ячейки связанные так что если одна 1 а другая 0, это было слишком легко, в чём тогда разница????
Реализовать нельзя, смоделитьровать можно. Смысл в том, что кубиты подчиняются законам квантовой механики, что позволяет, используя специализирванные алгоритмы, существенно ускорять некторые типы задач. Собственно, когда Фейнман предложил идею квантового компьютера, одна из проблем, которую он должен решить — моделирование квантовых систем.

Моделирование состояния N кубит на обычном компьютере требует 2^N обычных бит. Плюс требуется моделирование вентилей.

Реальный прорыв теоретически должен наступить при доступности квантовых компьютеорв с 100+ вычислительных кубит. Притом, что на текущий моент для реализации 1 вычислительного кубита требуется 5-10 физических кубит, так как необходима коррекция ошибок.
Моделирование состояния N кубит на обычном компьютере требует 2^N обычных бит. Плюс требуется моделирование вентилей.

откуда там 2^n битов когда все эти вентили ~ n?
Почему это не эквивалентно обычным ячейкам на микросхеме соединённым всеми этими вентилями?
И если там всё вероятностно, как снимается выход квантовой системы для получении точного результата, и не получается ли что результат вероятностный, то есть не факторизация числа а «вероятность» что числа так факторизированы?
Состояние кубита описывается вероятностным распределением. До измерения он может находтся с определённой вероятностью в каждом из состояний. Поэтому 2^N коэффициентов — байт/слов, + какое-то количество на ветеля.

Кубит ru.wikipedia.org/wiki/%D0%9A%D1%83%D0%B1%D0%B8%D1%82

1 кубит описываются состоянием -> a|0> + b|1>, где a и b — комплексные числа и |a|^2+|b|^2=1, 2 числа
И да, результат измерения состояния кубита — вероятностный. |a|^2 — вероятность |0>, |b|^2 — вероятность |1>.

2 кубита описываются состоянием -> a|00> + b|01> + c|10> + d|11> — 4 числа
3 кубита -> a|000> + b|100>… + x|111> — 8 чисел

Прочитайте начало серии habrahabr.ru/company/microsoft/blog/351622, возможно, появится понимание

И требуются специальный алгоритмы для получения пользы от квантового компьютера, см. например, алгоритм Шора ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%A8%D0%BE%D1%80%D0%B0
Полезная серия, спасибо за работу! Есть одна проблема — три сферы Блоха не масштабируются, как бы их увидеть крупнее? Может есть ссылка?!
Вот под этим текстом: «Ниже работа этих преобразований проиллюстрирована с помощью сферы Блоха (ось вращения в каждом случае выделена красным; на картинку можно нажать, чтобы увеличить ее)»
А можно какие нибудь жизненные примеры, а не голую математику? Например: вот так эта задача решается классическими вычислениями, а вот так квантовыми, при этом вижно такие то преимущества.

Факторизации чисел на обычном компьютере и квантовой алгоритм Шора.

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


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

Чтобы разложить число М на простые множители, используя количество кубиков О(log M), необходимо время О(log^3 M)

Вот так ИИ, захвативший системы автокоррекции, даёт кубитам неожиданные ласковые имена…

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

Для того чтобы составить матрицу любого управляющего вентиля, нужно дописать единичную матрицу в левом верхнем углу матрицы нужного вентиля, а все остальные ячейки заполнить нулями.
Это называется тензорного домножить слева на I^n
Вот пример такого универсального набора: вентиль Адамара, вентиль фазового сдвига, вентиль CNOT и вентиль π⁄8.

Поправьте плз, вроде достаточно генераторов SU(2) и любого запутывающего преобразования

Спасибо за комментарий! Но, это же пример, а не минимально достаточный набор.
Да, прошу извинить просто, хотелось бы услышать про выбор этого набора, м.б. его проще физически реализовать(про то что cnot уже физически реализован в различных моделях я слышал). Или может гейты высоких порядков через них проще выражать? Или просто проще для понимания в рамках этой серии статей?
Так как мы говорим о квантовом компьютере в отрыве от его физической реализации, так что здесь скорее речь идёт о понимании в рамках этой серии статей.
Да, в принципе если бы Microsoft предлагал какие-нибудь инстансы с Q# в azure или HPC бэкенд к нему сделал какой, то в принципе это сильно бы упростило жизнь людям которые занимаются квант-вычем ибо такое ощущение что сейчас каждая группа под каждую задачу пилят свою версию элементарных преобразований/моделей зашумления/кодов коррекции
Он уже анонсирован. Так что будет Azure симулятор.

Первое что смущает это оператор CNOT(q0,q1)


|q0.a|    | 1 0 0 0 |   | q0.a |
|q0.b|  = | 0 1 0 0 | * | q0.b |
|q1.a|    | 0 0 0 1 |   | q1.a |
|q1.b|    | 0 0 1 0 |   | q1.b |

Как получается (Controlled X)([control], (target)) в матрице этого нет.
получается q0=q0; q1=X(q1)
откуда controlled X


Вобщем смотрю hello world на 3 кубита https://www.youtube.com/watch?v=v7b4J2INq9c&t=88 и что-то не сростается. Чую подвох, но пока не могу сказать где.

Посмотрите действие оператора на базовые состояния:
CNOT|00> = |00>
CNOT|01> = |01>
CNOT|10> = |11>
CNOT|11> = |10>
Теперь посмотрите на матрицу оператора, можно заметить что для состояния где контрольный кубит в 0, оператор действует как единичный.
Таким образом у оператора с контролем n кубитов идет блок I^n а в нижней клетке матрицы — собственно сам действующий оператор
Собственно это и не срастается. Нижний блок в матрице зависит от состояния первого вектора. И такая матрица не описывает оператор CNOT
Где не срастается? В нижней клетке матрицы описывается оператор действующий на неконтрольные кубиты в данном случае это оператор not он же sigma X именно его матрица и описана внизу, что там зависит от входного вектора. Почему вам кажется что такая матрица не описывается CNOT?
Вы неправильно трактуете матрицу. Это не «квадратики», применяемые последовательно к двум кубитам, как у вас нарисовано, а полная перепись всех возможных состояний. Двухкубитный вентиль — очень неудачный пример, ибо 2*2=2^2, и разница не сразу очевидна. Но обратите внимание на матрицу CCNOT: она имеет размер 8, а не 6, потому что применяется не к вектору (q0.a, q0.b, q1.a, q1.b, q2.a, q2.b), а к вектору (000, 001, 010, 011, 100, 101, 110, 111) — то есть перечисляются все базовые состояния всего многокубитного (трёхкубитного в данном случае) набора как единого целого, и матрица действует уже на этот комплект состояний.
Спасибо за комментарий. Теперь я вообще запутался.
Берём 3 кубита 8 состояний s0..s7 на базисе из 6 векторов.
s0 = |000> = {1,0,1,0,1,0}
s1 = |001> = {1,0,1,0,0,1}
s2 = |010> = {1,0,0,1,1,0}
s3 = |011> = {1,0,0,1,0,1}
s4 = |100> = {0,1,1,0,1,0}
s5 = |101> = {0,1,1,0,0,1}
s6 = |110> = {0,1,0,1,1,0}
s7 = |111> = {0,1,0,1,0,1}
Получается что половина состояний зависимые т.е.
s5= -s2+s3+s4
s7=-s0 +s3+s4
s6=-s0+s2 +s4
s1= s0-s2+s3
Как мы применяем матрицу CСNOT к зависимым состояниям s?
Disclamer
Поскольку я «не волшебник, а только учусь», я могу в чём-то здорово наврать, в каковом случае нижайше прошу более подкованных товарищей растолковать, что и как.

Дело в том, что запись |000> — это не «состыковка» трёх «нулевых» векторов, а тензорное произведение, сокращённая запись для |0>⊗|0>⊗|0>. Тензорное произведение двух векторов (для трёх аналогично) переводит нас в пространство высшей размерности, в котором задаётся совершенно новый базис, построенный на основе всевозможных попарных комбинаций базисов исходных пространств. То есть из двух векторов размерности 2 мы получаем вектор размерности 4, следующего вида: (a, b) ⊗ (c, d) = (ac, ad, bc, bd). И прежние единичные векторы (1, 0) и (0, 1) из первого пространства плюс такая же пара из второго пространства будут задавать нам базис нашего нового пространства по следующим правилам (возможны перестановки, но суть не меняется):
(1,0)1 ⊗ (1,0)2 = (1,0,0,0)
(1,0)1 ⊗ (0,1)2 = (0,1,0,0)
(0,1)1 ⊗ (1,0)2 = (0,0,1,0)
(0,1)1 ⊗ (0,1)2 = (0,0,0,1)
Мы обозначаем эти четыре единичных вектора нового пространства как |00>, |01>, |10>, |11> исключительно для удобства и наглядности, чтобы было видно, какой вектор как был получен. Но это лишь один из вариантов обозначения, никто не мешает назвать их, скажем, |0>, |1>, |2>, |3>. Или |ψ1>, |ψ2>, |ψ3>, |ψ4>.

Так что никаких зависимостей нет, все эти 8 векторов — это самый что ни на есть полноценный ортонормированный базис трёхкубитного пространства состояний.
Спасибо. Теперь пазл сходится. Я брал Ψ=a0*φ0+b0*ψ0 + a1*φ1+b1*ψ1 + a2*φ2+b2*ψ2,
а надо было брать Ψ=(a0*φ0+b0*ψ0) * (a1*φ1+b1*ψ1) * (a2*φ2+b2*ψ2).
Но тогда возникает другой вопрос: Если эти состояния сидят в некоторых потенциальных ямах то эти частицы должны находиться рядом (в некоторой окрестности, в ядре например) иначе тензорное произведение будет экспоненциально стремиться к 0.
Здесь прокомментировать, увы, не смогу. Ничего не знаю о связи тензорного произведения и физического местоположения. Из общих соображений мне кажется, что в такой ситуации само местоположение должно тогда входить в описание состояния частицы, иначе откуда вообще возьмётся эта зависимость? А если его там нет — то это уже не наша головная боль, как там практическая реализация нам обеспечит взаимодействие.
Спасибо! А нейроночку еще никто не пробовал на кубитах делать? Чувствуется, по своей природе они где-то рядом. Это же идеально, а то чо мы эти матрицы перемножаем.

Как бы это могло выглядеть? В такой сети не будет «вычислений»? Т.е достаточно произвести измерение, и это будет результатом работы нейронки в этот момент?
Я пытался разобраться, как они в примерах переходят от гамильтонианов к вентилям. Это для моделирования всяких физических систем полезно, и не только. Пока не особо получается. С этим Q# ещё проблема, что там часть closed source и не всегда понятно какая.
Поэтому свойство универсальности позволяет использовать квантовые компьютеры для моделирования молекул, сверхпроводников и любых странных и прекрасных квантовых систем. Эта особенность квантовых компьютеров позволяет имитировать физические явления


Если под реальным физическом явлении понимается макроявление, например обтекание крыла самолета. Один кубит представляет собой одну частицу (на самом деле одну характеристику частицы) или атом (если его характеристика определяется только одним свободным электроном, например как в атоме серебра). То выходит сколько же надо кубитов, чтобы описать такую систему с крылом самолета?

И самое интересное: квантовая механика и механика макромира (например ОТО) пока что не имеют связи. Причина тому гравитация + скорости близкие к скоростям света. Поэтому даже если бы у нас была возможность описать задачу макромира до уровня атомов средствами квантовой механики, то мы бы не получили адекватные результаты поведения макромира.

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


А во вторых для обтекания крыла самолета может потребоваться фиттинг свободных параметров в вашей ГД модели. Тут вполне может быть оправданно использование квантового отжига (D-WAVE в помощь), но это опять-таки навороченная адиабатическая машина.


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

Sign up to leave a comment.