对于简单模拟路由寻路算法代码的学习。

for(int k = 0; k<4; k++){
    if(p.getMincost(k)+minDistance[p.getSource()] < distanceTable[k][p.getSource()]){
         distanceTable[k][p.getSource()] = p.getMincost(k)+minDistance[p.getSource()];
	     if(distanceTable[k][p.getSource()]<minDistance[k]){
	     minDistance[k] = distanceTable[k][p.getSource()];
	     send = true;
             }
    }
}

       简单模拟拥有四个实体的路由网络中:distanceTable[i][j] 表示通过 i 到 j 的距离,在一个实体收到报文类(p)通知时需要更新它。实际上需要更新该实体已知的每一个网络节点到通知发出节点的距离信息以便之后的寻路操作仍是得出最优距离。因此for循环从0开始遍历(总共拥有0,1,2,3四个实体),p.getMincost得到邻居实体到达需更新目标实体的距离,加上本实体到达邻居实体的距离,求和得到路径长度作比较得到最小值更新minDistance。

       需要注意的是,distanceTable[a][a] 表示该实体到实体a的距离,但distanceTable[i][j]则不同,如果实体i收到j的包更新distanceTable[i][j],实际计算的是从j出来的信息通过i再返回j的开销,因此要与原始的distanceTable[i][j]作比较,只有小于才可以更新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值