Graph 图平均聚类系数公式

Graph 图平均聚类系数公式,graph,Graph,一个图在一个环中包含N个节点。如果n是每个节点的位置,则每个节点连接到位置n-2、n-1、n+1、n+2上的其他4个节点 我找到了计算每个节点聚类系数的公式: 在哪里 Nv是节点v的邻居之间的链路数 Kv是节点v的邻居数 此外,图表应包括N/2个随机链接: 该图的平均聚类系数等于0.4777786 我试图通过使用NetworkX库进行计算来理解,运行100000次后,平均聚类系数的平均值如下: N=8时为0.6836288481928767 N=12时为0.4970500101826

一个图在一个环中包含N个节点。如果n是每个节点的位置,则每个节点连接到位置n-2、n-1、n+1、n+2上的其他4个节点

我找到了计算每个节点聚类系数的公式:

在哪里

  • Nv是节点v的邻居之间的链路数
  • Kv是节点v的邻居数
此外,图表应包括N/2个随机链接:

该图的平均聚类系数等于0.4777786

我试图通过使用NetworkX库进行计算来理解,运行100000次后,平均聚类系数的平均值如下:

  • N=8时为0.6836288481928767
  • N=12时为0.4970500101826404
  • N=24时为0.4003510099434803
然而,我不知道如何用公式计算

当N/2个随机链接添加到图中时,上述公式如何更改

守则:

import networkx as nx 
from networkx.drawing.nx_agraph import graphviz_layout
import random

def getClusteringCoefficient(N, show_graph = False):

    G = nx.Graph()

    def next(node_from, diff):
        node_from = (node_from+diff)%N
        if(node_from==0):
            node_from = N
        return node_from

    for node_from in range(1, N+1):
        node_to_1 = next(node_from, 1)
        node_to_2 = next(node_from, 2)
        G.add_weighted_edges_from([(node_from, node_to_1, 1)])
        G.add_weighted_edges_from([(node_from, node_to_2, 1)])
    
    count=0
    random_connections = int(N/2)
    while(True):
        node_from = random.randint(1,N)
        not_neighbors = list(nx.non_neighbors(G,node_from))
        if(len(not_neighbors)==0):
            continue
        node_to_pos = random.randint(0,len(not_neighbors)-1)
        node_to = not_neighbors[node_to_pos]
        G.add_weighted_edges_from([(node_from, node_to, 1)])
        count=count+1
        if(count==random_connections):
            break;
        
    if(show_graph):
        pos=graphviz_layout(G, prog='circo')
        nx.draw(G, pos, with_labels=True)

    return nx.average_clustering(G)

total_coefficient = 0
for i in range(1,100000):
    coefficient  = getClusteringCoefficient(12)
    total_coefficient = total_coefficient+ coefficient
    
print(total_coefficient/i)

从第一个图形到第二个图形,似乎有一个比简单地添加更多链接更大的转变。也许这是在瓦茨-斯特罗加茨图上重新布线后添加更多链接?你能提供复制这些平均值的代码吗?@torresmateo我已将代码添加到question@torresmateo是的,这是Watts Strogatz graphOk,据我所知,你从常规的Watts Strogatz开始,不重新布线,然后添加N/2条边。就为了让我理解这个问题,你期望的平均聚类系数是多少?@torresmateo我需要计算平均聚类系数的公式