【问题标题】:Counting Triangles Using SQL使用 SQL 计算三角形
【发布时间】:2014-12-13 04:25:00
【问题描述】:

我可以使用以下查询计算无向图的三角形总数 但是,当我在执行以下查询时为每个顶点计算它时,我只得到作为三角形一部分的顶点的输出,它不显示对于该类型的顶点不形成三角形的顶点,计数应该是 0

选择 e1.source, Count(*) 从边 e1 加入 边 e2 在 e1.dest = e2.source 加入 边 e3 在 e2.dest = e3.source 和 e3.dest = e1.source 和 e2.source

表架构如下

创建表边(source int not null,dest int not null);

【问题讨论】:

    标签: sql graph geometry counting


    【解决方案1】:

    对于这个计数,您可以从任何顶点开始。然后,对于任何其他两个点,有两种方法可以制作三角形 - e2 > e3 和 e2

    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;
    

    【讨论】:

    • 在执行上述查询时将其视为输入,我没有找到作为输入给出的所有顶点创建表边(源 int 不为空,目标 int 不为空);插入边缘值(1,2);插入边缘值(1,3);插入边缘值(2,1);插入边缘值(3,1);插入边缘值(2,3);插入边缘值(3,2);插入边缘值(2,4);插入边缘值(4,2);插入边缘值(4,5);插入边缘值(2,5);插入边缘值(5,2);插入边缘值(5,3);插入边缘值(3,5);
    • @RameshChalla 。 . .您应该使用示例数据编辑您的问题,而不是将其放入 cmets。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-09
    相关资源
    最近更新 更多