algorithm - 渐近边界和控制结构
问题描述
到目前为止,在我学习算法的过程中,我一直假设渐近边界与控制结构中的模式直接相关。因此,如果我们有 n^2 时间复杂度,我认为这自动意味着我必须使用嵌套循环。但我发现这并不总是正确的(对于其他时间复杂性,不仅仅是二次的)。如何处理时间复杂度和控制结构之间的这种关系?
谢谢
解决方案
赖斯定理是对分析运行时间做出一般性陈述的重大障碍。
在实践中,有一系列可以应用的技术。许多算法具有易于分析的嵌套循环结构。当这些循环之一的边界取决于数据时,您可能需要进行摊销分析。分而治之的算法通常可以用 Master Theorem 或 Akra-Bazzi 来分析。
但是,在某些情况下,运行时间分析可能非常微妙。以 union-find 为例:获得逆阿克曼运行时间界限需要证明页面。然后对于像 Collatz 猜想这样的事情,我们甚至不知道如何得到一个有限界。
推荐阅读
- sql - 如何在 SQL 语句中使用 GROUP BY 和 JOIN?
- javascript - 如何在不使用 POST 请求的情况下访问服务器端 Node.js + Expressjs 中静态文件中的变量/方法?
- sass - brew 名称中的 /(斜杠)是否有特殊含义?或者它只是作为字符串的斜线?
- python - 如何在我的计算机上托管我的 django 项目并从世界任何地方访问它?
- c++ - C++:实现B树的双向迭代器
- c - 在 libavcodec/ffmpeg 中使用并行解码器
- javascript - React Native - 如何在三元函数后更新我的组件?
- gcc - gdb:如何轻松显示/打印堆栈
- php - 查找评论有多个标签。在多对多多态 laravel 关系中
- tensorflow - 如何在 tensorboard 2.3 和 Keras 中每 n 个批次(而不是在 epoch 结束时)在同一个图中绘制训练和验证指标