Lý lịch
Bộ nhớ ngoài, hoặc mô hình DAM, xác định chi phí của thuật toán bằng số lượng I / O mà nó thực hiện (về cơ bản, số lượng bộ nhớ cache bị mất). Các thời gian chạy này thường được đưa ra về , kích thước của bộ nhớ và B , số lượng từ có thể được chuyển vào bộ nhớ cùng một lúc. Đôi khi L và Z được sử dụng cho B và M tương ứng.
Ví dụ, phân loại đòi hỏi một chi phí và phép nhân ma trận ngây thơ đòi hỏi Θ ( n 3 / B √.
Mô hình này được sử dụng để phân tích "thuật toán bộ nhớ cache không biết gì", mà không có kiến thức về hoặc M . Nói chung, mục tiêu là để thuật toán quên bộ nhớ cache thực hiện tối ưu trong mô hình bộ nhớ ngoài; điều này không phải lúc nào cũng có thể, như trong bài toán Hoán vị chẳng hạn (thể hiện trong Brodal, Faderberg 2003 ). Xem bài viết này của Erik Demaine để được giải thích thêm về các thuật toán lãng quên bộ nhớ cache, bao gồm các cuộc thảo luận về sắp xếp và nhân ma trận.
Chúng ta có thể thấy rằng việc thay đổi gây ra sự tăng tốc logarit để sắp xếp và tăng tốc đa thức cho phép nhân ma trận. (Kết quả này có nguồn gốc từ Hong, Kung 1981 và thực sự có trước cả sự lãng quên bộ nhớ cache và việc chính thức hóa mô hình bộ nhớ ngoài).
Câu hỏi của tôi là:
Có trường hợp nào tăng tốc theo cấp số nhân trong không? Thời gian chạy sẽ là một cái gì đó như f ( N , B ) / 2 O ( M ) . Tôi đặc biệt quan tâm đến một thuật toán hoặc cấu trúc dữ liệu lãng quên bộ nhớ cache phù hợp với mô tả này nhưng sẽ hài lòng với cấu trúc dữ liệu / thuật toán nhận biết bộ đệm hoặc thậm chí là một giới hạn thấp nhất được biết đến nhiều nhất.
Thông thường, trong hầu hết các mô hình, kích thước từ nếu N là kích thước đầu vào và rõ ràng M > w . Sau đó, sự tăng tốc của 2 M cho sự tăng tốc đa thức trong N . Điều này khiến tôi tin rằng nếu vấn đề tôi đang tìm kiếm tồn tại, thì đó không phải là đa thức. (Nếu không, chúng ta có thể thay đổi kích thước bộ đệm bằng một hằng số để có được số lượng I / O không đổi, điều này dường như là không thể).