Route2(算法)

基础知识路由器使用

路由算法来找到到达目的地的最佳路由。当我们说“最佳路由”时,我们考虑的参数包括诸如跳跃数(分组数据包在网络中从一个路由器或中间节点到另外的节点的行程)、延时以及分组数据包传输通信耗时。

关于路由器如何收集网络的结构信息以及对之进行分析来确定最佳路由,我们有两种主要的路由算法:总体式路由算法和分散式路由算法。采用分散式路由算法时,每个路由器只有与它直接相连的路由器的信息——而没有网络中的每个路由器的信息。这些算法也被称为DV(距离向量)算法。采用总体式路由算法时,每个路由器都拥有网络中所有其他路由器的全部信息以及网络的流量状态。这些算法也被称为LS(链路状态)算法。我们将在下一节讨论LS算法。

LS算法

采用LS算法时,每个路由器必须遵循以下步骤:
确认在物理上与之相连的路由器并获得它们的IP地址。
当一个路由器开始工作后,它首先向整个网络发送一个“HELLO”分组数据包。每个接收到数据包的路由器都将返回一条消息,其中包含它自身的IP地址。
测量相邻路由器的延时(或者其他重要的网络参数,比如平均流量)。
为做到这一点,路由器向整个网络发送响应分组数据包。每个接收到数据包的路由器返回一个应答分组数据包。将路程往返时间除以2,路由器便可以计算出延时。(路程往返时间是网络当前延迟的量度,通过一个分组数据包从远程主机返回的时间来测量。)请注意,该时间包括了传输和处理两部分的时间——也就是将分组数据包发送到目的地的时间以及接收方处理分组数据包和应答的时间。
向网络中的其他路由器广播自己的信息,同时也接收其他路由器的信息。
在这一步中,所有的路由器共享它们的知识并且将自身的信息广播给其他每一个路由器。这样,每一个路由器都能够知道网络的结构以及状态。
使用一个合适的算法,确定网络中两个节点之间的最佳路由。
在这一步中,路由器选择通往每一个节点的最佳路由。它们使用一个算法来实现这一点,如Dijkstra最短路径算法。在这个算法中,一个路由器通过收集到的其他路由器的信息,建立一个网络图。这个图描述网络中的路由器的位置以及它们之间的链接关系。每个链接都有一个数字标注,称为权值或成本。这个数字是延时和平均流量的函数,有时它仅仅表示节点间的跃点数。例如,如果一个节点与目的地之间有两条链路,路由器将选择权值最低的链路。
Dijkstra算法执行下列步骤:

路由器建立一张网络图,并且确定源节点和目的节点,在这个例子里我们设为V1和V2。然后路由器建立一个矩阵,称为“邻接矩阵”。在这个矩阵中,各矩阵元素表示权值。例如,[i, j]是节点Vi与Vj之间的链路权值。如果节点Vi与Vj之间没有链路直接相连,它们的权值设为“无穷大”。
路由器为网路中的每一个节点建立一组状态记录。此记录包括三个字段:
前序字段——表示当前节点之前的节点。
长度字段——表示从源节点到当前节点的权值之和。
标号字段——表示节点的状态。每个节点都处于一个状态模式:“永久”或“暂时”。
路由器初始化(所有节点的)状态记录集参数,将它们的长度设为“无穷大”,标号设为“暂时”。
路由器设置一个T节点。例如,如果设V1是源T节点,路由器将V1的标号更改为“永久”。当一个标号更改为“永久”后,它将不再改变。一个T节点仅仅是一个代理而已。
路由器更新与源T节点直接相连的所有暂时性节点的状态记录集。
路由器在所有的暂时性节点中选择距离V1的权值最低的节点。这个节点将是新的T节点。
如果这个节点不是V2(目的节点),路由器则返回到步骤5。
如果节点是V2,路由器则向前回溯,将它的前序节点从状态记录集中提取出来,如此循环,直到提取到V1为止。这个节点列表便是从V1到V2的最佳路由。

这些步骤的流程图如下:

routing-algorithm1.gif (40.56 KB)
2008-10-19 19:34


示例:Dijkstra算法我们想找到A与E(下图)之间的最佳路由。可以看到A与E之间有六条可能路径(ABE、ACE、ABDE、ACDE、ABDCE、ACDBE),很明显ABDE是最佳路由,因为它的权值最小。但是实际情况并非总是如此简单,有很多复杂的情形需要使用算法来找到最佳路由。

1、如下图所示,源节点(A)被选为T节点,所以它的标号是永久(我们将永久性节点以实圈标注,T节点以-->符号标注)。

routing-algorithm3.gif (2.52 KB)
2008-10-19 19:45


2、在这一步中,直接链接到T节点的暂时性节点(B, C)的状态记录集已经被修改。同时,由于B有更小的权值,所以它被选作T节点,其标号被改为永久(如下图所示)。

routing-algorithm4.gif (2.97 KB)
2008-10-19 19:45


