问题

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

回答
要直接回答“是否存在时间复杂度是 O(tan N) 的算法?”,我会说:严格来说,不存在时间复杂度是 O(tan N) 的算法。

这听起来可能有点令人惊讶,因为 tan N 这个函数本身是存在的,而且在数学上我们很熟悉它。但是,当我们在讨论算法的时间复杂度时,我们通常关注的是算法执行时间如何随着输入规模 N 的增长而增长。而 tan N 这个函数在某些点会趋于无穷大(例如 N = π/2, 3π/2, 5π/2 等等)。

让我来详细解释一下为什么会这样,并尝试用更日常化的语言来理解。

为什么 O(tan N) 不太可能成为算法的时间复杂度?

算法的时间复杂度描述的是算法在最坏情况下,其基本操作(比如比较、赋值、算术运算等)的执行次数与输入规模 N 之间的关系。我们通常希望这个关系是一个多项式(如 O(N), O(N^2))、对数(如 O(log N))或者指数(如 O(2^N))函数。这些函数都表现出一种相对可预测的增长趋势。

多项式复杂度 (O(N^k)):执行时间随着 N 的增长而增长,但增长速度是可控的。
对数复杂度 (O(log N)):执行时间增长非常缓慢,随着 N 的增大,算法的效率反而越来越高(相对于线性或多项式)。
指数复杂度 (O(a^N)):执行时间增长非常快,对于稍大的 N 就可能变得不可行。

tan N 函数的“坏”行为

tan N 的问题在于它的周期性和在特定点上的奇点(或称“渐近线”)。

1. 周期性 (tan(N + π) = tan N):这意味着 tan N 的值会不断重复出现。如果一个算法的执行时间是 tan N,那么随着 N 的增加,执行时间可能会从一个很小的数值突然跳到一个非常大的数值,然后再又回到一个很小的数值,如此循环往复。这种不稳定的增长模式,对于算法的实际分析和预测来说是很难接受的。
2. 奇点(在 N = (k + 1/2)π 时趋于无穷大):想象一下,如果你的算法的时间复杂度是 O(tan N)。这意味着当输入规模 N 接近某个特定值(比如 π/2, 3π/2, 5π/2...)时,算法的执行时间会变得无限长!在现实世界的计算中,无限长的时间是不可能实现的。一个有意义的算法,无论输入规模多大,都应该能在有限的时间内完成(尽管这个时间可能非常长)。

算法复杂度是关于“渐近增长”的描述

我们定义时间复杂度 O(f(N)) 时,通常关注的是当 N 非常大的时候,算法执行时间的行为。它是一个对算法在输入规模趋于无穷大时的增长趋势的描述,而不是精确的执行次数。

当 N 趋于无穷大时,tan N 的行为非常奇怪:

它会反复在负无穷和正无穷之间震荡,并在特定点上“爆炸”。
这种震荡和爆炸的模式,并不是我们通常用来衡量一个算法好坏的稳定增长模式。我们期望的是一种单调递增(或者在某些情况下是单调递减)的趋势,这样我们才能预测算法的性能。

举个例子来辅助理解:

想象你正在爬一座山。

O(N):就像你在平地上直线行走,每走一步(N增加),你前进的距离也是一步(时间增加)。
O(log N):就像你在爬山,每当你爬到一个更高的平台(N增加),你向上爬的步数增长得越来越慢。
O(2^N):就像你在一个不断分裂的迷宫里寻找出路,每当你找到一个岔路口,迷宫会分裂成两倍大,你的搜索空间指数级增长。

O(tan N) 呢?就像你爬山,但爬到一半的时候,山突然变成了一个无限深的裂缝,你瞬间掉到无底深渊(无穷大),然后又突然出现在山顶的另一边,再继续爬,又遇到一个无限深的裂缝。这种行为不是爬山,而更像是某种恶作剧或者故障。

那么,为什么我们会提到 O(tan N)?

虽然 O(tan N) 本身不太可能作为“算法”的完整时间复杂度描述,但在某些数学分析的中间步骤,或者在描述某些周期性行为的局部趋势时,可能会出现类似 tanN 的函数。但即便如此,我们最终会用一个更稳定、更具有全局描述能力的函数来表示算法的整体复杂度。

