为什么memoization不能改善Merge Sort的运行时间?
我在分配任务中有这个问题。但据我所知,Merge Sort使用分而治之的方法(没有重叠的子问题),但Memoization基于动态编程(具有重叠的子问题)。我知道Merge Sort的运行时是O(nlogn)。
我甚至在网络搜索引擎上搜索过,这个问题没有结果。这个问题有误吗?如果听起来不对,但为什么教授会在作业中提出错误的问题? 如果问题没有错或我对这个问题的理解,合并排序和记忆错误,我该如何回答这个问题呢?
答案 0 :(得分:9)
你已经在问题中给出了答案。 Memoization 意味着在解决问题后编写备忘录,这样当我们再次遇到问题时,我们会使用备忘录而不是再次解决相同的问题。
由于在mergesort中,问题不会重叠,因此编写备忘录是没有用的。
答案 1 :(得分:3)
Memoization是一种技术,其中存储昂贵的函数的结果以供稍后使用。合并排序是一种分而治之的算法,它将问题分成较小的非重叠子问题。由于函数不重叠,它们只被调用一次,因此memoization不能真正用于优化它,因为它们不需要存储昂贵的函数调用的输出,以便以后使用它,因为它只被调用一次< / p>