У меня есть две таблицы в 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 и 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.
Спасибо!