algorithm - 关于 O((log n)²) 与 O(log n) 的混淆
问题描述
我在互联网上找不到任何好的解释 O((log n ) 2 ) 等于的东西。我认为它等于 O(log n ),通过以下论点:
- O(log (log n ) 2 )
= O(log (log n · log n ))
= O(log log n + log log n )
= O(2 log log n )
= O(log log n ) - 从两侧删除“日志”给出 O((log n ) 2 ) = O(log n )。
那有效吗?
解决方案
你在这里提出的论点是一个有趣的论点,但不幸的是它不起作用。要了解原因,让我们“证明”O(n 137 ) = O(n)。为此,请注意
O(log n 137 )
= O(137 日志 n)
= O(log n)。
所以从两边删除日志给了我们 O(n 137 ) = O(n)。
但当然,这是不对的。原因是,如果 f(n) = O(g(n)) 然后 log n = O(log g(n)),通常情况下 log f(n) = O (log g(n)) 意味着 f(n) = O(g(n))。
至于您最初的问题- log 2 n = O(log n) 的情况并非如此。事实上,对于任何不是 O(1) 的函数 f,情况都不是 f(n) 2 = O(f(n))。
推荐阅读
- javascript - 如何在与 ScrollView 的本机反应中实现 scrollspy?
- python - 如何确定圆与各种障碍物之间的像素距离
- angular - 使用h ng-bootstrap4在角度4中显示模态弹出正文中的组件
- python - 在 pandas 数据框中插入新行,更改一些时间戳,同时保留其他数据
- java - 如何将多个 JsonProperty 映射到单个变量?
- node.js - 如何从流星/nodejs 应用程序收集内存转储?
- c# - 如何从本地系统中的文件夹启动 MVC 服务器
- monitoring - 监控 Azure Data Lake Store
- react-select - react-select:如何将 optionRenderer 属性与 Async 组件一起使用?
- android - 我们可以构建 Kotin 和 Java Mix 应用程序吗?