algorithm - 摊销成本与最坏情况
问题描述
我不确定我对摊销分析的理解是否正确。例如,如果我们的摊销成本为 O(1),并且进行 m 次操作,成本为 O(m)。我们可以说最坏的情况是 m 操作的 O(m)*m 吗?
解决方案
仅在技术上,因为 m × O(m) = O(m²) 是一个上限而不是下限。
默认情况下,摊销算法从没有信用开始,因此这 m 个操作的实际总运行时间为 Θ(m),因为信用不能为负数。
由于摊销,对于如何在操作之间分配实际运行时间有很多可能性。你可以有一个操作需要 Θ(m) 实际时间,其余的是 Θ(1)。你可以有 √m 个操作,每个操作都取 Θ(√m),其余的是 Θ(1)。它们都可能是 Θ(1)。你不能拥有的是总时间 ω(m)。
推荐阅读
- windows - 使用 WiX 安装程序在 Windows 机器上安装证书时缺少私钥
- swiftui - SwiftUI Navigation 多个后退按钮
- c++ - 为什么我的 std::atomic
变量不是线程安全的? - javascript - 页面过渡
- python-3.x - 使用 vis.js 在 jupyter 中显示图形
- c++ - 多线程。如果我使用信号量,我可以在开始时创建很多线程还是应该只有几个?
- c++ - C++ struct 在函数返回后被破坏
- json - JSON反序列化映射数组到自己的属性
- javascript - 如何确保点击完成?
- c++ - C++ 如何检测它正在运行的当前线程?