复杂网络中的边权重

复杂网络中的边权重

import networkx as nx

"""
边权重:复杂网络中边权重用来表示边两端的节点之间相互关系的强弱,
在无权网络中,每条边代表的节点之间的关系是一样的。但是实际网络
中,根据应用场景的不同,边权赋予方式可以不同,用Wij表示节点i和j
之间的连边的权重,可以定义边权重为边两端节点的度的乘积。
"""


# 初始化一个图
def init_graph():

    G = nx.Graph()
    filestr = ""

    with open("test.txt") as files:
        for line in files:
            filestr += line.strip()

    # 将字符串转换成列表
    matrix = eval(filestr)

    nodes = range(len(matrix))
    G.add_nodes_from(nodes)

    for i in range(len(matrix)):
        for j in range(len(matrix)):
            if (matrix[i][j] == 1):
                G.add_edge(i, j)
    return G


#计算边权重
def get_edge_weights(G):

   # print("每个节点的编号以及度值如下:")
   degree = list(nx.degree(G))
   # print(degree)
   # print("------------------------------------")
   # print("图G的每条边如下:")
   edgesList = []
   for  edge in  nx.edges(G):
       w = list(edge)
       edgesList.append(w)
   # print(edgesList)

   #将节点的度值进行赋值
   for edge in edgesList:
     edge[0] = degree[edge[0]][1]
     edge[1] = degree[edge[1]][1]

   #用来存储每条边的权重
   weights = []
   for weight in edgesList:
       w = 0
       if(weight[1] > weight[0]):
           w = weight[0]
       else:
           w = weight[1]
       weights.append(w)

   # print(weights)
   #最后结果用字典的形式返回
   end = {}
   ss = list(nx.edges(G))
   for e in ss:
       index = ss.index(e)
       end[e] = weights[index]
   print(end)


def main():

   G = init_graph()
   get_edge_weights(G)

main()

在这里插入图片描述

  • 4
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值