Big-Oh时间复杂度可以包含多个变量吗?


11

例如,让我们说我正在做字符串处理,需要对两个字符串进行一些分析。我没有给出关于它们的长度可能最终是多少的信息,因此它们来自两个不同的家庭。将算法的复杂度称为或(取决于我们使用的是朴素算法还是优化算法)是否可以接受?Ø(ñ∗米)O(n+m)

同样,让我们​​假设我们选择的算法实际上需要两个阶段-第一个字符串的设置阶段,这使我们能够处理任意数量的其他字符串而不会产生初始成本。说它具有构造,再进行任意数量的计算,是否被认为合适?O (m )Ø(ñ)Ø(米)

因为两个计算都是线性的,所以仅将它们称为是否合适?Ø(ñ)


请参阅此答案的评论以了解一些背景知识-我对@corsiKa的尊敬非常勇敢地提出了这样一个有争议的问题。
— OldCurmudgeon 2014年

@OldCurmudgeon,我明白了。我不想涉足该评论主题。Oldcurmudgeon,您是否在不理解big-O表示法的情况下争论big-O表示法?确实很尴尬。此外,您和corsiKa正在争论运行时间,而没有定义参数和-导致通讯错误的原因。提示:处理字符串时,一个常见的约定是同意使用表示一个字符串的长度,使用表示另一个字符串的长度-但理想情况下,最好使它明确,因为否则会引起混淆(例如此处说明)。米米Ññ米米ñ
— DW

@DW OldCurmudgeon可能在学校只是学到了一个不同的定义...正如我在下面的评论中指出的那样,可以避免使用多个变量,尽管到目前为止我从未真正考虑过这样做。也许这(或类似的东西)曾经是标准的?
— Patrick87

2
我认为这里和这里都有足够的答案。
— 拉斐尔

Answers:


14

当然是。很好,完全可以接受。看到算法的运行时间取决于两个参数是常见且标准的。

例如,您经常会看到以表示深度优先搜索的运行时间,其中n是图形中的顶点数,m是图形中的边数。这是完全有效的。这样做的意义是存在一个常数C ^和数字Ñ 0,米0,使得算法的运行时间为至多Ç ⋅ (Ñ + 米),对于所有Ñ > Ñ 0,米> 米0Ø(ñ+米)ñ米Cñ0,米0C⋅(ñ+米)ñ>ñ0,米>米0。换句话说,如果确切的运行时间为,那么我们说f (n ,m )= O (n + m ),如果存在c ,n 0,m 0使得n > n 0并且米> 米0意味着˚F (ñ ,米)≤ ç ⋅ (ñ + 米)F(ñ,米)f(n,m)=O(n+m)c,n0,m0n>n0m>m0f(n,m)≤c⋅(n+m)。

是的,可以说第一阶段花费时间,第二阶段花费O (m )时间是完全适当和可以接受的。O(n)O(m)

重要:请确保定义和m。如果不指定n是什么,就不能说“这是O (n )时间算法” 。如果问题语句中未指定n,则需要指定它。例如,请参见图算法,其中我们通常定义n =#个顶点和m =#个边。nmO(n)nnn=m=

至于是否可以称它们为时间,当然不能-除非您以某种方式知道m = O (n )。当然,如果您知道m = O (n ),则随之得出m + n = O (n ),因此O (m + n )时间算法也是O (n )时间算法。但是如果不能保证m = O (O(n)m=O(n)m=O(n)m+n=O(n)O(m+n)O(n),则不能将其称为 O (n )时间算法。m=O(n)O(n)

这是基本的东西。您会在算法教科书中找到所有内容。


1
@OldCurmudgeon,很有可能您会在许多标准算法教科书中找到此示例。你看了什么?您是否尝试过查看深度优先搜索这一章(我在回答中提到的示例)?
— DW

2
@OldCurmudgeon在我的CLRS练习3.1-8中,正是针对许多变量的函数给出了标记的定义。和其上界DFS的运行时间是Ô (V + Ë )为一个曲线图(V ,ê )。ØO(V+E)(V,E)
— Kirill 2014年

2
@Kirill我的观点是可以想象的,在过去的某个时候,习惯上只考虑总长度是可以的,否则可能会被认为是错误。如果您要对学生的考试进行评分,并且该学生使用总输入长度作为DFS时间复杂度的变量,那么不考虑二维(V和E)是否会出错?真实的东西和人们愿意承认的东西并不总是一成不变的。ñ
— Patrick87

1
我同意,只要每个人都以这种方式使用 Landau表示法,但是几乎没有人知道它的实际含义(除非您在功能上进行连接)。另请参阅A. Schulz的答案中链接的文章,该文章首先指出“基本”和“常见”使用是错误的。
— 拉斐尔

1
@ Patrick87 复杂性理论通过许多著名类的定义,主要使用输入长度(有明显的例外)。算法分析(认真完成)对了解有关实际资源使用情况(在模型允许的范围内)感兴趣,因此其他参数对于绘制整个图片(更准确)变得更加有趣。
— 拉斐尔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.