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).