Algorithm 如何找出“中的常数”;“大θ”;符号

Algorithm 如何找出“中的常数”;“大θ”;符号,algorithm,time-complexity,Algorithm,Time Complexity,我在解决“大θ”符号的问题。我知道大O表示最坏的情况,大omega表示最好的情况。我还知道我们必须为大θ符号找到两个常数c1和c2。我的问题是如何找出大θ中常数(c)的值。渐近(大O/Ω/Θ)符号告诉你程序是如何扩展的,而不是它们运行得有多快。常数取决于硬件、实现语言、使用的特定编译器/解释器、操作系统、系统负载、内存可用性和缓存、程序员的技能、优化设置等。您可以使用上述给定组合的计时来估计它们,但并没有通用的固定值。这实际上被认为是优点之一,因为它提供了一种以平台无关的方式评估算法的机制。我想

我在解决“大θ”符号的问题。我知道大O表示最坏的情况,大omega表示最好的情况。我还知道我们必须为大θ符号找到两个常数c1和c2。我的问题是如何找出大θ中常数(c)的值。

渐近(大O/Ω/Θ)符号告诉你程序是如何扩展的,而不是它们运行得有多快。常数取决于硬件、实现语言、使用的特定编译器/解释器、操作系统、系统负载、内存可用性和缓存、程序员的技能、优化设置等。您可以使用上述给定组合的计时来估计它们,但并没有通用的固定值。这实际上被认为是优点之一,因为它提供了一种以平台无关的方式评估算法的机制。

我想你指的是这个定义,对吗

让我们在这个例子上试试。我们有两个功能,我们认为这很复杂

f(n)=2*n^2
g(n)=10*n^2
如果您对该主题稍有了解,您已经看到两者都具有相同的复杂性
O(n^2)
。现在是时候通过填充定义来证明
f(n)=θ(g(n))

根据定义,我们可以选择这些值中的任何一个
c1、c2、n0
,主要限制是
n0
只是“开始”,并且该方程也必须适用于大于该值的所有
n


如果我们只填充值,它将是:
0Aθ括号,对于给定的函数,比如

f(n) = Θ(g(n))
等于证明极限

lim(n->∞) f(n) / g(n)
存在*

您可以通过对函数
f
的渐近行为进行有根据的猜测来实现这一点

然后极限理论告诉你,存在一些

n > N => |f(n) / g(n) - C| < ε,
n>n=>f(n)/g(n)-C<ε,
哪些是可以写的

n > N => C - ε < f(n) / g(n) < C + ε
n>n=>C-ε

n>n=>C1.g(n)
这就是常量
C1
C2
的来源。事实上,所有这些都是极限计算的实践



*从技术上讲,下限和上限可能不同,您将执行两种不同的计算

没有配方。只要你有建立下限和上限的技能,就可以为定义良好的复杂度mesurands获得隐藏常数。例如,您可以找到二分法搜索比较次数的常数(严格的下限为1.44 x log(n))@YvesDaoust对于某些特定度量是正确的,但由于Amna没有在问题中指定任何此类定义明确的度量,因此我支持我的回答。另外,请注意,问题被标记为时间复杂性。诸如“比较”等衡量标准的界限与我指出的问题无关,它与时间的关系并不一致。仔细想想,你根本就没有解决这个问题。问题是如何确定给定复杂度函数的大O/θ/ω分析中的隐藏常数。
n > N => C1.g(n) < f(n) < C2.g(n).