V-D矢量距离路由 简单代码
时间: 2023-08-05 07:08:58 浏览: 40
以下是一个更简单的V-D矢量距离路由的示例代码,仅考虑了4个节点的情况:
```python
# 定义各节点与相邻节点的距离
distances = {
'A': {'B': 2, 'C': 3},
'B': {'A': 2, 'C': 1, 'D': 4},
'C': {'A': 3, 'B': 1, 'D': 5},
'D': {'B': 4, 'C': 5}
}
# 初始化各节点的矢量距离表
vectors = {
'A': {'A': 0, 'B': 2, 'C': 3, 'D': math.inf},
'B': {'A': 2, 'B': 0, 'C': 1, 'D': 4},
'C': {'A': 3, 'B': 1, 'C': 0, 'D': 5},
'D': {'A': math.inf, 'B': 4, 'C': 5, 'D': 0}
}
# 更新各节点的矢量距离表
for i in range(4):
for node in ['A', 'B', 'C', 'D']:
for neighbor, distance in distances[node].items():
vectors[node][neighbor] = min(vectors[node][neighbor], vectors[node][i] + vectors[i][neighbor])
# 输出各节点的矢量距离表
for node in ['A', 'B', 'C', 'D']:
print(f"{node}: {vectors[node]}")
# 获取从A到D的最短路径
path = ['A', 'D']
while path[-1] != 'B':
for neighbor, distance in distances[path[-1]].items():
if vectors[neighbor]['D'] + distance == vectors['A']['D']:
path.append(neighbor)
break
path.reverse()
print(path)
```
该代码直接使用了矢量距离表的计算公式,没有进行交互更新。运行此代码将输出每个节点的矢量距离表和从A到D的最短路径。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)