百科问答小站 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




  

相关话题

  沃罗诺伊图(Voronoi Diagram,也称作Dirichlet tessellation,狄利克雷镶嵌 )是怎样的? 
  是否存在仅由1和2组成的长度为2^n的序列,可以做到在这个序列中取出所有含1和2的长度为n的序列? 
  在机器学习模型的训练期间,大概几十分钟到几小时不等,大家都会在等实验的时候做什么? 
  最快的 atoi、atof 实现是什么样的? 
  中国目前的人工智能在全球处于什么水平? 
  怎样衡量一个机器学习工程师对算法的掌握程度? 
  学物理为什么会觉得计算机很难? 
  只需4组数据,还原你的购物模式,具体算法是怎么实现的? 
  美剧《硅谷》第三季第一集神秘代码写的是什么? 
  数据结构与算法中,树一般会应用在哪些方面?为什么? 

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





© 2025-04-12 - tinynew.org. All Rights Reserved.
© 2025-04-12 - tinynew.org. 保留所有权利