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




  

相关话题

  为什么 360 面试官说 Trie 树没用? 
  任何密码都可以用穷举推算出来,只是时间问题。如果是这样的话,那不是很不安全? 
  C++笔试算法题允许用stl函数吗? 
  如何看待阿里 P8 加面 coding 环节,而 P7 却做不出头条算法题? 
  如何看待语音合成等 AI 算法、无人机等被列入限制出口技术目录? 
  为什么有人说弄懂了《算法导论》的 90%,就超越了 90%的程序员? 
  有什么理论复杂但是实现简单的算法? 
  程序员能 20 分钟徒手写出一个没 bug 的 KMP 算法吗?(可以调试) 
  你见过哪些神一样的优化操作? 
  有没有可能让计算机去理解代码,从而写代码? 

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





© 2025-01-31 - tinynew.org. All Rights Reserved.
© 2025-01-31 - tinynew.org. 保留所有权利