Фон
Внешняя память, или модель DAM, определяет стоимость алгоритма по количеству операций ввода-вывода, которые он выполняет (по сути, по числу пропущенных кешей). Эти времена выполнения обычно даются в терминах , размера памяти и B , количества слов, которые могут быть переданы в память за один раз. Иногда L и Z используются для B и M соответственно.
Например, для сортировки требуется стоимость а для умножения наивной матрицы требуется Θ ( n 3 / B √.
Эта модель используется для анализа «алгоритмов кэш-забывчивый», которые не имеют знаний или M . Как правило, цель состоит в том, чтобы алгоритм, не обращающий внимания на кэш, работал оптимально в модели внешней памяти; это не всегда возможно, как, например, в задаче о перестановках (показано в Brodal, Faderberg 2003 ). Посмотрите эту статью Эрика Демейна для более подробного объяснения алгоритмов, не обращающих внимания на кэш, включая обсуждение сортировки и умножения матриц.
Мы можем видеть, что изменение вызывает логарифмическое ускорение для сортировки и полиномиальное ускорение для умножения матриц. (Этот результат родом из Гонконга, Кунга, 1981 г. и фактически предшествует забвению кеша и формализации модели внешней памяти).
У меня вопрос такой:
Есть ли случай, когда ускорение экспоненциально в ? Время работы будет что-то вроде f ( N , B ) / 2 O ( M ) . Я особенно интересуюсь алгоритмом или структурой данных, не учитывающей кэш, который подходит под это описание, но был бы доволен алгоритмом / структурой данных с учетом кэша или даже самой известной нижней границей.
В большинстве моделей обычно предполагается, что размер слова если N - это размер входного файла и ясно, что M > w . Тогда убыстрение 2 M дает полиномиальное ускорение в N . Это заставляет меня поверить, что если проблема, которую я ищу, существует, она не является полиномиальной. (В противном случае мы можем изменить размер кэша на константу, чтобы получить постоянное количество операций ввода-вывода, что маловероятно).