在本文中,我们将详细讨论数据分析中的多阶段算法。我们还将介绍多阶段算法的工作。
多阶段算法:
多阶段算法是 PCY 算法的改进版本,它使用某些连续的哈希表来进一步减少候选对的数量。两种算法的矛盾在于多级需要两次以上的过程才能发现频繁对。
多阶段算法的工作:
- 第一关:
多级的第一遍与PCY的第一遍相同。在那次传递之后,频繁的桶被一个位图识别和封装,再次与 PCY 中的相同。相反,多级的第二遍不计算候选对。相反,它使用另一个哈希函数将可访问的主内存用于另一个哈希表。毕竟,从第一个哈希表中获得的位图占用了可访问主内存的 1/32,而第二个哈希表的桶或多或少与第一个一样多。 - 第二关:
在多阶段的第二次通过时,我们再次通过篮子的文件夹。不想再数一遍。多阶段算法使用补充哈希表来减少候选对的数量。然而,我们必须保持关于哪些项目是频繁的信息,因为我们在第二次和第三次通过时都需要它。在第二遍期间,我们将无可置疑的项目对散列到第二个散列表的桶中。
在第二次传递中,您将看到仅当它在 PCY 的第二次传递中被计数时才被散列 体验两个质量,并且当且仅当 i 和 j 经常一起出现时,它才会散列 {i, j},并且然后在第一次传递期间,该对被散列到一个频繁的桶中。
结果,第二个哈希表中的计数总和应该明显小于第一遍的总和。结果是,即使第二个哈希表的桶数只有第一个表的 31/32,我们预计第二个哈希表中的频繁桶比第一个少得多。
- 最后通行证:
第二遍之后,第二个哈希表也被封装成一个位图,这个位图存储在主存中。两个位图加起来只占可访问主内存的不到 1/16,所以仍然有很大的空间来计算第三遍的候选对。一对 {i, j} 在 C2 中当且仅当 –
- i 和 j 都出现在频繁项列表中。
- Pair {i, j} 被散列并转移到创建的第一个散列表的频繁桶中。
- Pair {i, j} 被散列并转移到创建的第二个散列表的频繁桶中。
- 第三个约束是 multistage 和 PCY 之间的分歧:
很明显,可以在多级算法的第一个和最后一个之间包含任意数量的通道。有一个限制因素,即每次传递都必须保留来自每个先前传递的位图。在适当的时候,主内存中没有足够的空间来进行计数。这并不影响我们应用多少遍,坦率的频繁对每次都会散列一个频繁的桶,所以没有办法规避计算它们。