SPF算法介绍

简介:

当链路状态路由算法构建完LSDB后,接下来节要调用SPF算法,对LSDB内的LSA进行处理,计算出所有路径。SPF算法在《Routing TCP/IP volmun I》的OSPF章节中有描述。

SPF算法简单描述如下(LSDB已收敛):

一、选定根节点;

二、遍历该选定节点的所有直连节点。遍历过程中,若根与某节点的分支为

新分支,则添加该分支到分支列表,并记录分支的权重、根的下一跳;

已存在于分支列表,则与分支列表中已存在分支的权重值比较优劣,并把较优值更新到分支列表中;

已存在于权重列表,则忽略;

三、分支列表中的最优分支移出至权重列表,并选定该分支的节点;

四、分支列表非空,则继续步骤三;否则算法结束。

算法结束后,权重列表即为最短路径树,用于生成路由表或其它后续工作。

下面举个简单例子,箭头方向为节点配置链路权重(metric),注意权重是单向的,修改权重一般情况下要确保两端一致。a为运行SPF算法的节点,LSDB已收敛:

*下述显示含义为节点(下一跳权重

一、SPF把a、b、c、d、e、f、g、h置为未遍历状态,并以本节点(R1)为根。添加a(a)到权重列表,权重为0,下一跳为a。接着遍历a的直连节点b、c、d,并把b(b) 50,c(c) 85,d(d) 20添加到分支列表。其中d(d)的权重最优,为20。添加d(d)到权重列表,权重为20,下一跳为d,并选定d;

二、遍历d所有连接的节点。这里d-b 20,d-c 20,d-g 20,d-h 20。分支列表中b(b)从50改为40,下一跳改为d;c(c)从85改为40,下一跳改为d;添加g(d) 40,h(d) 40。这时分支列表包含:b(d) 40,c(d) 40,g(d) 40,h(d) 40。添加b(d)到权重列表,权重为40,下一跳为d,并选定b;

三、遍历b所有连接的节点。这里分支为b-e 80,b-d 20,由于d已以被添加到权重列表,不再考虑。分支列表中添加e(d) 120。这时分支列表包含:c(d) 40,g(d) 40,h(d) 40,e(d) 120。添加c(d)到权重列表,权重为40,下一跳为d,并选定c;

四、遍历c。这里分支为c-f 20,c-d 20,由于d已被添加到权重列表,不再考虑。分支列表添加f(d) 60。这时分支列表包含:g(d) 40,h(d) 40,e(d) 120,f(d) 60。添加g(d) 到权重列表,权重为40,下一跳为d,并选定g;

五、遍历g。g分支为g-e 20,g-h 50。分支列表修改e(d) 60。这时分支列表包含:h(d) 40,e(d) 60,f(d) 60。添加h(d)到权重列表,权重为40,下一跳为d,并选定h;

六、遍历h。h分支为h-g 50,h-f 20。g已被添加到权重列表,不考虑;而a-d-c-f和a-d-h-f同为60,下一跳同为d,该新分支与分支列表中的分支并无差异。这时分支列表包含:e(d) 60,f(d) 60。添加e(d)到权重列表,权重为60,下一跳为d,并选定e;

七、遍历e。分支为e-b 80,e-g 20,由于b、g已在权重列表分支列表无需改变,为f(d) 60。添加f(d)到权重列表,权重为60,下一跳为d。

八、由于分支列表为空,因此SPF算法结束。这时权重列表为:

节点

a

d

b

c

g

e

f

权重

a

d

d

d

d

d

d

下一跳

0

20

40

40

40

60

60





本文转自 gole_huang 51CTO博客,原文链接:http://blog.51cto.com/golehuang/920865

相关文章
|
算法 调度
操作系统 FCFS,SPF,HRRN算法的实现
操作系统 FCFS,SPF,HRRN算法的实现
351 0
操作系统 FCFS,SPF,HRRN算法的实现
|
存储 机器学习/深度学习 算法
SPF单源最短路径算法
SPF(shortest path first)算法也叫Dijkstra(迪杰斯特拉)算法,由上个世纪的计算机科学家狄克斯特拉提出,是离散数学中一种经典高效的网络(连通图)最短路径寻路算法.指定一个源点,求出到其余各个顶点的最短路径,也叫”单源最短路径”.
443 1
SPF单源最短路径算法
|
算法 定位技术 C语言
|
5天前
|
机器学习/深度学习 自然语言处理 算法
m基于深度学习的OFDM+QPSK链路信道估计和均衡算法误码率matlab仿真,对比LS,MMSE及LMMSE传统算法
**摘要:** 升级版MATLAB仿真对比了深度学习与LS、MMSE、LMMSE的OFDM信道估计算法,新增自动样本生成、复杂度分析及抗频偏性能评估。深度学习在无线通信中,尤其在OFDM的信道估计问题上展现潜力,解决了传统方法的局限。程序涉及信道估计器设计,深度学习模型通过学习导频信息估计信道响应,适应频域变化。核心代码展示了信号处理流程,包括编码、调制、信道模拟、降噪、信道估计和解调。
26 8
|
7天前
|
算法
基于GA遗传优化的混合发电系统优化配置算法matlab仿真
**摘要:** 该研究利用遗传算法(GA)对混合发电系统进行优化配置,旨在最小化风能、太阳能及电池储能的成本并提升系统性能。MATLAB 2022a用于实现这一算法。仿真结果展示了一系列图表,包括总成本随代数变化、最佳适应度随代数变化,以及不同数据的分布情况,如负荷、风速、太阳辐射、弃电、缺电和电池状态等。此外,代码示例展示了如何运用GA求解,并绘制了发电单元的功率输出和年变化。该系统原理基于GA的自然选择和遗传原理,通过染色体编码、初始种群生成、适应度函数、选择、交叉和变异操作来寻找最优容量配置,以平衡成本、效率和可靠性。