¿En qué circunstancias los algoritmos implican algoritmos ?


16

Suponga que, para cada , hay una máquina de Turing que decide un lenguaje en el tiempo . ¿Hay un algoritmo único que decida en el tiempo ? (Aquí, el término se mide en términos de , la longitud de entrada).ϵ>0MϵLO(na+ϵ)LO(na+o(1))o(1)n

¿ Hay alguna diferencia si los algoritmos son computables, o eficientemente computables, en términos de ?Mϵϵ

Motivación: en muchas pruebas, es más fácil construir algoritmos de tiempo que el algoritmo limitante . En particular, debe vincular el término constante en para pasar al límite . Sería bueno si hay algún resultado general que pueda invocar para pasar directamente al límite.O ( n a + o ( 1 ) ) O ( n a + ϵ ) O ( n a + o ( 1 ) )O(na+ϵ)O(na+o(1))O(na+ϵ)O(na+o(1))

Respuestas:


10

La pregunta es similar a las preguntas sobre la existencia constructiva del límite de una secuencia de objetos (constructivos). Por lo general, si puede construir esos objetos de manera uniforme (aquí ) de manera suficientemente eficiente, puede mostrar la existencia del límite de manera constructiva.Mϵ

Por ejemplo, suponga que tenemos un TM que ejecuta en y su tiempo de ejecución es (aquí los límites también son uniformes, por ejemplo, algo como no funcionaría). Entonces podemos combinar este simulador uniforme con la función para obtener la máquina que se ejecuta en el tiempo .N(k,x)M|k|1xO(na+|k|1)+O(|k|)O(2k.na+|k|1)(k,x)xN(x,x)O(na+o(1))

PD: es un poco ambiguo debido a la anidación de anotaciones asintóticas, lo estoy interpretando como . También necesitamos para ser no demasiado pequeño, por ejemplo al menos .n a + o ( 1 ) a 1O(na+o(1))na+o(1)a1


8

Puede usar el algoritmo de búsqueda universal de Levin. Suponga que de alguna manera puede enumerar una secuencia de algoritmos deciden , cada uno de los cuales se ejecuta en el tiempo . El algoritmo de Levin se ejecuta en el tiempo para cada , donde es una constante que depende de . Entonces, por cada , Dado , elija , y deje L C k n a + 1 / k T ( n ) D k n a + 1 / k k D k C k k τ ( n ) log T ( n )AkLCkna+1/kT(n)Dkna+1/kkDkCkkϵ>0k=2/ϵN=D 2 / ϵ knNτ(n)ϵτ(n)0na+τ(n)=na+o(1)

τ(n)logT(n)lognalogDk+(a+1/k)lognlogna=logDklogn+1k.
ϵ>0k=2/ϵN=Dk2/ϵ. Entonces para , . Por lo tanto, , y obtenemos que el algoritmo de Levin se ejecuta en el tiempo .nNτ(n)ϵτ(n)0na+τ(n)=na+o(1)

Si entiendo el algoritmo de Levin, esto solo se aplica a los algoritmos de búsqueda. Este algoritmo funcionaría para invertir una función , donde se puede calcular en el tiempo . f O ( n o ( a ) )ffO(no(a))
David Harris el

No estoy sugiriendo usar el algoritmo de Levin en sí mismo, solo la idea de ejecutar todos los algoritmos en paralelo usando cola de milano, de tal manera que cada uno se ralentice solo por un factor multiplicativo. Ak
Yuval Filmus

@ Yuval, cuando combinas todos los algoritmos, ¿cómo decides qué respuesta aceptar? En un problema de búsqueda, puede probar cada salida putativa, pero en general esto no es posible.
David Harris

Acepto la primera respuesta que aparece. Se nos da que los algoritmos decidir correctamente . LAkL
Yuval Filmus
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.