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