Algorithm 算法边界和描述算法的函数

Algorithm 算法边界和描述算法的函数,algorithm,big-o,Algorithm,Big O,基本上我需要了解如何比较函数,这样我就能找到程序算法的大θ和大ω 我的数学背景不太好,但我有扎实的基础 我的问题是 有没有一种数学方法可以找到两个函数相交的地方,最终一个函数从某个点n开始支配另一个函数 例如,如果我有一个函数 2n^2和64nlog(n)[以对数为基数2] 我怎样才能找到n,2n^2的哪个值是上界(希望我在这里使用了正确的术语)64nlog(n),以及如何将其应用于任何其他函数 这只是猜测吗?您只需要找到这两个函数的截距。因此,将它们彼此相等,并求解n。或者只是画出它们,大致了

基本上我需要了解如何比较函数,这样我就能找到程序算法的大θ和大ω

我的数学背景不太好,但我有扎实的基础

我的问题是

有没有一种数学方法可以找到两个函数相交的地方,最终一个函数从某个点n开始支配另一个函数

例如,如果我有一个函数

2n^2和64nlog(n)[以对数为基数2]

我怎样才能找到n,2n^2的哪个值是上界(希望我在这里使用了正确的术语)64nlog(n),以及如何将其应用于任何其他函数


这只是猜测吗?

您只需要找到这两个函数的截距。因此,将它们彼此相等,并求解n。或者只是画出它们,大致了解截取的情况,这样就可以知道在每种算法之间切换数据的大小。此外,它还有有用的函数求解和绘图工具,以防你对数学有点生疏

大O、大θ和大ω是算法的一般增长模式。每种算法都可以通过无数种方式实现。每个实现可能有特定的执行时间,这与算法的大O有关。您可以比较一个算法的两个实现的每个输入大小的执行时间,但不能单独比较一个算法。大O、大θ和大ω对算法的执行时间几乎一无所知。因此,您甚至无法猜测某个算法变快的特定交点,因为这样的概念毫无意义。我们可以从理论上讨论交点,但不能详细讨论,因为它对算法没有价值,只对实现有价值

同样重要的是要注意,大O(和类似的)没有常数因子,就像你的函数一样


您可以在两侧划分出一个
n
,以及一个公因数2,然后求解此问题:

32 log(n) <= c n  for n >= n_0
32 log(n)=n\u 0

让我们假设
c=32
,因为它是
log(n)对于大O,大θ和大ω,你不必找到交点。你只需要证明一个函数最终支配另一个函数(直到常数因子)。举个例子,一个有用的工具是L'Hopital规则:取两个运行时间函数的比率,当n趋于无穷大时,计算极限,如果极限为无穷大/无穷大,那么你可以应用L'Hopital规则,得到比率的极限等于导数比率的极限,有时还可以得到一个解。例如,这表明对于任何大于0的c,log(n)=O(n^c)