百科问答小站 logo
百科问答小站 font logo



是否存在时间复杂度是O(tan N)的算法? 第1页

  

user avatar   rushcheyo-56 网友的相关建议: 
      

这是一个比较无聊的问题。在复杂性理论里(例如 Time Hierarchy Theorem 中),为了避免过于病态的函数,我们考虑的图灵机的运行时间 都是所谓的 time-constructible function,即满足以下条件:

  1. 存在图灵机 ,以 为输入时,会在至多 时间内输出 的二进制表示。

这样的要求是因为我们经常要模拟一个运行时间 的图灵机指定的步数,我们肯定希望这样操作的运行时间是 的,但是如果计算出 的时间都不止 那就肯定不行了。本题中的 显然不符合这样的要求。另外就算换一个计算模型,在相应的 time-constructible function 定义下也是做不到的。


user avatar   hqythu 网友的相关建议: 
      

这个事情是不讲道理的,我来这里说道说道。


注意到这里说的是 而不是 或者 之类的。回顾一下大O渐进记号的定义:

注意到由于有绝对值,所以 为负数好像也没啥关系。

考虑到一个合理的算法至少拥有不低于某常数的运行时间, 。

而 是周期函数,在接近 的时候值趋近于0。因为 可以任意大,这样就显然不存在一个 使得对任意充分大的 都有 ,因为 可以任意小。

即使限制 只能为正整数 ,也可以知道,由于有理数可以逼近无理数,那么 ,同样可以使得 任意趋近0。


如果考虑的是 的话,这个就变得不一样。因为 是无界的,而且 记号同时限制了上下界,这这个仿佛是在说,算法的运行时间随着问题规模忽大忽小的变化,听起来也不是很讲道理。

而那个加1一直加到小于 的最大整数,这个 实在不算是个问题规模的描述。


因为函数的渐进性质刻画的是当函数自变量充分大的时候的变化趋势,在周期函数上讨论渐进性质实在是一件很没有意义的事情。


Reference:

Big O notation - Wikipedia




  

相关话题

  机器学习小白来提问:关于联邦学习FedAVG和FedSGD的问题? 
  哪些开发会用到微积分、离散数学、线性代数、概率论的知识? 
  程序员能 20 分钟徒手写出一个没 bug 的 KMP 算法吗?(可以调试) 
  如何直观地解释 backpropagation 算法? 
  机器学习的算法和普通《算法导论》里的算法有什么本质上的异同? 
  怎样衡量一个机器学习工程师对算法的掌握程度? 
  能否详细说明一下对称算法中的DES,AES? 
  能否通过计算机找到适合速拧的魔方解法? 
  如何评价一线大厂资深 APP 性能优化系列之异步优化与拓扑排序? 
  为什么有些算法工程师从来不谈业务,不谈解决问题,不谈价值挖掘,开口闭口就是算法模型,炼丹调参工程化? 

前一个讨论
剑桥本科申请如何规划?具体流程是怎样的?
下一个讨论
长期当程序员会失去什么?





© 2024-11-24 - tinynew.org. All Rights Reserved.
© 2024-11-24 - tinynew.org. 保留所有权利