看数据挖掘书的时候,遇到该算法,郁闷了好几天终于搞明白了,现在分享一下自己的理解。这里只解释一下3-D数组中2-D数组的计算,3-D数组的图可以参照《数据挖掘概念与技术(韩家炜)》中的数据立方体中的图。
多路数组聚集算法,该算法的思想是(也算是最后的结论):“将最小的平面放在内存中,对最大的平面每次只是取并计算一块”。
该算法的核心是:“用一个二维数组缓存一个2-D立方体的计算结果”。
该3-D立方体包含三个维A,B,C。对于维A,B,C数组大小分别是40,400,4000。每个维分为4个相等的分区,共分为64块。
假设计算BC方块中的 b0c0块,在内存中为该块分配存储空间,我们按照1-64的顺序扫描,该块计算完成之后就可以从内存中取出,写入硬盘。要想计算该块,我们可以分配一个二维数组,则二维数组大小必须为100*1000,即BC平面的一块。当我们计算完之后,b0c0,就可以写入硬盘。当我们计算a0c0,因为我们只有在扫描到第13块时才可以计算,我们不得不缓存的数据大小为40*1000(即至少缓存前四块的大小),计算a0b0,时,因为要扫描到第49块,所以我们不得不缓存的数据大小为40*400(即需要缓存AB整个平面大小)