19. gb_sets
gb_sets 进行集合间操作时,总是会将元素数量较少的集合 X 转换为有序列表,并根据另一个集合 Y 的元素数量使用不同的方法进行遍历操作:
若 |Y| < 10,则集合 Y 也被转换为有序列表,X 和 Y 之间的集合操作通过列表归并进行,结果列表再转换为 gb_sets 结构;
若 |Y|/|X| < c*log[2](|Y|),则仍然将 Y 转换为有序列表处理,这里 c 设为 1,且因 math 模块中没有以 2 为底的对数函数,条件被改为 |Y| < |X|*c1*ln(|Y|),其中
c1=c/ln(2)=1.46;
以上条件都不满足时,保持 Y 为树形结构不变进行遍历;