Union find:快速查找,作者是如何得出这些数字的(缩放)

Union find: Quick find, how did the author arrive on these numbers (scaling)

在 coursera 课程中,下面的 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)是如何计算的?所有数字都在下图中:(下面也复制了文字)

粗略标准(目前)。

例如。快速查找的大问题。

这些数字是计算机处理速度 (GHz) 和内存大小(G "Words",即整数或 4GB)的数量级估计值。

如果你有 10 亿个整数的内存,你将花费大约 1 秒的时间来查看它们,因此对这 40 亿个整数的 O(n) 算法将花费 1 秒。如果算法是O(n2)则需要1018次操作,即10亿秒,约等于31年。