针对用户配置了各种Select Rules, 如何确定最终的cuboid数量呢? 知道了如何评估cuboid数量,也就可以评估出计算量的大小。
设有: A, B, C, D, E, F, G, H, I 这9个维度, 那么cuboid的总数为2^9 = 512个.
是怎么计算出来的呢? 两种方法:
1 C09 + C19 + C29 + C39 + C49 + ..... C99 = 512;
2 将每个维度看成2种取值, 取空,或取值, 如A维度, 有两种选择, 选或者不选;
这样相当于扔9次硬币,每次不是正面就是反面,然后看总共有多少种组合:
所以相当于2^9 = 512种;
知道了上面的第2种方法,那么继续往下看:
设hierarchy维度为: [A, B, C];
设joint维度为: [D, E], [F, G];
然后nomal维度就是: [H, I];
[A, B, C]的取值组合为: A, AB, ABC, 空 这4种;
[D, E]的取值组合为: DE, 空这2种;
[F, G]的取值组合为: FG, 空这2种;
H为: H, 空这2种;
I为: I, 空这2种;
由上面第2种计算方法, 各个组合维度间, 是乘积关系, 所以结果为:
4 * 2 * 2 * 2 * 2 = 64;
减少了8倍.
上面计算时,假定所有组合间没有交叉维度,如果有维度在多个组合间存在,或者有mandatory维度,那么还可以减少cuboid;