邻接矩阵实现无向图的创建并根据louvain算法实现分区

1 要安装的包

使用community安装python-louvain即可
pip install python-louvain
pip install networkx

2、描述

  lst1=
   [ [0, 1, 1, 1, 1, 1, 0, 0],  
 	[0, 0, 1, 0, 1, 0, 0, 0],  
    [0, 0, 0, 1, 0, 0, 0, 0],  
    [0, 0, 0, 0, 1, 0, 0, 0],  
    [0, 0, 0, 0, 0, 1, 0, 0],  
    [0, 0, 1, 0, 0, 0, 1, 1],  
    [0, 0, 0, 0, 0, 1, 0, 1],  
    [0, 0, 0, 0, 0, 1, 1, 0]  ]
    由邻接矩阵lst1生成如下无向图

在这里插入图片描述
再根据louvain算法进行分区得到下图
在这里插入图片描述

3、程序

import numpy as np
import community.community_louvain
import networkx as nx
import matplotlib.pyplot as plt
#图类
class Graph_Matrix:
    """
    Adjacency Matrix
    """
    def __init__(self, vertices=[], matrix=[]):
        """
        :param vertices:a dict with vertex id and index of matrix , such as {vertex:index}
        :param matrix: a matrix
        """
        self.matrix = matrix
        self.edges_dict = {
   }  # {(tail, head):weight}
        self.edges_array = []  # (tail, head, weight)
        self.vertices = vertices
        self.num_edges = 0

        # if provide adjacency matrix then create the edges list
        if len(matrix) > 0:
            if len(vertices) != len(matrix):
                raise IndexError
            self.edges = self.getAllEdges()
            self.num_edges = len(self.edges)

        # if do not provide a adjacency matrix, but provide the vertices list, build a matrix with 0
        elif len(vertices) > 0:
            self.matrix = [[0 for col in range(len(vertices))] for row in range(len(vertices))]

        self.num_vertices = len(self.matrix)

    def isOutRange(self, x):
        try:
            if x >= self.num_vertices or x <= 0:
                raise IndexError
        except IndexError:
            print("节点下标出界")

    def isEmpty(self
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值