以下是Python代码实现,包括输入无向图的顶点数、边数及各条边的顶点对,建立用邻接矩阵表示的无向图;对图进行深度优先搜索或广度优先搜索遍历,并输出其遍历序列。

class Graph:
    def __init__(self, V):
        self.V = V
        self.adj_matrix = [[0 for i in range(V)] for j in range(V)]
    
    def add_edge(self, u, v):
        self.adj_matrix[u][v] = 1
        self.adj_matrix[v][u] = 1
    
    def dfs_util(self, v, visited, traversal):
        visited[v] = True
        traversal.append(v)
        for i in range(self.V):
            if self.adj_matrix[v][i] == 1 and not visited[i]:
                self.dfs_util(i, visited, traversal)
    
    def dfs(self, start):
        visited = [False for i in range(self.V)]
        traversal = []
        self.dfs_util(start, visited, traversal)
        return traversal
    
    def bfs(self, start):
        visited = [False for i in range(self.V)]
        queue = []
        traversal = []
        visited[start] = True
        queue.append(start)
        while queue:
            v = queue.pop(0)
            traversal.append(v)
            for i in range(self.V):
                if self.adj_matrix[v][i] == 1 and not visited[i]:
                    visited[i] = True
                    queue.append(i)
        return traversal


if __name__ == '__main__':
    V = int(input("Enter the number of vertices: "))
    E = int(input("Enter the number of edges: "))
    g = Graph(V)
    for i in range(E):
        u, v = map(int, input("Enter edge (u v): ").split())
        g.add_edge(u, v)
    print("Enter 1 for DFS or 2 for BFS:")
    choice = int(input())
    if choice == 1:
        print("DFS traversal:", g.dfs(0))
    elif choice == 2:
        print("BFS traversal:", g.bfs(0))
    else:
        print("Invalid choice")

示例输入和输出:

Enter the number of vertices: 4
Enter the number of edges: 4
Enter edge (u v): 0 1
Enter edge (u v): 0 2
Enter edge (u v): 1 3
Enter edge (u v): 2 3
Enter 1 for DFS or 2 for BFS:
1
DFS traversal: [0, 1, 3, 2]
Enter the number of vertices: 4
Enter the number of edges: 4
Enter edge (u v): 0 1
Enter edge (u v): 0 2
Enter edge (u v): 1 3
Enter edge (u v): 2 3
Enter 1 for DFS or 2 for BFS:
2
BFS traversal: [0, 1, 2, 3]
``
1 编程实现如下功能:1输入无向图的顶点数、边数及各条边的顶点对建立用邻接矩阵表示的无向图。2对图进行深度优先搜索或广度优先搜索遍历二选一并输出其遍历序列。

原文地址: https://www.cveoy.top/t/topic/gJi7 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录