我可以使用以下查询计算无向图的三角形总数 但是当我在执行下面的查询时为每个顶点计算它时,我只得到顶点的输出,它是三角形的一部分,它不显示不形成该顶点类型的三角形的顶点,计数应为0 < / p>
选择e1.source,Count(*) 从边缘e1加入 边缘e2 在e1.dest = e2.source加入 边缘e3 在e2.dest = e3.source和e3.dest = e1.source和e2.source&lt; e3.source e1.source小组;
表格模式如下
创建表边(source int not null,dest int not null);
答案 0 :(得分:2)
对于此计数,您可以从任何顶点开始。然后,对于任何两个其他点,有两种方法来制作三角形 - e2&gt; e3和e2&lt; E3。只需输入其中一个条件就可以得到一个三角形,然后按计数的第一个点聚合:
select e1.source, Count(*)
from edges e1 join
edges e2
on e1.dest = e2.source join
edges e3
on e2.dest = e3.source and e3.dest = e1.source and e2.source < e3.source
group by e1.source;