3、与步骤2类似,在这一步中,直接链接到T节点的暂时性节点(D, E)的状态记录集已经被修改。同时,由于D有更小的权值,所以它被选作T节点,其标号被改为永久(如下图所示)。
routing-algorithm5.gif (3.08 KB)
2008-10-19 19:47


4、在这一步中,已经没有任何暂时性节点,所以我们仅仅需要确认下一个T节点。因为E有最小权值,所以它被选作T节点。
routing-algorithm6.gif (3.11 KB)
2008-10-19 19:49


5、E是目的节点,所以我们在这里停止。
我们已经到达了终点!现在,我们需要确定路由。E的前序节点是D,D的前序节点是B,B的前序节点是A。所以最佳路由是ABDE。在这个案例中,权值和为4(1+2+1)。
虽然这个算法工作良好,但是它非常复杂,以致于路由器需要花费大量时间进行处理,网络的性能因此下降了。同样,如果一个路由器将错误的信息发送给其他路由器,那么所有的路由决定都将是无效的。为了更好的理解这个算法,下面给出由C语言编写的源代码:
引用:
#define MAX_NODES 1024        /*最大节点数 */
#define INFINITY 1000000000      /*比所有最大路径都大的数 */
int n,dist[MAX_NODES][MAX_NODES];     /*dist[I][j] 是从 i 到 j 的距离*/
void shortest_path(int s,int t,int path[ ])
{struct state {                          /*当前计算的路径 */
int predecessor ;                     /*前序节点 */
int length                                /*从源节点到当前节点的长度*/
enum {permanent, tentative} label    /*标号状态*/
}state[MAX_NODES];
int I, k, min;
struct state *
                     p;
for (p=andstate[0];p predecessor=-1
p->length=INFINITY
p->label=tentative;
}
state[t].length=0; state[t].label=permanent ;
k=t ;                                                          /* k 是初始工作节点 */
do{                                                            /*是从 k 开始的一条更好路径么?*/
for I=0; I                      /*图有 n 个节点 */
if (dist[k][I] !=0 andand state[I].label==tentative){
           if (state[k].length+dist[k][I] <state[I].length){
        state[I].predecessor=k;
                       state[I].length=state[k].length + dist[k][I]
      }
}

/*找到具有最小权值的暂时性节点。*/
k=0;min=INFINITY;
for (I=0;I =0;I ++)
### 回答1: 在电路板设计中,trace and route 算法是指用于确定电路板上电路的布线方案的算法。这些算法可以帮助设计师确定如何在电路板上连接电路元件,使用最少的导线,并确保连接符合电气规范。常见的 trace and route 算法包括最短路径算法、贪心算法、启发式搜索算法等。 ### 回答2: 电路图设计中的trace and route算法主要用于将电路图中的原理图转化为实际的PCB(Printed Circuit Board)布局。该算法主要包括了两个步骤,即导线追踪(trace)和路径规划(route)。 在导线追踪阶段,算法通过分析电路图中的元件、器件之间的连线关系,确定导线的布局路径。这个过程需要考虑多个因素,如信号的传输速度、电流的容量、导线的长度等。在此阶段,算法会根据设计要求和限制条件,自动找出合适的路径,将连线点与元件/器件的引脚连接起来,并生成一系列导线的路径。 在路径规划阶段,算法会对导线路径进行进一步的优化和调整,以满足PCB的布局和布线要求。这个过程中,算法会考虑到元件、器件之间的物理尺寸、引脚分布、干扰、电磁兼容性等问题。通过自动进行布线优化,算法可以尽可能地减少导线的长度、交叉和干扰,提高电路的性能和可靠性。 trace and route算法在电路图设计中扮演着非常重要的角色。它的主要目标是确保电路布局的正确性和稳定性,以及满足各种设计要求和限制条件。通过使用这种算法,设计人员可以提高电路设计的效率和质量,减少设计时间和成本。此外,随着技术的不断发展,trace and route算法也在不断演进和优化,以适应越来越复杂的电路设计需求。 ### 回答3: 在电路图设计中,trace and route算法是一种用于自动布线的方法。它的主要目的是根据物理限制条件,如电流、信号完整性和电磁兼容性,确定电路板上各个组件之间的连线路径。 首先,trace算法用于确定电路板上各个元件之间的连线路径。它通过考虑不同信号线之间的间距、层次和层间距离,以及其他约束条件,如尽量减少信号串扰等,来找到最佳的连线路径。这通常包括考虑到电流的流动路径,以及信号之间的交互和干扰。 接下来,route算法用于确定每条连线的具体路径。它会考虑到电路板的复杂度和密度,以及信号的传输速度和延迟等因素。为了最大化性能并满足设计要求,route算法会根据所需长度、特定电路元件要求等等因素,找到最佳的路径。 电路图中的trace and route算法不仅可以优化连线的效果,还可以确保电路板的性能和可靠性。通过自动化这一过程,可以提高设计效率并减少设计周期。此外,trace and route算法还可以根据不同的设计需求和限制条件进行定制,以满足特定电路设计的要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值