algorithm - 接入点之间几何加权质心的计算复杂度(Big-O 表示法)
问题描述
我需要使用 Big-O 表示法计算以下方程的计算复杂度:
这里,m
是访问点的总数(也许就复杂性而言,迭代次数i
是单个访问点)。我从这个博客中了解了 Big-O 表示法。此外,我在这个链接上发现了一个类似的问题。在上面的等式中,d
是用 4 次运算(乘法、减法、除法和幂)计算的距离。如上式所示,w
用两个操作(幂和除法)计算。xw
并且yw
分别用两个运算(乘法和除法)计算。因此,我将上述算法的 Big-O 表示法计算为:
4*[m]+2*[m]+2*[m]+2*[m]
这是对的吗?可以近似为O(m)
? 此外,上述算法(方程)与计算复杂度为 的下一个算法相结合,O(N)
即N
迭代次数。在这里,N>>m
。就 Big-O 表示法而言,最终的计算复杂度是多少?
谢谢你。
更新:
w
带有x
和的下标y
只是一个符号。这不是迭代。迭代只是m
. 例如。i = 1,2,3,4,5,......,m
.这两种算法以流水线方式运行。例如,首先m
运行具有迭代的算法,并将该算法的输出(作为输入)馈送到具有N
迭代的下一个算法。因此,当m
迭代(算法 1)完成时,接下来是N
迭代(算法 2)。我的问题类似于两个未嵌套且具有不同迭代的循环 where N>>m
.
for(int i=0; i<m; i++){
System.out.println(i);
}
for(int j=0; j<N; j++){
System.out.println(j);
}
最终的计算复杂度是多少?
解决方案
i=1
是的,您从到的总和i=m
需要O(m)
时间。所有其他操作都是不变的,你没有任何总和或类似的东西。
关于您的N
价值,您没有提供足够的信息。我们必须知道N
是如何计算的或者它是如何与 相关的m
。
此外,您应该考虑以下约束 - 您能否提供一些数字或方程式永远无法达到的最大值(甚至难以置信)?通常对数字的操作被认为是常数,因为它们是在 32 或 64 位数字上进行的,这些数字总是需要常数时间。
但是,如果您有一些方程式具有令人难以置信的长数字(例如数百个字符长或更多),则必须考虑数字的大小的复杂性。(您可能可以想象,将两个数以百万计的字符相乘比用 2x2 做同样的操作需要更多的时间)
推荐阅读
- javascript - 根据反应应用程序中的 API 字段转换货币
- r - 如何合并两个数据集并在 R 中绘制它们
- r - 在 R 中预测未来时间序列的平均值
- c# - 父表中的同一列映射到子类中的不同字段
- php - 在 Safari 中扩展侧边栏 CSS 意外行为?
- azure-sql-database - 查询还原的执行时间是否包含等待时间?或不?
- google-apps-script - 如何使用 Google 脚本将学生注册到课堂
- google-chrome-extension - Manifest.json 阻止 Chrome 扩展中的脚本标签
- java - 错误:方法 X 必须覆盖或实现超类型方法
- ruby-on-rails - Capybara 测试:VCR::Errors::UnhandledHTTPRequestError:如何解决有关 VCR 的错误?请指导