LINUX.ORG.RU

Квантовый компьютер и измерение.

 


0

1

Где-то прочитал, что создание запутанного состояния в некотором смысле эквивалентно измерению состояния кубита. Мне это кажется достаточно понятным.

Рассмотрим систему из двух кубитов 1/√2(|0> - |1>)|0>.
Если к первому кубиту применить вентиль Адамара*, то получим |10>. Измерение первого кубита всегда даст 1. Тут все понятно. Теперь рассмотрим два варианта.

А) Перед тем как применить вентиль Адамара, выполним измерение первого кубита. В результате с равной вероятностью получим либо |00>, либо |10>. А после вентиля — 1/√2(|0> + |1>)|0> и 1/√2(|0> - |1>)|0> соответственно. Теперь измерение первого кубита после вентиля дает 0 или 1 c вероятностью 1/2.

Б) Вместо измерения первого кубита перед вентилем Адамара, применим к двум кубитам вентиль CNOT** и получим
1/√2(|0> - |1>)|0> -> 1/√2(|00> - |11>)
Теперь применим вентиль Адамара к первому кубиту и выйдет
1/2(|00> - |01> + |10> + |11>)

Опять получили, что первый кубит равен 0 или 1 с равной вероятностью. То есть связывание первого кубита со вторым в этом случае эквивалентно измерению первого кубита.

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

По моим прикидкам, алгоритм Гровера и алгоритм Дойча-Йожи не чувствительны к этому. Мой простейший пример с двумя кубитами показал, что это не всегда так. Вопрос - когда это не так?

* вентиль Адамара превращает ноль |0> в 1/√2(|0> + |1>), а единицу |1> в 1/√2(|0> + |1>)

** вентиль CNOT меняет значение второго бита на противоположное, если первый равен единице:

|00> -> |00>
|01> -> |01>
|10> -> |11>
|11> -> |10>

★★★★★

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

А какая разница где происходит связывание, если пространство состояний составной системы образовано тензорным произведением пространств состояний отдельных систем?

По простому, при связывании: «кубит, двигаясь по поверхности сферы Блоха, непрерывно изменяет свое состояние, изменяя при этом информацию», т.е. изменится широта и долгота состояния на сфере Блоха. ©

По моим прикидкам, алгоритм Гровера и не чувствительны к этому.

Алгоритм Гровера чувствителен к количеству итераций на шаге 2 алгоритма.

quickquest ★★★★★
()
Ответ на: комментарий от quickquest

А какая разница где происходит связывание, если пространство состояний составной системы образовано тензорным произведением пространств состояний отдельных систем?

Что-то я тебя не понимаю. То есть я понимаю твое утверждение и я согласен с ним, но не понимаю, при чем тут это. Операции над кубитами не коммутативны. Есть разница между тем, связать две частични, а потом выполнить U и сперва сделать U, а потом связать.

Алгоритм Гровера чувствителен к количеству итераций на шаге 2 алгоритма.

Я знаю, но я не об этом.

Тем не менее, я был неправ, когда писал «По моим прикидкам, алгоритм Гровера и алгоритм Дойча-Йожи не чувствительны к этому.» Это не так. Сейчас попробую переформулировать свой вопрос, учитывая это свое заблуждение.

Waterlaz ★★★★★
() автор топика

Говорят, все, что можно вычислить на обычном компьютере, вычислимо и на квантовом. Часто указывают пример универсального вентиля CCNOT (|xy>|z> -> |xy>|z+x&y>), из которого легко получается конъюнкция x y (|xy>|0> -> |xy>|x&y>). Значит, если функция f вычислима на классическом компьютере, то она вычислима и на квантовом и для неё применим, например, алгоритм Гровера. Тут все понятно.

Мне понятно, что алгоритм Гровера работает правильно, если есть квантовый вычислитель вида |x>|z> -> |x>|(z+f(x))>. Но если напрямую применять рекомендации по использованию вентиля CCNOT для построения вычислителя f, то нужны дополнительные кубиты, которые окажутся связанными с кубитами x. Если они так и останутся связанными, то Алгритм выдаст неправильный ответ.

Мой вопрос коротко: как построить вычислитель функции f без дополнительных кубитов?

Waterlaz ★★★★★
() автор топика
Ответ на: комментарий от Waterlaz

** вентиль CNOT
Но если напрямую применять рекомендации по использованию вентиля CCNOT

А теперь уже я тебя не совсем понимаю: CNOT или CCNOT ты хочешь использовать?

то нужны дополнительные кубиты, которые окажутся связанными с кубитами x.

Дополнительные в смысле управляющие или увеличивающие длину волнового вектора?

quickquest ★★★★★
()
Ответ на: комментарий от quickquest

Допустим я хочу запустить алгоритм Гровера для функции (xVy)&z. Я знаю, как на основе CCNOT сделать конъюнкцию и дизъюнкцию. Я в лоб реализую функцию (xVy)&z. Вот так http://kawais.mooo.com/quant2.png

Теперь у нас помимо четырех кубит: x,y,z и результат, есть еще и пятый кубит(|xVy>), который также как-то связан с четырьмя другими. Если я «забуду» про этот кубит и воспользуюсь такой квантовой схемой для алгоритма Гровера или Дойча-Йожи, то у меня ничего не получится.

Вопрос: как правильно строить такие вычисления, особенно, если функцию не такая простая, как (xVy)&z.

Waterlaz ★★★★★
() автор топика
Ответ на: комментарий от Waterlaz

Если я «забуду» про этот кубит и воспользуюсь такой квантовой схемой для алгоритма Гровера или Дойча-Йожи, то у меня ничего не получится.

Если его «забыть и не трогать», то должно получится, на результат это не повлияет, ибо при измерении результата (xVy)&z возникнет декогеренция с 5 кубитом, и далее этот «забытый» кубит уже ни на что не влияет.

Вопрос: как правильно строить такие вычисления, особенно, если функцию не такая простая, как (xVy)&z.

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

quickquest ★★★★★
()
Ответ на: комментарий от quickquest

Если его «забыть и не трогать», то должно получится, на результат это не повлияет, ибо при измерении результата (xVy)&z возникнет декогеренция с 5 кубитом, и далее этот «забытый» кубит уже ни на что не влияет.

В том и беда, что влияет. Но, кажется, я уже нашел ответ. Если есть вычисление, которое «делает мусор», то нужно скопировать результат и выполнить обратное вычисление. Вот так http://kawais.mooo.com/quant3.png

Waterlaz ★★★★★
() автор топика
Ответ на: комментарий от Waterlaz

В том и беда, что влияет.

Как? Влияет только пока твои «вентили» выполняют унитарные операции с запутанной системой, а событие «измерения результата» необратимо переводит её в сепарабильное состояние.

Кстати, попробуй симулятор Quantum Computing Playground — имитирует квантовый регистр, состоящий из 22 кубитов и позволяет пользоваться алгоритмами Шора и Гровера. А для самоделок есть библиотека libquantum.

quickquest ★★★★★
()
Ответ на: комментарий от quickquest

Вот предельно упрощенный пример: http://kawais.mooo.com/quant4.png

В первом случае вероятность измерить единицу на первом кубите равна 1, в втором случае — 1/2

Спасибо за ссылку.

Waterlaz ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.