三角形与3-完全图
前面已介绍graphx如何统计三角形个数和发现三角形结构;三角形也是一种完全图(即任意图中两个点之间都有边)。为了方便下面诉述,这里将三角形称作3-完全图,而完全四边形称作4-完全图,依次类比
4-完全图
graphx并没有提供计算完全图的接口,即使发现简单的3-完全图/三角形也需要自己实现。但发现4-完全图,其实并没有那么困难,既然我们已经可以求解3-完全图,那么4-完全图应该是有办法的,它是否可以由3-完全图得到呢?我们先看下下图:
预处理过程中,已完成各顶点的三角形计算以及邻居点的收集,并且作为顶点的属性值存储在顶点上。在mapTriplets操作时,如对边1-4,点1中不包含点4的三角形<1,2,3>,与点4的邻居集合进行对比发现:三角形<1,2,3>各点都属于点4的邻居集合,因而在边1-4上发现4-完全图<1,2,3,4>。
这就是4-完全图的实现逻辑,并没有想象中那么复杂;4-完全图信息可以存储在顶点上,也可以存储在边上,建议存储在边上,通过mapTriplets操作即可完成。
5-完全图
那么5-完全图是否也可以由4-完全图实现呢,答案是肯定的:
逻辑和计算4-完全图一样。
所以通过图的迭代操作,6-完全图,7-完全图等也并不难计算了;
在计算的过程中,可以通过一些过滤操作,减少图的规模(如求解5-完全图时,要求点的度>=4,即顶点上必须包含4-完全图)。
这里简单介绍了k-完全图的实现逻辑,由三角形的计算延伸到4-完全图,以及k-完全的实现。原来,graphx也可以这么有意思~