假设我有一个内存要求为 logN+1 的算法,其中 N 是问题的大小(要处理的位数)。我提出了第二个版本,将内存需求降低到 (logN)/2+1。我了解到在 Big-O 分析中忽略了常量,因此两个算法版本的复杂度都是 O(logN)。
现在,如果我计算使用第二版算法节省的内存,我得到
在 N = M(N) = 1 - [(logN)/2+1]/[logN+1]
lim N→∞ M(N) = 1/2时节省的内存
这表明渐近地我将始终节省 50% 的内存。我很困惑为什么我无法在 Big-O 分析中看到这种收益?
我的第二个问题是:如果我对 Big-O 表示法的理解是错误的,那么突出显示算法第二版中保存的内存的正确方法是什么?