Latar Belakang
Memori eksternal, atau model DAM, menentukan biaya suatu algoritma dengan jumlah I / Os yang dimilikinya (pada dasarnya, jumlah cache yang hilang). Waktu berjalan ini umumnya diberikan dalam hal , ukuran memori, dan B , jumlah kata yang dapat ditransfer ke memori pada satu waktu. Kadang-kadang L dan Z digunakan untuk B dan M masing-masing.
Misalnya, penyortiran membutuhkan biaya dan multiplikasi matriks naif membutuhkan Θ ( n 3 / B √ .
Model ini digunakan untuk menganalisis "cache-menyadari algoritma", yang tidak memiliki pengetahuan tentang atau M . Secara umum tujuannya adalah untuk algoritma cache-terlupakan untuk melakukan secara optimal dalam model memori eksternal; ini tidak selalu mungkin, seperti dalam masalah Permutasi misalnya (ditunjukkan dalam Brodal, Faderberg 2003 ). Lihat artikel ini oleh Erik Demaine untuk penjelasan lebih lanjut tentang algoritma yang tidak memperhatikan cache, termasuk diskusi tentang penyortiran dan perkalian matriks.
Kita dapat melihat bahwa mengubah menyebabkan percepatan logaritmik untuk menyortir dan percepatan polinomial untuk perkalian matriks. (Hasil ini berasal dari Hong, Kung 1981 dan sebenarnya mendahului kedua ketidaktahuan cache dan formalisasi model memori eksternal).
Pertanyaan saya adalah ini:
Apakah ada kasus di mana speedup eksponensial dalam ? Waktu berjalan akan menjadi seperti f ( N , B ) / 2 O ( M ) . Saya terutama tertarik pada algoritma cache-lupa atau struktur data yang cocok dengan deskripsi ini tetapi akan senang dengan algoritma cache-aware / struktur data atau bahkan batas bawah yang paling terkenal.
Secara umum diasumsikan dalam kebanyakan model bahwa ukuran kata jika N adalah ukuran input dan jelas M > w . Kemudian speedup dari 2 M memberikan percepatan polinomial di N . Ini membuat saya percaya bahwa jika masalah yang saya cari ada, itu bukan polinomial. (Kalau tidak, kita dapat mengubah ukuran cache dengan konstanta untuk mendapatkan jumlah I / Os yang konstan, yang sepertinya tidak mungkin).