【问题标题】:merging two sorted lists, lower bound合并两个排序列表,下限
【发布时间】:2021-03-15 17:22:13
【问题描述】:

使用决策树和您对 (a) 部分的答案,表明任何正确合并两个排序列表的算法都必须执行至少 2n - o(n) 次比较。

(a) 部分的答案:2n over n 方法将 2n 个数字分成两个排序列表,每个列表有 n 个数字 (n 上的 2n)

h >= lg(2n)! / (n!)^2

= lg(2n!) - 2lg(n!)

= Θ(2nlg(2n)) - 2Θ(nlg(n))

= Θ(2n)

我不明白最后一步。怎么可能是Θ(2n)?

【问题讨论】:

    标签: algorithm lower-bound


    【解决方案1】:

    您可以将乘积的对数表示为单独对数的总和 (the first property here):

    2*n*lg(2*n) = 2*n*(lg(2) + lg(n)) = 2*n*(1 + lg(n))
    

    所以

    2*n*(1 + lg(n)) - 2*n*lg(n) = 
    2*n+ 2*n*lg(n)) - 2*n*lg(n) = 2*n
    

    【讨论】:

    • 感谢您的帮助
    猜你喜欢
    • 2015-05-12
    • 1970-01-01
    • 2022-10-05
    • 1970-01-01
    • 1970-01-01
    • 2022-08-16
    • 2016-03-30
    • 2012-10-31
    • 2021-10-06
    相关资源
    最近更新 更多