Hintergrund
Der externe Speicher oder das DAM-Modell definiert die Kosten eines Algorithmus durch die Anzahl der durchgeführten E / As (im Wesentlichen die Anzahl der Cache-Fehlschläge). Diese Laufzeiten werden im Allgemeinen in Form von , der Speichergröße und , der Anzahl der Wörter, die gleichzeitig in den Speicher übertragen werden können, angegeben. Manchmal werden und für bzw. verwendet.
Zum Beispiel erfordert das Sortieren Kosten von und naive Matrixmultiplikation erfordert .
Dieses Modell wird verwendet, um "Cache-vergessene Algorithmen" zu analysieren, bei denen oder M nicht bekannt sind . Im Allgemeinen besteht das Ziel darin, dass der Cache-vergessene Algorithmus im externen Speichermodell eine optimale Leistung erbringt. Dies ist nicht immer möglich, wie zum Beispiel im Permutationsproblem (gezeigt in Brodal, Faderberg 2003 ). In diesem Artikel von Erik Demaine finden Sie eine weitere Erläuterung der Cache-vergessenen Algorithmen, einschließlich der Erörterung von Sortierung und Matrixmultiplikation.
Wir können sehen, dass das Ändern von eine logarithmische Beschleunigung für das Sortieren und eine polynomische Beschleunigung für die Matrixmultiplikation verursacht. (Dieses Ergebnis stammt ursprünglich aus Hong, Kung 1981 und geht tatsächlich sowohl der Unwissenheit des Cache als auch der Formalisierung des externen Speichermodells voraus).
Meine Frage lautet:
Gibt es einen Fall, in dem die Beschleunigung in exponentiell ist ? Die Laufzeit wäre so etwas wie f ( N , B ) / . Ich interessiere mich insbesondere für einen Algorithmus oder eine Datenstruktur, die für den Cache nicht relevant sind und zu dieser Beschreibung passt, würde mich aber über einen Algorithmus / eine Datenstruktur mit Cache-Unterstützung oder sogar eine bekannteste Untergrenze freuen.
In den meisten Modellen wird im Allgemeinen angenommen, dass die Wortgröße wenn N die Eingangsgröße ist und eindeutig M > w ist . Dann wird eine Beschleunigung von 2 M ergibt ein Polynom Speedup in N . Das lässt mich glauben, dass das gesuchte Problem kein Polynom ist. (Andernfalls können wir die Cache-Größe durch eine Konstante ändern, um eine konstante Anzahl von E / As zu erhalten, was unwahrscheinlich erscheint.)