好久没写东西了,好生疏的感觉。。
链路状态算法
这是一种全局式的路由选择算法,也就是说,一个路由器知道到其他路由器的所有链路的状态信息(例如某条链路上堵不堵),并且假设这种信息是被量化好了的(以拥堵情况为例,越拥堵该值越大),在这样的情况下,链路状态算法就是要让路由器在这些链路中选择一条最好的从源到目的主机的路径。什么是最好?当然是路径上所有链路的状态加起来最好(拥堵度最小)。
假设上图中的数字代表拥堵状态(值越大,越拥堵)。路由选择后,除去那些无关的边,可以得到以下的结果:
其实这就是在一个图里面选最短路径的算法,so,Dijkstra算法搞起,这里先作以下约定:
D(v):表示从源节点到目标结点v的最优路径的cost
p(x):从源结点到目标节点v(最低cost路径)的前一个结点(v的邻居)
N':如果从源到v的最低cost路径已知,那么可以将v加入N'集合中 (代码里面我用N_fnd表示)
w:可被加入到N' 中结点,且节点的cost最小 (代码中我用minimum_idx