0

我在 SQL Server 中有两张表,即
一张表GraphNodes如下:

---------------------------------------------------------
id | Node_ID | Node            |  Node_Label | Node_Type
---------------------------------------------------------
1    677       Nuno Vasconcelos   Author       1
2    1359      Peng Shi           Author       1
3    6242      Z. Q. Shi          Author       1
4    8318      Kiyoung Choi       Author       1
5    12405     Johan A. K.        Author       1
6    26615     Tzung-Pei Hong     Author       1
7    30559     Luca Benini        Author       1  
...  
...  

其他表格GraphEdges如下:

-----------------------------------------------------------------------------------------
id | Source_Node | Source_Node_Type | Target_Node | Target_Node_Type | Year |  Edge_Type
-----------------------------------------------------------------------------------------
1    1             1                  10965         2                  2005    1
2    1             1                  10179         2                  2007    1
3    1             1                  10965         2                  2007    1
4    1             1                  19741         2                  2007    1
5    1             1                  10965         2                  2009    1
6    1             1                  4816          2                  2011    1
7    1             1                  5155          2                  2011    1  
...  
...

我也有两个表,即GraphNodeTypes

-------------------------
id | Node    | Node_Type
-------------------------
1    Author    1
2    CoAuthor  2
3    Venue     3
4    Paper     4  

并且GraphEdgeTypes作为:

-------------------------------
id | Edge          | Edge_Type
-------------------------------
1    AuthorCoAuthor  1
2    CoAuthorVenue   2
3    AuthorVenue     3
4    PaperVenue      4
5    AuthorPaper     5
6    CoAuthorPaper   6  

现在,我想计算该图的聚类系数,即两种类型:
如果 N(V) 是节点 V 的 b/w 邻居的链接数,并且 K(V) 是节点 V 的度数,那么,

Local Clustering Coefficient(V) = 2 * N(V)/K(V) [K(V) - 1]  

Global Clustering Coefficient = 3 * # of Triangles / # of connected Triplets of V  

问题是,如何计算节点的度数?是否有可能在 SQL Server 或 C# 编程中需要。还请提出计算本地和全球 CC 的提示。

谢谢!

4

2 回答 2

0

节点的度数不是“计算的”。这只是该节点具有的边数。

虽然您可以尝试在 SQL 中执行此操作,但性能可能很一般。这种类型的分析通常在专门的数据库中进行,如果可能的话,在内存中进行。

于 2016-02-23T07:39:05.423 回答
0

计算每个顶点的度数作为连接到它的边数。在这种情况下,使用 COUNT(source_node) 和 GROUP BY(source_node) 会很有帮助。

要找到 N(V),您可以将边表与其自身连接,然后获取结果表和边表之间的交集。从结果中,对每个顶点取 COUNT()。

于 2018-12-03T18:43:43.960 回答