如何在algebraixlib中找到代数运算的时间复杂度

时间:2015-10-06 14:06:33

标签: algebraixlib

如何使用数学或Big O表示法为数据代数中使用的代数运算计算时间复杂度。 我会用书中的例子来解释我的问题。请考虑以下书中给出的示例。 乙 enter image description here

在上面的例子中,我想计算转置和撰写操作的时间复杂度。

如果可能,我还想找出其他代数数据操作'时间复杂性。 如果您需要更多解释,请告诉我。

@wesholler我编辑了我的问题以了解你的解释。下面是一个真实的例子,假设我们想要计算下面使用的操作的时间复杂度。

假设我有如下数据运算的代数 enter image description here

您能描述一下我们如何计算上例中的时间复杂度。最好是Big O?

由于

1 个答案:

答案 0 :(得分:1)

这个答案有三个部分:

一般时间复杂度分析

通常,时间复杂度/ BigO可以通过考虑操作的起源来确定 - 也就是说,哪些操作是从更原始的代数扩展到派生这个?

以下规则描述了扩展到其幂集代数中的一元和二元运算的时间复杂度的上限。

enter image description here enter image description here

一元扩展可以被认为是类似到地图操作,因此具有线性时间复杂度。二进制扩展评估操作参数的叉积,因此具有类似于O(n^2)的最坏情况时间复杂度。然而,重要的是要考虑真正的上界是两个论证的基数的乘积;当组合或超限操作的右手参数是单身时,这通常会在实践中出现。

algebraixlib实现的时间复杂度

我们可以看一下扩展如何影响时间复杂度的几个例子,同时分析algebraixlib中实现的复杂性(最后一部分讨论其他实现。)

由于它是数据代数的参考实现,algebraixlib实现扩展操作非常字面。因此,下面使用Big Theta,因为公式表示时间复杂度的下限和上限。

以下是一元操作transposecouplets扩展到relations再扩展到clans

enter image description here

同样,这里的二进制操作composecouplets扩展到relations再扩展到clans

enter image description here

很明显,两个宗族行动的复杂性都受到关系因素的数量以及这些关系中对联的数量的影响。

其他实施的时间复杂性

重要的是要注意,上面的部分描述了特定于algebraixlib 中实现的算法的时间复杂度。

可以想象实施,例如clans.cross_union的方法类似于 sort-merge-join hash-join 。在这种情况下,上限将保持不变,但下限(和预期)时间复杂度将降低一度或多度。