SDN  topo-求两点间的所有路径 Python 3求两点间所有路径----深度优先算法(Depth-First-Search)

在Python中,对于求两点间的所有路径的深度优先算法是需要用到邻接矩阵的。邻接矩阵在Java中可以直接创建一个二维数组,但在Python中就需要一个特殊的申明:、li = [[0] * len(nodes) for i in range(len(nodes))]对于邻接矩阵的生成,主要还是看数据,我用到的数据是Ryu生成的节点信息nodes,和链路信息links:nodes = ...
摘要由CSDN通过智能技术生成

SDN  topo-求两点间的所有路径  Python 3求两点间所有路径----深度优先算法(Depth-First-Search)

在Python中,对于求两点间的所有路径的深度优先算法是需要用到邻接矩阵的。

邻接矩阵在Java中可以直接创建一个二维数组,但在Python中就需要一个特殊的申明:、

li = [[0] * len(nodes) for i in range(len(nodes))]

对于邻接矩阵的生成,主要还是看数据,我用到的数据是Ryu生成的节点信息nodes,和链路信息links:

nodes = set(['00:00:00:00:00:03', 1, 2, 3, 4, 5, '00:00:00:00:00:04', '00:00:00:00:00:01', '00:00:00:00:00:02'])
links = {(1, 2): (2, 2), (1, '00:00:00:00:00:01'): (1, None), (4, '00:00:00:00:00:04'): (1, None),
         (3, '00:00:00:00:00:03'): (1, None), ('00:00:00:00:00:02', 2): (None, 1), (3, 2): (2, 3), (1, 4): (3, 3),
         ('00:00:00:00:00:04', 4): (None, 1), (1, 5): (4, 1), (2, '00:00:00:00:00:02'): (1, None), (2, 3): (3, 2),
         (2, 1): (2, 2), ('00:00:00:00:00:01', 1): (None, 1), (5, 1): (1, 4), ('00:00:00:00:00:03', 3): (None, 1),
         (3, 5): (4, 2), (5, 3): (2, 4)}

当然可以用其他数据来构建邻接矩阵,算法另找。

用nodes信息生成映射表,'00:00:00:00:00:03','00:00:00:00:00:04', '00:00:00:00:00:01', '00:00:00:00:00:02'是主机, 1, 2, 3, 4, 5是交换机。

yingshe = {}

j = 0

for i in nodes:

    yingshe[i] = j

    j += 1

再根据links,生成邻接矩阵:

i = 0
for i in links:
    li[yingshe[i[0]]][yingshe[i[1]]] = 1

当然,我们也可以打印出来看看生成的邻接矩阵:

k = 0
for i in li:
    print(k, end='\t')
    for j in i:
        print(j, end="\t")
    print()
    k += 1

0    0    1    0    1    1    0    0    0    
1    1    0    1    0    0    1    0    0    
2    0    1    0    1    0    0    0    1    
3    

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值