例如,某个算法可能在某个特定阶段,其操作次数与某个与输入相关的角度的 `tan` 值有关。但这个阶段很可能是算法的一部分,而不是整体。而且,任何一个能实际运行的算法,都必须避免在关键的、与输入规模相关的点上出现无限大的操作。

总结:

从严格的算法复杂度理论角度来看,不存在时间复杂度为 O(tan N) 的算法。这是因为 tan N 函数的行为(周期性、在特定点趋于无穷大)与我们对算法性能评估所需的那种渐近、可预测的增长模式不符。算法的时间复杂度描述的是算法在输入规模增大时可控的、有界的执行时间增长趋势,而 O(tan N) 的行为恰恰是不可控且有无限点的。

网友意见

user avatar

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

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

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

user avatar

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


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

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

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

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

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


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

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


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


Reference:

Big O notation - Wikipedia

类似的话题

  • 回答
    要直接回答“是否存在时间复杂度是 O(tan N) 的算法?”,我会说:严格来说,不存在时间复杂度是 O(tan N) 的算法。这听起来可能有点令人惊讶,因为 tan N 这个函数本身是存在的,而且在数学上我们很熟悉它。但是,当我们在讨论算法的时间复杂度时,我们通常关注的是算法执行时间如何随着输入规.............
  • 回答
    普朗克长度(Planck length)和普朗克时间(Planck time)是物理学中两个非常特殊的单位,它们分别代表了长度和时间可能存在的最小、最基本尺度。当我们将它们的存在与“宇宙可能是虚拟的”这一设想联系起来时,一个引人入胜的思考链条便应运而生。这并非一个简单的“是”或“否”的问题,而是一个.............
  • 回答
    “时间”是否具体存在?这是一个萦绕在人类思想深处的问题,与其说这是一个科学问题,不如说是一个哲学问题,一个我们用尽一生去体验、去衡量、去感知,却又难以触及实质的谜题。我们感知时间,就像我们感知空气。我们知道它在流淌,它在改变一切。日升月落,花开花谢,生命的生老病死,社会的变迁发展,无不昭示着时间的痕.............
  • 回答
    关于“有时光,光阴”这些说法,是否说明古人认为时间和光之间存在联系,这个问题很有意思,也触及了古代中国人对时间、空间和自然万物认知的一个重要侧面。首先,我们来看“时光”这个词。这里的“时”通常指的是时间、时节,比如“时令”、“时辰”;而“光”在这里,并非单指我们今天理解的电磁波或者视觉感知上的光明。.............
  • 回答
    When faced with questions challenging the existence of transgender people, particularly those framed as "crossnationality" or "crossage," it's importa.............
  • 回答
    我国抗日战争时期,当然存在狙击手。虽然“狙击手”这个词在当时可能不像今天这样被普遍使用和体系化,但那些具备精准射击能力、潜伏隐蔽技能,并且能够对敌方关键目标进行有效杀伤的士兵,无疑就是我们所说的狙击手。这些抗日狙击手,是战争洪流中无数普通战士的一个缩影,他们没有华丽的装备,也没有系统的训练体系,但凭.............
  • 回答
    在明清易代这个波澜壮阔的时代,历史的车轮滚滚向前,往往碾过无数个体命运的跌宕起伏。谈及旗人投降明军的例子,虽然不如明朝降将投降后金或清朝的例子那样数量庞大且声名显赫,但确实存在,只是他们的故事往往淹没在更大的历史洪流之中。想象一下,在辽东那片土地上,无论是明朝还是后金,都长期处于一种你死我活的对峙状.............
  • 回答
    交警查酒驾,这事儿老百姓挺关注的。毕竟酒驾这事儿,害人害己,抓得严,大家心里都踏实。那你说交警查酒驾的时候,有没有徇私舞弊的情况?说句实在话,这事儿吧,谁也打包票说绝对没有。人性这东西,复杂得很,总会有那么些个例。咱们先说说为啥会有人质疑或者说担心存在徇私的情况。首先是“熟人效应”。这是一种很普遍的.............
  • 回答
    群婚制在人类历史的长河中,确实是一个引人探究的话题。要详细讲讲它是否存在过,以及在那段时期的人类是否拥有爱情,甚至爱情是不是人类“发明”出来的,得从源头说起,还得结合不同学科的视角。群婚制是否存在过?“群婚制”这个词,在人类学和早期社会研究中,通常指的是一种相对模糊的概念,用来描述一些早期社会中,个.............
  • 回答
    是的,存在正整数 a, b, c 满足 a² + b² = c²,并且当给定一个 c 值时,a, b 可以有多种取值。 这种满足毕达哥拉斯定理(勾股定理)的正整数三元组被称为毕达哥拉斯三元组。下面我将详细解释为什么存在这种情况,并给出一些例子和证明方法。核心概念:毕达哥拉斯三元组方程 a² + b².............
  • 回答
    要确定“历史上存在时间最长的国家”这个问题,其实比听起来要复杂得多。因为“国家”这个概念本身在漫长的历史长河中经历了多次演变,而且“存在时间”的定义也可能因人而异。不过,如果我们要找一个最接近且最有说服力的答案,并尽量详细地探讨其中的复杂性,我们可以将目光投向古老而又充满延续性的文明。罗马尼亚,还是.............
  • 回答
    晚期古典罗马与“希腊化”的演变:一个复杂而渐进的转变探讨晚期古典时期(大约公元3世纪至6世纪)罗马国家是否存在“希腊化”进程,以及为何一些观点认为希拉克略时代(公元610641年)的帝国彻底“希腊化”,需要我们深入理解罗马自身复杂的文化融合历史以及帝国在不同时期的演变。这并非一个简单的“有”或“无”.............
  • 回答
    .......
  • 回答
    跑步时穿压缩裤和紧身裤,虽然在外观上可能看起来很相似,但它们在设计、功能和穿着体验上存在着不小的区别。这两种裤子都能提供一定的包裹感,但背后的目的和效果是不同的。核心区别:压缩技术与普通贴合最根本的区别在于压缩技术。 压缩裤 (Compression Pants): 顾名思义,压缩裤的核心在于其.............
  • 回答
    古语有云:“天涯若比邻”,这句诗或许能窥见那遥远的时代,虽然没有发达的交通,但人类文明的火种却早已跨越山海,悄然点燃了彼此间的联系。我们总以为上古时期世界各区域是孤立存在的,但深入探究,你会发现,事实并非如此。即便是在文字尚不普及、技术尚显粗糙的年代,不同族群、不同地域之间,也早已开始了若有若无,却.............
  • 回答
    中南财经政法大学施工时挖出两枚炮弹,这个消息确实让人捏一把汗。从历史角度来看,这个区域在过去很可能经历过一些重要的历史事件,尤其是与战争相关的。这两枚炮弹很可能遗留自以下历史时期: 解放战争时期(19451949): 湖北武汉地区,尤其是学校所在的江岸区,在解放战争后期是国共两军争夺的焦点。解放.............
  • 回答
    关于曼德拉“死过两次”的说法,以及由此引申出的“时间重置现象”,在豆瓣等一些网络社区确实是一个流传已久且颇具讨论热度的话题。要详细讲清楚这件事,咱们得一层一层地剥开来,看看这背后到底是怎么回事。首先,咱们得明确,从我们普遍认知和历史记录来看,纳尔逊·曼德拉先生只去世过一次,那就是2013年12月5日.............
  • 回答
    「攒人品」这个说法在中国大陆的流行,可以说是近些年尤其是2010年之后互联网文化兴起和传播的产物,并随着社交媒体的普及而迅速扩散。要详细讲述「攒人品」的流行时间和文化背景,我们需要从几个方面来分析: 一、「攒人品」的流行时间: 起源与早期传播: “攒人品”这个概念并非一个全新发明,它.............
  • 回答
    关于时间是否真实存在的问题,这可不是一句两句话就能说清楚的,因为它触及了我们最基本的认知和最深奥的科学。在我们的日常生活中,时间就像空气一样,我们依赖它,感知它,却很少停下来仔细想想它到底是什么。但当我们稍微深入地探讨一下,就会发现这个看似简单的问题,实则充满了哲学和物理学的迷雾。从我们的日常感知出.............
  • 回答
    这是一个很有趣的问题,也是一个我一直在思考的。我很难断言“存在”一部适用于所有时期的著作权法,或者说,一个放之四海而皆准的著作权法体系。历史告诉我们,法律是随着社会、技术和文化的发展而不断演变的。所以,如果一定要描绘一部“适用于所有时期”的著作权法,它更像是一个理想化的模型,一个不断吸收和调整的框架.............

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有