En la página de Wikipedia para el algoritmo de Grover , se menciona que:
"El algoritmo de Grover también se puede utilizar para estimar la media y la mediana de un conjunto de números"
Hasta ahora solo sabía cómo se puede usar para buscar en una base de datos. Pero no estoy seguro de cómo implementar esa técnica para estimar la media y la mediana de un conjunto de números. Además, no hay citas (por lo que he notado) en esa página que explica la técnica.
algorithm
grovers-algorithm
Sanchayan Dutta
fuente
fuente
Respuestas:
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 ⟩ ↦ 1Ua 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
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.IUa I2n⊗|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
Por supuesto, me estoy saltando algunos detalles de tiempos de ejecución precisos, estimaciones de errores, etc.
fuente