Antecedentes
La memoria externa, o modelo DAM, define el costo de un algoritmo por el número de E / S que realiza (esencialmente, el número de errores de caché). Estos tiempos de ejecución generalmente se dan en términos de , el tamaño de la memoria y , el número de palabras que se pueden transferir a la memoria al mismo tiempo. A veces, y se usan para y respectivamente.
Por ejemplo, la clasificación requiere un costo de y la multiplicación de matriz ingenua requiere .
Este modelo se utiliza para analizar "algoritmos de caché-ajeno", que no tienen conocimiento de o M . En general, el objetivo es que el algoritmo ajeno al caché funcione de manera óptima en el modelo de memoria externa; esto no siempre es posible, como en el problema de permutación, por ejemplo (se muestra en Brodal, Faderberg 2003 ). Consulte este artículo escrito por Erik Demaine para obtener una explicación más detallada de los algoritmos ajenos a la memoria caché, incluidas las discusiones sobre la clasificación y la multiplicación de matrices.
Podemos ver que cambiar causa una aceleración logarítmica para la clasificación y una aceleración polinómica para la multiplicación de matrices. (Este resultado es originario de Hong, Kung 1981 y en realidad es anterior tanto al olvido de la memoria caché como a la formalización del modelo de memoria externa).
Mi pregunta es esta:
¿Hay algún caso en el que la aceleración sea exponencial en ? El tiempo de ejecución sería algo así como f ( N , B ) / 2 O ( M ) . Estoy particularmente interesado en un algoritmo ajeno al caché o estructura de datos que se ajuste a esta descripción, pero estaría contento con un algoritmo / estructura de datos compatible con el caché o incluso un límite inferior más conocido.
Generalmente se supone en la mayoría de los modelos que el tamaño de la palabra si N es el tamaño de entrada y claramente M > w . A continuación, un aumento de velocidad de 2 M da una aceleración polinomio en N . Esto me hace creer que si el problema que estoy buscando existe, no es polinómico. (De lo contrario, podemos cambiar el tamaño de la memoria caché por una constante para obtener un número constante de E / S, lo que parece poco probable).
Respuestas:
No estoy seguro de haber entendido la pregunta. Pero me parece que bajo el supuesto de que contiene problemas que requieren tiempo exponencial, dichos problemas cumplirían con sus requisitos, ya que si M es O ( log N ) necesitaría un número exponencial de operaciones de E / S ( ya que no puede "permanecer" en el mismo bloque de memoria de tamaño O ( log N ) más que un número polinómico de pasos sin entrar en un ciclo) y si M = NPAGSPAGA Cmi METRO O ( lognorte) O ( lognorte) METRO= N solo necesitaría un número lineal de operaciones de E / S. Además, con respecto a su observación de que dicho problema no puede pertenecer a , es correcto si la aceleración debe mantenerse para valores de M que son Ω ( N ) (ya que significaría que tenemos un número exponencial de operaciones). Pero si la aceleración solo se aplica a valores más pequeños de M , intuitivamente creo que esto no es cierto, porque creo que debería ser posible diseñar un problema que de hecho sea la concatenación de problemas más pequeños de tamaño O ( log N ), cada uno de los cuales requiere exponencial tiempo en su propio tamaño y un número exponencial de operaciones de E / S (es decir, p oPAG METRO Ω ( N) METRO O ( lognorte) , ya que p o l y ( N ) es exponencial en O ( log N ) ). En la práctica, creo que P S P A C E: problemas completos como T Q B F cumplen su condición.p o l y( N) p o l y( N) O ( lognorte) PAGSPAGA Cmi TQ B F
fuente
esta pregunta parece desviarse hacia terra incógnita, es decir, territorio inexplorado. Después de pensar y repasar aquí, hay algunos pensamientos / ideas sobre esta pregunta aparentemente muy difícil / sutil que con suerte será inteligente pero no está destinada a ser definitiva.
Demain a quien usted cita escribe, "la idea principal [de los algoritmos ajenos a la memoria caché] es simple: diseñar algoritmos de memoria externa sin conocer y M. Pero esta idea simple tiene varias consecuencias sorprendentemente poderosas".si METRO
También parece tener implicaciones sorprendentemente sutiles. Parece difícil analizar este modelo para el comportamiento extremo y parece que nadie ha hecho esto hasta ahora. hay algunas encuestas y hasta ahora parecen encuestar todo el campo. Esto no es sorprendente dado que el campo tiene solo ~ 1 década de antigüedad.
El modelo no parece haber sido traducido a las máquinas de Turing aún donde es posible un análisis más estricto / formal / teórico / general / estándar. Todo el concepto de notación Big-Oh y sus implicaciones e intuiciones, como la irrelevancia de las constantes, no necesariamente se lleva automáticamente en esta área de algoritmos ajenos a la memoria caché. por ejemplo, el modelo ya parece estar funcionando con las constantes que miden tamaños de memoria exactos. parece que el campo no tiene un conjunto de axiomas básicos de su dinámica hasta el momento.B , M
Las TM fueron inventadas en 1936 por Turing y los teoremas de la jerarquía de tiempo / espacio de Hartmanis-Stearns (a los que alude en cierta medida en esta pregunta) fueron descubiertos en 1965. Eso es un notable ~ 3 décadas, pero los teoremas de la jerarquía de tiempo / espacio ahora se consideran algo primaria y enseñada en clases de pregrado. todavía no parece haber teoremas de jerarquía correspondientes establecidos en este modelo, y cómo hacerlo no es un problema trivial. Este modelo en realidad parece tener más "partes móviles" que la máquina estándar de Turing (que ya tiene una dinámica bastante compleja), es decir, es como una máquina de Turing aumentada.
Otra idea es convertir este modelo de memoria externa en TM de alguna manera, lo que de nuevo no parece aparecer en la literatura / encuestas sobre algoritmos ajenos a la memoria caché, y tal vez ver cómo se podrían traducir los teoremas de la jerarquía de Hartmanis-Stearns. parece relacionarse con una TM de dos cintas donde una cinta tiene el tamaño 'M' y la otra cinta es infinita, y los bloques se transfieren a 'M' en tamaños de 'B'. pero también, una dificultad aquí es que se trata más de un modelo de RAM que del modelo de Turing que usa acceso secuencial a la cinta. Por otro lado, esto podría toparse con sutilezas asociadas con conversiones entre TM simples y multitapas .
sugiero atacar este problema empíricamente con simulaciones, que es donde la literatura tiende a centrarse, por ejemplo, como en esta gran encuesta de Kumar sobre algoritmos ajenos a la caché (2003). Hay muchos programas y documentos en línea para simulaciones de caché y uno podría responder a su pregunta sin una gran cantidad de código, utilizando algunas simplificaciones. Una idea básica es crear algoritmos probabilísticos que accedan a áreas "cercanas" de memoria basadas en probabilidades. "cerca" aquí no es necesariamente una memoria contigua, sino un algoritmo que selecciona páginas (bloques) de memoria aleatorias basadas en el seguimiento de sus propias páginas a las que se accedió más recientemente. sugiero usar leyes de poderpara determinar la probabilidad de seleccionar páginas "cercanas" en la lista de "acceso más reciente". Este parece ser el aspecto clave con el que están relacionadas las mejoras de rendimiento basadas en caché.
Aquí hay un argumento aproximado basado en 'M' que es básicamente una medida de "memoria central" versus memoria de disco. para un algoritmo, uno esperaría que a medida que aumenta la memoria central, uno solo se acerque [asintóticamente] a una mejora lineal en la velocidad algorítmica, y agregar "memoria central" para obtener cualquier aumento superlineal en la velocidad del algoritmo parece intuitivamente casi como exceder la velocidad límite y "conseguir algo por nada". sin embargo, no comprenda el modelo lo suficientemente bien como para probar esto [pero aparentemente nadie más lo ha hecho, incluidas las autoridades / fundadores / expertos].
Esta literatura sobre algoritmos ajenos a la memoria caché se ha centrado en los algoritmos P y no ha visto ningún caso en absoluto de un análisis de un algoritmo no P hasta ahora y tal vez no exista ninguno. ¡Esto podría deberse a que el análisis es demasiado difícil! en cuyo caso, las preguntas sobre el comportamiento extremo pueden quedar sin respuesta en este campo a largo plazo.
ni siquiera parece intuitivamente claro, o posiblemente estudiado todavía, acerca de cómo se comportan en este modelo los algoritmos de complejidad "pequeños" como en L, o los algoritmos "grandes" como no P (por ejemplo, Expspace, etc.). El modelo mide la localidad de la memoria, que parece ser fundamentalmente diferente, pero entrelazada con las jerarquías de tiempo y espacio.
Hay una medida algo oscura de la complejidad de la máquina de Turing llamada "complejidad de inversión" con algunos estudios, resultados y documentos que podrían estar relacionados. Básicamente, el TM puede cubrir una cierta cantidad de tiempo y espacio, pero las reversiones son una medida algo independiente del cabezal de la cinta durante el cálculo. parece que las "altas reversiones" podrían estar relacionadas con la "localidad de alta memoria" porque en ambos casos el cabezal de la cinta tiende a permanecer en una región "más pequeña" en lugar de moverse a regiones más grandes.
Esta pregunta y modelo me recuerdan la ley de Amdahls y sospecho que algún tipo de ley similar aún no descubierta relacionada con la disminución de los rendimientos o saldos / compensaciones podría ser válida o aplicable en esta área. razonamiento aproximado: la teoría del algoritmo ajeno a la memoria caché está buscando un equilibrio / compensación entre una memoria "local" finita y un disco "infinito" externo basado en el costo. Estos son básicamente dos recursos que se comportan "en paralelo" y es probable que exista algún tipo de compensación óptima entre ellos.
fuente