Cómo entender Oracle en la complejidad computacional

Un oráculo es un dispositivo utilizado para analizar algo llamado “complejidad de consulta”. Esto es esencialmente de lo que se trata el algoritmo de Grover.

La pregunta a responder es esta: dado un oráculo que acepta [math] n [/ math] número de entradas y devuelve [math] 1 [/ math] y [math] -1 [/ math] al ingresar una entrada aceptada o una entrada rechazada, respectivamente, ¿cuántas consultas al oráculo hay que hacer para poder encontrar una entrada aceptada? El algoritmo así diseñado debe ser independiente de la naturaleza del oráculo.

El oráculo aquí es un dispositivo que de hecho no se ha construido. Es simplemente un dispositivo de análisis, completamente hipotético. Resulta que han sido útiles de muchas maneras, que describiré más adelante. * *

De hecho, esta es una versión generalizada del problema de búsqueda, que es simplemente esto, en una lista de elementos [matemáticos] n [/ matemáticos], para averiguar la posición de un elemento específico.

En el paradigma actual, es fácil mostrar un algoritmo que encuentre la entrada aceptada en [math] O (n) [/ math] time y se puede demostrar que no se puede hacer mejor que [math] \ Omega (n) [/matemáticas].

En el paradigma cuántico, el algoritmo de Grover lo hace en [math] O (\ sqrt {n}) [/ math] y también se ha demostrado que no se puede hacer mejor que [math] \ Omega (\ sqrt {n}) [ /matemáticas].

Específico a la computación cuántica, existe una naturaleza de oráculos conocida como cambio de fase selectivo. Dado como entrada un estado con ciertas amplitudes en el estado aceptado y rechazado, invierte selectivamente el signo de la amplitud en el estado rechazado. Esta es una modificación crucial sobre la que depende el algoritmo de Grover.

######################################

Los oráculos en general también se usan para otros fines en la teoría de la complejidad.

Uno de esos usos es la relativización. Para casi cualquier clase de complejidad, podemos definir una versión de la misma que tenga acceso a algún oráculo aleatorio. Algunos resultados sobre las clases de complejidad también se mantienen en un mundo así. Tales resultados son inútiles para resolver P vs NP, uno de los problemas centrales, porque en un mundo relativizado, tanto P = NP como la conversación inversa.

Otro de estos usos es la creación de jerarquías. Dele un oráculo de una clase de complejidad a otra clase de complejidad y obtendrá una tercera clase de complejidad. Estos nuevamente pueden ser útiles para obtener una comprensión fundamental.

Hay mucho que decir sobre los oráculos, mucho más de lo que uno podría encajar en una respuesta, así que déjenme parar aquí.

Un oráculo es una caja negra que puede realizar un cálculo particular. Cuando consideramos un oráculo, no nos importa la implementación o lo que está haciendo. Simplemente asumimos que existe y trabajamos desde allí.

Por ejemplo, es bien sabido que el problema de detención es indecidible. Sin embargo, es perfectamente válido suponer que tenemos algún oráculo [matemática] A [/ matemática] que resuelve el problema de detención, y trabajar desde allí (ver máquina Oracle – Wikipedia)

Entonces, la idea es que los oráculos siempre saben la respuesta, y pueden calcular esa respuesta en [matemáticas] O (1) [/ matemáticas] tiempo. Son solo máquinas hipotéticas que los teóricos de la complejidad usan para clasificar los problemas.

Por ejemplo, cuando leo el artículo sobre la búsqueda de Grover en computación cuántica, https://arxiv.org/pdf/quant-ph/9 …, Grover asume que tenemos un oráculo que puede cambiar la amplitud del estado que estamos buscando. para. Y parece que, si queremos implementar el oráculo mediante algún algoritmo, necesitamos conocer el estado objetivo. ¿No conduce esto a una contradicción, ya que significa que diseñamos algoritmos para resolver preguntas cuando ya sabemos la respuesta?

Específicamente, quiero hacer las siguientes preguntas:

(1) ¿Existe algún oráculo ampliamente utilizado que pueda implementarse mediante un algoritmo específico? Tanto clásico como cuántico están bien.

(2) ¿Los informáticos crean oráculos al azar? ¿O hay algunas conexiones de equivalencia entre diferentes oráculos?

Intente leer primero el artículo de Wikipedia para la máquina Oracle.