我有一个固定大小的数组N
和三个可能的操作ALLOC(numBytes)
和FREE(block)
,它们在给定的数组上分配和释放连续的内存块(间隔)(类似于malloc ()和free()),以及执行COMPACT
操作以压缩分配的块(重新排列数组中从偏移量0
开始的块,以使块之间没有间隙)。
有ALLOC
和FREE
操作的预定义列表,这些操作必须在数组上顺序执行(顺序不能更改)。问题在于数组可能变得非常分散,ALLOC
将失败,并且每次发生这种情况时,都需要执行COMPACT
操作。
我需要一种方法来执行操作列表(对于每个ALLOC
操作,以找到数组中的最佳偏移量),以使所需的COMPACT
操作的数量减至最少。请注意,目前对于优化峰值内存使用情况并不重要。
有关如何解决此问题的任何指示?我觉得这可能是NP难题,但我不知道那是什么。