为什么memoization不会改善Merge Sort的运行时间?

时间:2017-09-18 18:31:24

标签: algorithm dynamic-programming mergesort memoization

为什么memoization不能改善Merge Sort的运行时间?

我在分配任务中有这个问题。但据我所知,Merge Sort使用分而治之的方法(没有重叠的子问题),但Memoization基于动态编程(具有重叠的子问题)。我知道Merge Sort的运行时是O(nlogn)。

我甚至在网络搜索引擎上搜索过,这个问题没有结果。这个问题有误吗?如果听起来不对,但为什么教授会在作业中提出错误的问题? 如果问题没有错或我对这个问题的理解,合并排序和记忆错误,我该如何回答这个问题呢?

2 个答案:

答案 0 :(得分:9)

你已经在问题中给出了答案。 Memoization 意味着在解决问题后编写备忘录,这样当我们再次遇到问题时,我们会使用备忘录而不是再次解决相同的问题。

由于在mergesort中,问题不会重叠,因此编写备忘录是没有用的。

答案 1 :(得分:3)

Memoization是一种技术,其中存储昂贵的函数的结果以供稍后使用。合并排序是一种分而治之的算法,它将问题分成较小的非重叠子问题。由于函数不重叠,它们只被调用一次,因此memoization不能真正用于优化它,因为它们不需要存储昂贵的函数调用的输出,以便以后使用它,因为它只被调用一次< / p>