欢迎访问宙启技术站
智能推送

用Python实现图的操作函数

发布时间:2023-06-30 14:13:22

Python提供了多种图的操作函数,可以实现图的创建、添加节点、添加边、删除节点、删除边以及图的遍历等操作。下面为一个简单的Python实现图的操作函数的示例代码:

class Graph:
    def __init__(self):
        self.graph = {}

    # 添加节点
    def add_node(self, node):
        if node not in self.graph:
            self.graph[node] = []

    # 添加边
    def add_edge(self, node1, node2):
        if node1 in self.graph:
            self.graph[node1].append(node2)
        else:
            self.graph[node1] = [node2]

        if node2 not in self.graph:
            self.graph[node2] = []

    # 删除节点
    def remove_node(self, node):
        if node in self.graph:
            del self.graph[node]

        for n in self.graph:
            if node in self.graph[n]:
                self.graph[n].remove(node)

    # 删除边
    def remove_edge(self, node1, node2):
        if node1 in self.graph and node2 in self.graph[node1]:
            self.graph[node1].remove(node2)

    # 图的遍历(深度优先搜索)
    def dfs(self, start_node):
        visited = set()
        stack = [start_node]

        while stack:
            node = stack.pop()
            if node not in visited:
                print(node)
                visited.add(node)
                stack.extend(set(self.graph[node]) - visited)

    # 图的遍历(广度优先搜索)
    def bfs(self, start_node):
        visited = set()
        queue = [start_node]

        while queue:
            node = queue.pop(0)
            if node not in visited:
                print(node)
                visited.add(node)
                queue.extend(set(self.graph[node]) - visited)

以上代码实现了一个简单的图类,包括添加节点、添加边、删除节点、删除边以及深度优先搜索和广度优先搜索等操作函数。可以根据需要灵活地使用这些函数来实现各种图的操作。