我在这里用大o设F(n)和g(n)是具有相同O(n)的时间复杂度的两个函数。
根据定义(当使用“=”来解释时间复杂度)时,这种推理可能是正确的:

IF f(n)=O(n) AND g(n)=O(n) THEN f(n)=g(n)

但我们知道,两个增长率相同的函数并不一定相同。
为了避免这种不匹配,为什么O(n)不被定义为任何函数的集合,其时间复杂度为O(n)?
O(n)=O(f(n))=O(g(n))={n, f(n), g(n), ...}
f(n)∈O(n)
g(n)∈O(n)

最佳答案

实际上,O(n)的定义正是你所建议的频繁使用=而不是∈只是对符号的滥用;但它很方便,而且在实践中不会造成任何歧义。

关于algorithm - 为什么用“=”来表示算法的时间复杂度而不是“ε”?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44725217/

10-16 00:51