📜  在图中查找特定顶点的度数(1)

📅  最后修改于: 2023-12-03 15:07:59.618000             🧑  作者: Mango

在图中查找特定顶点的度数

在图论中,顶点的度数是指与该顶点直接相连的边的数量。某些情况下需要统计特定顶点的度数,下面介绍几种实现方式。

实现方式一:邻接矩阵

在邻接矩阵中,第 i 行第 j 列的元素表示编号为 i 的顶点与编号为 j 的顶点是否相连(0 表示不相连,1 表示相连)。因此,统计编号为 i 的顶点的度数,只需要遍历邻接矩阵中第 i 行的元素即可。

下面是 Python 代码实现。

def degree(adj_matrix, vertex):
    degree = 0
    for i in range(len(adj_matrix[vertex])):
        degree += adj_matrix[vertex][i]
    return degree

# 调用示例
adj_matrix = [[0, 1, 1], [1, 0, 1], [1, 1, 0]]
vertex = 1
print(degree(adj_matrix, vertex)) # 输出 2
实现方式二:邻接表

在邻接表中,每个顶点对应一个链表,链表中存储该顶点直接相连的其他顶点。因此,统计编号为 i 的顶点的度数,只需要统计该链表的长度即可。

下面是 Python 代码实现。

def degree(adj_list, vertex):
    return len(adj_list[vertex])

# 调用示例
adj_list = {
    1: [2, 3],
    2: [1, 3],
    3: [1, 2]
}
vertex = 1
print(degree(adj_list, vertex)) # 输出 2
实现方式三:遍历所有边

对于一个无向图,每个顶点的度数等于与该顶点相连的边的数量。因此,可以遍历所有边,统计与特定顶点相连的边的数量。

下面是 Python 代码实现。

def degree(edges, vertex):
    degree = 0
    for edge in edges:
        if vertex in edge:
            degree += 1
    return degree

# 调用示例
edges = [(1, 2), (1, 3), (2, 3)]
vertex = 1
print(degree(edges, vertex)) # 输出 2

以上就是几种在图中查找特定顶点的度数的实现方式。