Algorithm 一个算法级联到另一个算法的时间复杂度?

Algorithm 一个算法级联到另一个算法的时间复杂度?,algorithm,big-o,time-complexity,k-means,random-forest,Algorithm,Big O,Time Complexity,K Means,Random Forest,我正在使用随机森林解决监督分类问题,我正在使用k-均值聚类算法分割每个节点上的数据。我试图计算算法的时间复杂度。据我所知,k-means的时间复杂度是 O(n·K·I·d) 在哪里 n是点数 K是簇的数目 I是迭代次数,并且 d是属性数 k,I和d是常数或有一个上界,n比这三个大得多,所以我认为复杂性只是O(n) 另一方面,随机森林是一种分而治之的方法,因此对于n个实例,复杂性为O(n·logn),尽管我对此不确定,如果我错了,请纠正我 要获得算法的复杂性,我是否只需将这两个值相加?在本例中

我正在使用随机森林解决监督分类问题,我正在使用k-均值聚类算法分割每个节点上的数据。我试图计算算法的时间复杂度。据我所知,k-means的时间复杂度是

O(n·K·I·d)

在哪里

  • n是点数
  • K是簇的数目
  • I是迭代次数,并且
  • d是属性数
k,I和d是常数或有一个上界,n比这三个大得多,所以我认为复杂性只是O(n)

另一方面,随机森林是一种分而治之的方法,因此对于n个实例,复杂性为O(n·logn),尽管我对此不确定,如果我错了,请纠正我


要获得算法的复杂性,我是否只需将这两个值相加?

在本例中,您不需要将这些值相加。如果有分治算法,则运行时间由

  • 每次调用的子问题数
  • 这些子问题的大小,以及
  • 每个问题完成的工作量
更改这些参数中的任何一个都会严重影响函数的整体运行时。如果每次调用所产生的子问题的数量增加很小,那么总子问题的数量就会成倍增加,这可能会对总体产生很大的影响。类似地,如果您增加每个级别的工作量,因为子问题太多,运行时可能会剧烈波动。查看主定理,作为如何基于这些量确定运行时的示例

在您的例子中,您从一个分而治之的算法开始,您只知道运行时是O(n logn),并且正在添加一个每级执行O(n)工作的步骤。仅仅知道这一点,我认为不可能确定运行时是什么。另一方面,如果你假设

  • 算法总是将输入分成两个较小的部分
  • 该算法递归地独立处理这两个部分,并且
  • 该算法使用O(n)算法来确定要进行的拆分
然后您可以得出运行时为O(n logn),因为这是主定理给出的递归的解决方案

不过,如果没有关于算法内部工作原理的更多信息,我无法确定

希望这有帮助