Хорошо известно, что, используя квантовый параллелизм, мы можем вычислить функцию для многих разных значений одновременно. Однако для извлечения информации о каждом значении необходимы некоторые умные манипуляции, то есть с помощью алгоритма Дойча.
Рассмотрим обратный случай: можем ли мы использовать квантовый параллелизм для вычисления множества функций (скажем, ) одновременно для одного значения ?
Ответы:
Точный ответ зависит от того, какую именно суперпозицию вы хотите. Ответы пирамид и Нила дают вам что-то вроде
Здесь я следовал за Нильем, помечая различные функции , и т. Д. , обозначает общее количество функций, которые вы хотите заменить. Также я использовал для обозначения некоторого описания функции как хранимой программы. Только то , что потребности номер , чтобы быть там для государства нормализоваться.f1 f2 n Ft ft A
Обратите внимание, что это не просто суперпозиция . Это запутано с сохраненной программой. Если бы вы отслеживали хранимую программу, у вас была бы смесь . Это означает, что хранимая программа может представлять собой «мусор», который предотвращает эффекты помех, на которые вы можете рассчитывать. Или это не так. Это зависит от того, как эта суперпозиция будет использоваться в ваших вычислениях.ft(x) ft(x)
Если вы хотите избавиться от мусора, все становится сложнее. Например, предположим, что вы хотите, чтобы унитарный имел эффектU
для всех возможных входов (я предполагаю, что это битовые строки, записанные в вычислительной основе). Обратите внимание, что я также включил некоторые пустые кубиты на входной стороне, на случай, если функции имеют более длинные выходы, чем входные.x
Исходя из этого, мы можем очень быстро найти условие, которому должны удовлетворять функции: поскольку входные состояния образуют ортогональное множество, то же самое должны делать и выходы. Это наложит существенное ограничение на виды функций, которые можно комбинировать таким образом.
источник
Функцииf,g,… то, что вы хотите оценить в разных вычислительных ветвях, должно быть, чтобы быть вычисляемым вообще, должно быть определенным каким-либо образом (например, последовательность классических логических элементов). И множество {f1,f2,…} из функций, которые вы хотите вычислить, должен быть сам вычислимым: для данного t Вы должны быть в состоянии вычислить спецификацию того, как ft должен быть рассчитан на его аргумент. По сути: у вас должно быть средство описания функцийft как хранимые программы. (Это все необходимо, даже до того, как мы рассмотрим квантовые вычисления, для вопроса "вычисления одной / всех функцийf1,f2,… на входе x0 быть значимым.)
Когда у вас есть способ указать функции в качестве хранимых программ, вы в основном закончите: программа - это, по сути, другой вид ввода, который вы можете подготовить в суперпозиции и, например, оценить на фиксированном входе или суперпозиции входов, вычисляя функции из их спецификаций в каждой отрасли.
Получить вычислительное преимущество от этого - другой вопрос, и ему придется задействовать определенную структуру в функциях.ft этим вы можете воспользоваться, но просто «оценить в суперпозиции» легко, если у вас достаточно информации, чтобы вопрос был осмысленным.
источник
Да (в зависимости от того, что означает «рассчитать много функций одновременно»)
Описание схемы, которая дает функциюf в виде Uf и схема, дающая g в виде Ug Есть несколько способов сделать это:
Начиная с регистров кубита в|00x⟩ , Подготовь государство α|01⟩+β|10⟩ на первых двух регистрах. Это можно сделать, применив унитарный 1 к первому регистру, чтобы перевести этот регистр в состояниеα|0⟩+β|1⟩ перед применением CNOT, затем I⊗X , Затем применитеCUf из первого регистра в третий и CUg со второго на третий.
1.1. Это дает то, что третий регистр теперь в состоянии(αUf+βUg)|x⟩ при начальных операциях (до I⊗X ) на первых двух регистрах меняются местами. Однако из-за общих трудностей реализации произвольных управляемо-унитарных операций (а также излишнего использования дополнительных кубитов), вероятно, было бы проще реализовать это непосредственно, набрав унитарный номер.αUf+βUg , Обратите внимание, что это не реализуетf ни g , но новая, другая функция f+g
1.2. Если не изменить начальные операции с первыми двумя регистрами, третий переводится в запутанное состояниеf а также g , который обсуждается в других ответах.
Начиная с государства|xx⟩ и применяя Uf в первый регистр и Ug ко второму. Это наиболее близко к классическому параллелизму, где обе функции применяются независимо к копиям одного и того же состояния. Помимо необходимости удвоения числа кубитов, проблема здесь заключается в том, что из-за отсутствия клонирования для копирования|x⟩ оно либо должно быть известно, либо быть классическим состоянием (то есть не включать суперпозиции в вычислительной основе). Приблизительное клонирование также может быть использовано.
Начни с государства|0x⟩ , а также классический регистр. Примените унитарный 1, чтобы поместить первый регистр в суперпозициюα|0⟩+β|1⟩ , Теперь измерьте этот регистр (поместив результат в классический регистр) и примените классическую операцию E(ρ)=|α|2UfρU†f+|β|2UgρU†g , Такие методы могут быть использованы для создания случайных унитарных элементов, которые применяются, например, в бозонной выборке и рандомизированном бенчмаркинге
IF RESULT = 0 U_f ELSE U_g
. Хотя это может показаться менее мощным, чем любая из вышеперечисленных операций, в некотором смысле это эквивалентно квантовому каналу1 дано(αβ−β∗α∗)
источник
Yes, one can. The trick is to define (and implement) a new functionfall(y,x) that evaluates to f(x) if y=0 , to g(x) if y=1 , etc. Then one prepares the qubits representing y in the desired superposition and set x to x0 .
источник