求解最大连通子图

使用networkx里面的函数来求解最大连通子图

# -*- coding: utf-8 -*-
"""
Created on Wed Mar 11 21:38:53 2020

@author: Administrator
"""

import matplotlib.pyplot as plt
import networkx as nx


def get_connected_components():
    
  G = nx.Graph()
  
  filestr = ""
  
  with open("matrix.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)
  
   #计算一个图的最大连通子图 
  max_cc =max(nx.algorithms.components.connected_components(G),key = len)
  print(max_cc)
  
  print("-----------------该网络的节点总数为----------------------")
  print(len(matrix))
  print("----------------最大连通分支包含的节点个数----------------")
  ncc = float(len(max_cc))
  print(ncc)
  
  print("---------------------最大连通分支比例--------------------")
  print(ncc/len(matrix))

get_connected_components()

在这里插入图片描述

  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值