python编程生成加权有向图的临接表
时间: 2024-12-14 14:12:42 浏览: 6
在Python中,生成加权有向图的邻接表通常用于表示图形数据结构,其中每个节点有一个列表存储其相邻节点及其对应的权重。邻接表是由节点和从该节点出发的边组成的数据结构。
以下是一个简单的例子,使用`collections.defaultdict`创建一个加权有向图(邻接表):
```python
from collections import defaultdict
class Graph:
def __init__(self):
self.graph = defaultdict(list)
# 添加边并指定权重
def add_edge(self, src, dest, weight=1):
self.graph[src].append((dest, weight))
# 用邻接表形式打印图信息
def print_graph(self, node=None):
if node is None:
for node in self.graph:
print(f"Node {node}:")
for neighbor, weight in self.graph[node]:
print(f"\t{neighbor} ({weight})")
else:
print(f"Adjacent nodes of {node}:")
for neighbor, weight in self.graph.get(node, []):
print(f"\t{neighbor} ({weight})")
# 示例使用
g = Graph()
g.add_edge(1, 2, 5) # 边1 -> 2, 权重5
g.add_edge(2, 3, 3)
g.add_edge(1, 3, 7)
g.print_graph() # 打印全部图
g.print_graph(2) # 只打印节点2的邻接表
```
在这个示例中,我们定义了一个名为`Graph`的类,它初始化时创建一个`defaultdict`来保存邻接表。`add_edge`方法用于添加边,`print_graph`方法用于打印整个图或特定节点的邻接表。
阅读全文