📅  最后修改于: 2023-12-03 14:41:38.062000             🧑  作者: Mango
在图的数据结构中,有两种主要的表示方法:Adjacency List(邻接表)和Adjacency Matrix(邻接矩阵)。这两种方法在不同的场景下各有优劣,下面将进行比较。
邻接表表示法是一种使用链表数据结构来记录所有顶点的相邻顶点,它通过向每个节点赋值一个列表,该列表包含了与此节点相连的所有节点。
class Graph:
def __init__(self):
self.adj_list = {}
def add_node(self, node):
self.adj_list[node] = []
def add_edge(self, node1, node2):
self.adj_list[node1].append(node2)
self.adj_list[node2].append(node1)
邻接矩阵表示法是一种使用二维数组来记录图上各个节点之间的关系,其中每个元素代表一个节点之间的边或权重。
class Graph:
def __init__(self, num_vertices):
self.adj_matrix = [[0]*num_vertices for _ in range(num_vertices)]
self.num_vertices = num_vertices
def add_edge(self, v1, v2, weight=1):
self.adj_matrix[v1][v2] = weight
self.adj_matrix[v2][v1] = weight
def remove_edge(self, v1, v2):
self.adj_matrix[v1][v2] = 0
self.adj_matrix[v2][v1] = 0
Adjacency List和Adjacency Matrix各有其适用场景,需要根据具体情况进行选择。邻接表适用于稀疏矩阵,对于新增、删除节点和边具有灵活性;邻接矩阵适用于稠密矩阵,对于查找任意两点间的关系速度较快。