给定的输入是:缓存大小s
,内存条目数n
以及一系列内存访问。
尽可能地给出最低数量的缓存未命中。
示例:
s = 3,n = 4 1 2 3 1 4 1 2 3 min_miss = 4
我整天都被困住了。提前谢谢!
您可以决定缓存采取的任何行为。例如,即使访问了条目,也不必输入条目。它不需要经常。您不需要遵循固定的“规则”来缓存。
答案 0 :(得分:1)
尝试关注http://en.wikipedia.org/wiki/Page_replacement_algorithm#The_theoretically_optimal_page_replacement_algorithm - 当您需要换掉一些东西时,换掉不会在最长时间内再次使用的项目。由于您提前获得了整个内存访问序列,因此这对您来说是可行的。这显然是本地最优的,至少在高速缓存变满之后第一次高速缓存未命中,因为到那时每个其他策略至少有一次高速缓存未命中。我并不明白这是全局最优的 - 搜索我在http://www.stanford.edu/~bvr/psfiles/paging.pdf找到了一个证据,声称其最优性的其他证据确实存在,但甚至更长。