- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
学习 MIT Opencourseware 的算法类(class),一位教授谈到了对数字的幂及其时间复杂度。
x^n 简单地计算为 x*x*x...... n 次(想象一个简单的 for 循环,其中执行乘法)
他说这种方法的时间复杂度是 theta(n)。
这是我的分析:
设 N(x) 是一个给出 x 中位数的函数。然后,复杂度:
x*1 = N(x)
x*x = N(x)*N(x)
x*x*x = N(x^2) * N(X)
x*x*x*x = N(x^3) * N(x)
等等……
综上所述,T(x^n) = N(x) + N(x)*N(x) + N(x^2)*N(x) + N(x^3)*N( x) + ............ N(x^(n-1))*N(x)
T(x^n) = N(x)[1 + N(x) + N(x^2) + N(x^3) + ...... N(x^n-1 )]
但是,我无法进一步解决。它最终如何产生 theta(n)?
最佳答案
可以这样想。
如果您将两个数字之间的乘法视为需要单位时间的运算。然后 2 数乘法的复杂性在 theta(1) 时间内完成。现在,在一个 for 循环中,它为 n 个数字运行 n-1 次。您应用此操作 n-1 次。所以 theta(1) 成本操作发生 N-1 次,这使得操作 theta(n-1) 的总成本在渐近术语中是 theta(n)
乘法是这样的
它是每个步骤的 theta(1),因为您可以使用上一步的结果来计算整体产品。例如,当您计算 x^2 时。您可以存储 x^2 的值并在计算 x^3 时使用它。同样,当您计算 x^4 时,您可以使用 x^3 的存储值。
现在所有单独的操作都需要 theta(1) 时间。如果做n次,总时间就是theta(n)。现在计算 x^n 的复杂度。
因此,对于 x^n,时间复杂度为 T(n) = theta(N)
如果你想总结复杂性。你总结错了。
我们知道T(2) = theta(1),两个数相乘的时间复杂度。
如您所知,C 是您将如何编写幂(朴素)函数的示例。
int power(int x,int n)
{
int powerVal=1;
for(int i=1;i<=n;++i)
{
powerVal=powerVal*x;
}
return powerVal;
}
现在,正如您所看到的,每次两个整数相乘都只需要 theta(1) 时间。你运行这个循环 n 次。所以总复杂度是 theta(n)
关于algorithm - 为数字供电的时间复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20828489/
根据外媒 9to5google 的消息,小米电视棒现已通过 FCC 的审批,可能很快在美国上市。 IT之家了解到,这款 FCC 认证的小米电视棒的型号为 MITVMDZ24AA,是两款小米 M
我正在为客户设计和开发由 Wordpress 和 Woocommerce 提供支持的网页,但我被迫使用插件,然后对其进行修改以适应建议的设计和功能。 插件是“Woocommerce Visual Pr
我是一名优秀的程序员,十分优秀!