联盟发现:快速查找,作者如何得出这些数字(缩放)

时间:2016-10-10 02:03:37

标签: java algorithm union scaling union-find

在课程中,以下联合查找仅适用于数字: https://www.coursera.org/learn/introduction-to-algorithms/lecture/EcF3P/quick-find

public class QuickFindUF
{
 private int[] id;
 public QuickFindUF(int N)
 {
 id = new int[N];
 for (int i = 0; i < N; i++)
 id[i] = i;
 }
 public boolean connected(int p, int q)
 { return id[p] == id[q]; }
 public void union(int p, int q)
 {
 int pid = id[p];
 int qid = id[q];
 for (int i = 0; i < id.length; i++)
 if (id[i] == pid) id[i] = qid;
 }
}

在幻灯片结束时,如何计算每秒10 ^ 9次操作以及其他10 ^ x个数字(包括10个)?所有数字都在下面的图像中:(文本也在下面复制)

image

粗略标准(暂时)。

  • 每秒10 ^ 9次操作。
  • 10 ^ 9字的主记忆。
  • 大约1秒内触摸所有单词。

实施例。快速查找的巨大问题。

  • 10 ^ 9个对象上的10 ^ 9个联合命令。
  • 快速查找需要超过10 ^ 18次操作。
  • 30多年的电脑时间!

谢谢!我希望有一天stackoverflow可以在没有理由的情况下阻止投票。或者,删除这些声誉(至少为所有人提供基本权限)。有些人盲目地保持低调(除非我们能看出原因)。恕我直言,这打破了开放交换的目的。看到我的另一个问题,它是在程序员交换,因为不适用于堆栈溢出,但仍然被投票。 https://softwareengineering.stackexchange.com/questions/333198/rotate-a-matrix-in-place-moving-elements-how-to-write-a-part-of-flow-logic-af

1 个答案:

答案 0 :(得分:1)

这些数字是计算机处理速度(GHz)和存储器大小(G“字”,即整数或4GB)的数量级估计。

如果你有10亿英镑的内存,你需要大约1秒的时间才能看到它们,所以这40亿英寸的O(n)算法需要1秒。如果算法是O(n 2 ),则需要10次 18次操作,或10亿秒,大约等于31年。