Python - [Graph] Adjacency Matrix

    xiaoxiao2023-10-07  99


    #vertex #vnum #mat #unconn=unconnection #_name:protected variable,it is unvisiable for outer part except inhert part #__name:private variable #inherit import pprint class Graph: def __init__(self,mat,unconn = 0): vnum = len(mat) for i in mat: if len(i) != vnum: raise Exception("Mat Error!") self._mat = [mat[i][:] for i in range(vnum)] self._unconn = unconn self._vnum = vnum def vertex_num(self): return self._vnum def add_vertex(self,v): raise Exception("Not Support Add-Vertex!") def vertex_invalid(self,v): return 0>v or v>self._vnum def add_edge(self,vi,vj,value = 1): if self.vertex_invalid(vi) or self.vertex_invalid(vj): raise Exception("Vertex Error!") self._mat[vi][vj] = value def get_edge(self,vi,vj): if self.vertex_invalid(vi) or self.vertex_invalid(vj): raise Exception("Vertex Error!") return self._mat[vi][vj] def out_edges(self,v): edges = [] for i in range(self._mat[v]): if i != self._unconn: edges.append((i,self._mat[v][i])) return edges def get_whole_mat(self): i = j = 0 for i in range(self._vnum): for j in range(self._vnum): print(self._mat[i][j],end = ' ') print('') if __name__ == "__main__": #mat = [[1,1,1,0],[0,0,1,1],[0,1,1,1],[1,0,1,0]] mat = [[0 for i in range(4)] for i in range(4)] g = Graph(mat) vertex_num = g.vertex_num() print("vertex_num = ",vertex_num,end = '\n\n') #g.add_vertex(1) g.add_edge(1,2) print("Adjacency Matrix:") g.get_whole_mat()

     

    最新回复(0)