基尼指数的大 O 复杂度

计算科学 复杂
2021-12-20 23:42:18

找到排序向量的基尼指数的复杂性是多少N值,定义为:

Gini(x)=12k=1Nx(k)x1(Nk+.5N)

1个回答

尽管评论中已经回答了大部分问题,但我想指出一个我认为非常重要的细节。

关于复杂性,您可以提出几个问题:

  • 找到某个数量的“最小/紧密”渐近复杂度是多少(在您的情况下,它是基尼指数)?
  • 某个算法的渐近复杂度是多少(如果我们想要非常细粒度,甚至是它的实现)?

关于紧()和上限(复杂性之间的差异,关于 SO 的以下问题可能很有用。我将使用表示法来回答这个问题;不过,使用也足够了。Θ(N)O(N))ΘO

现在,对于基尼指数,让我们考虑两个“算法”来找到所需的数量:变体:这将由您的问题中的公式准确描述,而变体由修改后的公式描述:AB

GiniA(x)=12k=1Nx(k)||x||1Nk+0.5NGiniB(x)=12||x||1k=1Nx(k)Nk+0.5N

请注意,在算法中,我明确地将向量范数的计算移到求和之外,以表明它的计算只发生一次现在,如果我们假设算法实际上计算了范数次(无缘无故),那么:B||x||1A||x||1 N

  • 的复杂度范数的计算发生次,其中一个范数计算是复杂度。AΘ(N2).NΘ(N)
  • 的复杂度首先在中计算范数,然后计算触及的每个元素的总和- 另一个乘法和减法。BΘ(N)Θ(N)xΘ(N)Θ(1)