有源淹没算法完整源代码
时间: 2023-07-26 19:47:22 浏览: 51
以下是一个简单的有源淹没算法的 Python 代码实现:
```python
from queue import Queue
def source_flooding(graph, source):
# 距离字典,存储每个节点到源节点的距离
dist = {source: 0}
# 记录每个节点的前驱节点
pred = {source: None}
# 存储已经访问过的节点
visited = set([source])
# 存储待访问的节点队列
queue = Queue()
queue.put(source)
# 广度优先搜索
while not queue.empty():
u = queue.get()
for v in graph[u]:
if v not in visited:
visited.add(v)
dist[v] = dist[u] + 1
pred[v] = u
queue.put(v)
# 返回结果
return dist, pred
```
其中,`graph` 是一个字典,存储了有向图中每个节点的邻居节点,例如:
```python
graph = {
'A': ['B', 'C'],
'B': ['C', 'D'],
'C': ['D'],
'D': ['C'],
}
```
`source` 是源节点的名称,例如 `'A'`。
该实现使用了标准库中的队列数据结构,因此需要先导入 `Queue` 类。在算法执行过程中,使用 `dist` 字典存储每个节点到源节点的距离,使用 `pred` 字典存储每个节点的前驱节点,使用 `visited` 集合存储已经访问过的节点,使用 `queue` 队列存储待访问的节点。最后,返回 `dist` 和 `pred` 字典作为结果。