La idea para estimar la media es aproximadamente la siguiente:
Para cualquier que proporcione salidas en los reales, defina una reescalada que proporcione salidas en el rango de 0 a 1. Nuestro objetivo es estimar la media de .F ( x ) F ( x )f(x)F(x)F(x)
Defina un unitario cuya operación seaEs importante tener en cuenta que esta unitaria se implementa fácilmente. Comienza con una transformación de Hadamard en el primer registro, realiza un cálculo de en un registro de ancilla, usa esto para implementar una rotación controlada del segundo registro y luego desconfigura el registro de ancilla.U a : | 0 ⟩ | 0 ⟩ ↦ 1Uaf(x)
Ua:|0⟩|0⟩↦12n/2∑x|x⟩(1−F(x)−−−−−−−√|0⟩+F(x)−−−−√|1⟩).
f(x)
Definir el unitario .G=Ua(I−2|0⟩⟨0|⊗|0⟩⟨0|)U†aI⊗Z
Comenzando desde un estado , use misma manera que usaría el iterador Grover para estimar el número de soluciones a un problema de búsqueda.Ua|0⟩|0⟩G
La mayor parte de este algoritmo es la amplificación de amplitud, como se describe aquí . La idea principal es que puede definir dos estados
y esto define un subespacio para la evolución. El estado inicial es . La amplitud del término contiene claramente la información sobre la media de , si pudiéramos estimarla. Podrías preparar repetidamente este estado y medir la probabilidad de obtener un
|ψ⟩=1∑xF(x)−−−−−−−√∑xF(x)−−−−√|x⟩|1⟩|ψ⊥⟩=1∑x1−F(x)−−−−−−−−−−√∑x1−F(x)−−−−−−−√|x⟩|0⟩,
| Psi⟩F(x)| 1⟩| Psi⟩que⊗Z√Ua|0⟩|0⟩=(∑xF(x)−−−−−−−√|ψ⟩+∑x1−F(x)−−−−−−−−−−√|ψ⊥⟩)2−n/2|ψ⟩F(x)|1⟩en el segundo registro, pero la búsqueda de Grover le brinda una mejora cuadrática. Si compara con la forma en que Grover está configurado, la amplitud de este que puede 'marcar' (en este caso aplicando ) sería donde es el número de soluciones.
|ψ⟩I⊗Z mm2n−−√m
Por cierto, es interesante compararlo con el "poder de un qubit limpio", también conocido como DQC1. Allí, si aplica a, la probabilidad de obtener la respuesta 1 es la misma que la versión no acelerada, y le da una estimación de la media.IUaI2n⊗|0⟩⟨0|
Para la mediana, aparentemente puede definirse como el valor que minimiza
Hay dos pasos aquí. El primero es darse cuenta de que la función que estamos tratando de minimizar es básicamente solo un medio. Luego, el segundo paso es utilizar un algoritmo de minimización que también puede acelerarse mediante una búsqueda de Grover. La idea aquí es utilizar la búsqueda de un Grover, y marcar todos los elementos para los que la evaluación de la función da un valor inferior a un umbral . Puede estimar el número de entradas que dan , luego repita para una diferente hasta que localice el valor mínimo lo suficiente.∑ x | f ( x ) - f ( z ) | . T x f ( x ) ≤ T Tz
∑x|f(x)−f(z)|.
Txf(x)≤TT
Por supuesto, me estoy saltando algunos detalles de tiempos de ejecución precisos, estimaciones de errores, etc.