极值路由确定引擎和方法

文档序号:7743193阅读:142来源:国知局
专利名称:极值路由确定引擎和方法
技术领域
本发明涉及通信中的路由确定,尤其涉及一种极值路由确定引擎和方法。
背景技术
在通信领域,尤其是在具有延迟限制的多播路由和物理分布路由优化中,常常需要确定通信中的最短路由。路由是指两个通信节点之间可能经过中间节点的若干连续路径的集合。路径是指两个通信节点之间不经过中间节点的直接通路。现有技术中存在着主要通过软件确定最短路由的方法,其缺点是软件实现的处理速度较慢。对于需要多个步骤完成的处理,软件需要逐一运行相应的软件模块,因此处理速度较慢。硬件可以将所有的处理步骤串接在一个硬件电路中直接输出结果,因此处理速度较快。但现有技术中缺乏对如何用硬件实现最短路由确定的认识、以及对何种现有设备能够用于最短路由确定的认识。

发明内容
本发明的一个实施例的一个目的是提高极值路由确定的处理速度。根据本发明的一方面,提供了一种极值路由确定引擎,包括存储器,用于存储图中带有权重的路径;极值路由确定逻辑电路,包括用于读取图中的路径的路径读取部分、用于按照预定极值要求更新读取的路径的权重并将权重被更新过的路径写入所述存储器中的写入部分、和用于确定极值路由的极值路由确定部分。根据本发明的一方面,提供了一种极值路由确定方法,包括读取存储的图中的路径,所述路径带有权重;更新读取的路径的权重并将权重被更新过的路径写入存储器中; 确定极值路由。本发明的一个实施例提高了极值路由确定的处理速度。


结合附图,通过参考下列详细的示例性实施例的描述,将会更好地理解本发明本身、优选的实施方式以及本发明的目的和优点,其中图1是通用正则表达式引擎的体系结构框图。图2是通用正则表达式引擎的最佳适应调度模块的结构图。图3表示通用正则表达式引擎中的规则。图4是根据本发明的一个实施例的极值路由确定引擎的结构图。图5表示根据本发明的一个实施例的路径。图6示出了根据本发明的一个实施例的存储的图的一个例子。图7示出了根据本发明的一个实施例的对应于每一轮读取和写入操作的路径表。图8示出了图4中的写入部分的一个示例性结构。图9是根据本发明的另一个实施例的极值路由确定引擎的结构图。图10是根据本发明的一方面的方法的流程图。
具体实施例方式本发明的一方面的基本思想如下现有技术中主要通过软件来实现最短路由确定。虽然明知用硬件实现可以提高最短路由确定的处理速度,但现有技术中缺乏对如何用硬件实现最短路由确定的认识、以及对何种现有设备能够用于最短路由确定的认识。本发明人经过长期研究发现,现有的极值路由确定的方法模型与通用正则表达式引擎中的某些处理规则具有类似性。因此,借助于现有的通用正则表达式引擎,只需少量改进就能实现极值路由确定,从而填补了现有技术中对如何用硬件实现最短路由确定、及对何种现有设备能够用于最短路由确定的认识的空白,提高了最短路由确定的处理速度。图1是通用正则表达式引擎的体系结构框图。通用正则表达式引擎的一个作用是监控网络数据流中是否出现了违法内容等,即进行网络安全性管理。预先将网络数据流中可能会出现的违法字符作为模板存储在最佳适应调度模块104中。流101经接口 102分成多路,分别进入多个分路103。设置多个分路103是为了并行工作,从而提高处理效率。每个分路103附连有多个最佳适应调度模块104。将可能会出现的违法字符的模板分开存储在每个分路103所附连的多个最佳适应调度模块104中,以并行工作,从而提高处理效率。图2是通用正则表达式引擎的最佳适应调度模块104的结构图。最佳适应调度模块104包括正则表达式逻辑电路10401、本地应用访问存储器10402、本地高速缓存10403。 包括可能会出现的违法字符的模板的规则表存储在本地应用访问存储器10402中。处理中经常用到的模板可存储在本地高速缓存10403中。正则表达式逻辑电路10401包括字符串读取部分10405、匹配确定部分10406。例如,要监控流101中是否出现违法字符串“abc”。流101经接口 102进入分路 103中的一条。该分路所附连的所有最佳适应调度模块104—齐工作,以检查进入该分路的字符是否与其中存储的一条规则相匹配。图3表示通用正则表达式引擎中的规则。将字符302施加于当前状态301,就产生了下一状态303。假设系统中设定的初始状态为0,即系统内当前状态为0。流101中的字符“a”首先进入一条分路103。逻辑电路读取部分10405查找本地应用访问存储器10402中的规则表。由于当前状态是0,字符是a,因此找到一条规则0-a-l。 字符串读取部分10405读取该规则后,得知下一状态为1。然后,流101中的字符“b”进入该分路。字符串读取部分10405查找本地应用访问存储器10402中的规则表。刚刚读取的规则中的下一状态成为当前状态。因此,当前状态为1。由于进入该分路的字符是b,因此找到一条规则l-b-3。字符串读取部分10405读取该规则后,得知下一状态为3。然后,流101中的字符“C”进入该分路。字符串读取部分10405查找本地应用访问存储器10402中的规则表。刚刚读取的规则中的下一状态成为当前状态。因此,当前状态为3。由于进入该分路的字符是c,因此找到一条规则3-C-4。逻辑电路读取部分10405 读取该规则后,得知下一状态为4。在逻辑电路确定部分10406中设置参考值4。下一状态等于参考值4,意味着流 101中出现了违法字符串“abc”。正则表达式引擎报警。在通用正则表达式引擎中,有字符串读取部分10405和匹配确定部分10406,分别用于读取字符串和确定匹配,从而识别出违法字符串;确定极值路由一般也包含读取图中的路径以及确定两点间极值路由的过程。另外,通用正则表达式引擎的规则是将字符作为当前状态和下一状态之间的过渡;在确定极值路由时,图中的每一条路由也可以看作是将权重作为从当前节点到下一节点之间的过渡。因此,极值路由确定和通用正则表达式引擎的匹配识别有很大的相似性。根据本发明的一个实施例的极值路由确定引擎完全可以借助于通用正则表达式引擎的现有结构进行简单的改进,从而低成本地提高极值路由确定的处理速度。图4是根据本发明的一个实施例的极值路由确定引擎401的结构图。极值路由确定引擎401包括极值路由确定逻辑电路40104、存储器40103。存储器40103包括本地存储器40101和高速缓存40102。本地存储器40101包括图存储区40111和表存储区40112。极值路由确定逻辑电路40104包括路径读取部分40106、极值路由确定部分40107、和写入部分 40109。虽然图4示例性地示出了两个存储器40103,但本领域技术人员可知,也可以采用单个存储器,或者采用三个或多于三个的存储器,来实现本发明中的存储功能。本地存储器40101采用通用正则表达式引擎中的本地应用访问存储器10402。高速缓存40102采用通用正则表达式引擎中的本地高速缓存10403。路径读取部分40106采用通用正则表达式引擎中的字符串读取部分10405,并将相应的字符串读取的功能改变为下文中将详细描述的路径读取的功能。极值路由确定部分40107采用通用正则表达式引擎中的匹配确定部分10406,并将相应的确定匹配的功能改变为下文中将详细描述的确定极值路由的功能。因此,本发明的一个实施例可以在通用正则表达式引擎的基础上进行改造并添加写入部分40109实现。将图3的规则加以改造,从而构造出如图5所示的路径的概念。图5所示的路径与图3的规则的区别在于用权重501取代了字符302,且在图5中的当前节点502和下一节点503分别相当于图3中的当前状态301和下一状态303。权重501表示当前节点和下一节点之间的距离、传送成本、传送时间等。例如,如果极值路由确定引擎的作用是寻找两点间传送距离最短的路由,则用权重表示当前节点和下一节点之间的距离;如果极值路由确定引擎的作用是寻找两点间传送时间最短的路由,则用权重表示当前节点和下一节点之间的传送时间,等等。将图预先存储在图4的图存储区40111中。图6示出了根据本发明的一个实施例的存储的图的一个例子。在该实施例中,路径读取部分40106按照宽度优先法从图中读取路径。宽度优先法的原则是从起始节点出发读取了一条路径后,不沿此路径继续读取下一路径,而是从起始节点开始再读取其它路径。当从起始节点开始的所有路径都已读完后,再从读取的第一条路径的终点出发读取路径,以此类推。按照这一原则,从图6的图中读取路径的顺序为-1) 1-(3)-> 2
-2) 1-(10)->
-3)2-(8)-> 4
-4)2-⑵-> 3
-5)3-(1)"> 5
-6) 4- (2) - > 6-7)5-(2)->6以第一条路径为例,1-(3)- > 2代表当前节点是1、权重是3、下一节点是2,以此类推。图7示出了根据本发明的一个实施例的对应于每一轮或多轮读取和写入操作的路径表。路径表存储在表存储区40112中。图4所示的极值路径确定引擎401的工作环境与图1类似。极值路径确定引擎 401相当于图1的最佳适应调度模块104。用时钟脉冲序列来取代流101。当第一个时钟脉冲通过接口 102进入极值路径确定引擎401后,路径读取部分 40106从图存储区中存储的图中读取第一条路径1-03)- > 2。写入部分40109判断路径表中与该路径中的当前节点1对应的行处是否存储有包括当前节点、权重和上一节点的路径。判断结果为否,因此不作处理。然后,判断与第一条路径中的下一节点2对应的行处是否存储有包括当前节点、权重和上一节点的路径。判断结果为否,因此将第一条路径写入与节点2对应的行。如图7的表S(l,2)所示,在与节点2对应的行,写入权重3和上一节点 1。作为另一个实施例,图7中的路径表还可以按照每列对应于一条写入的路径的方式组织。在这种情况下,以上描述中的“行”替换成“列”。在本文中,“行”和“列”统称为地址。在下文中,虽然仍以“行”描述,但本领域技术人员可知,下文中描述的“行”也可以替换成“列”。然后,第二个时钟脉冲进入极值路径确定引擎401。路径读取部分40106从图存储区中存储的图中读取第二条路径1-(10)->3。写入部分40109判断路径表中与该路径中的当前节点1对应的行是否存储有包括当前节点、权重和上一节点的路径。判断结果为否, 因此不作处理。然后,判断与第二条路径中的下一节点3对应的行是否存储有包括当前节点、权重和上一节点的路径。判断结果为否,因此将第二条路径写入与节点3对应的行。如图7的表Sl (1,2)所示,在与节点3对应的行,写入权重10和上一节点1。表Sl(l,2)是响应于第一、二个时钟脉冲的写入的路径表。当然,也可以分别画出响应于第一个时钟脉冲的写入的路径表和响应于第二个时钟脉冲的写入的路径表。在本实施例中,响应于接收到一个时钟脉冲,路径读取部分40106从图中读取一条路径。但是,本领域技术人员可知,作为另一个实施例,路径读取部分40106也可以响应于接收到一个时钟脉冲,从图中读取两条或更多路径。作为另一个实施例,路径读取部分 40106也可以响应于接收到两个或更多时钟脉冲,从图中读取一条路径。此后,第三个时钟脉冲进入极值路径确定引擎401。路径读取部分40106从图存储区中存储的图中读取第三条路径2-(8)- > 4。写入部分40109判断路径表中与该路径中的当前节点2对应的行是否存储有包括当前节点、权重和上一节点的完整路径。判断结果为是,因此在读取的第三条路径的权重8上加与节点2对应的行中的路径的权重3。此时, 第三条路径的权重变为11,其表示从节点1到达节点4的权重为11。然后,判断与第三条路径中下一节点4对应的行是否存储有包括当前节点、权重和上一节点的完整路径。判断结果为否,因此将第三条路径写入与节点4对应的行。如图7的表S2(3)所示,在与节点4 对应的行处,写入权重11和上一节点2。
接着,第四个时钟脉冲进入极值路径确定引擎401。路径读取部分40106从图存储区中存储的图中读取第四条路径2-( - > 3。写入部分40109判断路径表中与该路径中的当前节点2对应的行是否存储有包括当前节点、权重和上一节点的完整路径。判断结果为是,因此在读取的第四条路径的权重2上加与节点2对应的行存储的路径的权重3。此时,第四条路径的权重变为5,其表示从节点2到达节点3的权重为5。然后,判断与第四条路径中的下一节点3对应的行是否存储有包括当前节点、权重和上一节点的完整路径。判断结果为是,因此将与节点3对应的行处的权重10与第四条路径的权重5进行比较。由于 5小于10,因此将第四条路径写入与节点3对应的行。如图7的表S3(4)所示,在与节点3 对应的行,写入权重5和上一节点2。接下来,第五个时钟脉冲进入极值路径确定引擎401。路径读取部分40106从图存储区中存储的图中读取第五条路径3-(1)- > 5。写入部分40109判断路径表中与该路径中的当前节点3对应的行是否存储有包括当前节点、权重和上一节点的完整路径。判断结果为是,因此在读取的第五条路径的权重1上加与节点3对应的行处的路径的权重5。此时,第五条路径的权重变为6,其表示从节点3到达节点5的权重为6。然后,判断与第五条路径中的下一节点5对应的行是否存储有包括当前节点、权重和上一节点的完整路径。判断结果为否,因此将第五条路径写入与节点5对应的行。如图7的表S4(5)所示,在与节点 5对应的行,写入权重6和上一节点3。接下来,第六个时钟脉冲进入极值路径确定引擎401。路径读取部分40106从图存储区中存储的图中读取第六条路径4-( - > 6。写入部分40109判断路径表中与该路径中的当前节点4对应的行是否存储有包括当前节点、权重和上一节点的完整路径。判断结果为是,因此在读取的第六条路径的权重2上加与节点4对应的行处的路径的权重11。此时,第六条路径的权重变为13,其表示从节点4到达节点6的权重为13。然后,判断与第六条路径中的下一节点6对应的行是否存储有包括当前节点、权重和上一节点的完整路径。 判断结果为否,因此将第六条路径写入与节点6对应的行。如图7的表S5(6)所示,在与节点6对应的行,写入权重13和上一节点4。接下来,第七个时钟脉冲进入极值路径确定引擎401。路径读取部分40106从图存储区中存储的图中读取第七条路径5-( - > 6。写入部分40109判断路径表中与该路径中的当前节点5对应的行是否存储有包括当前节点、权重和上一节点的完整路径。判断结果为是,因此在读取的第七条路径的权重2上加与节点5对应的行处的路径的权重6。此时,第七条路径的权重变为8,其表示从节点5到达节点6的权重为8。然后,判断与第七条路径中的下一节点6对应的行是否存储有包括当前节点、权重和上一节点的完整路径。判断结果为是,因此将与节点6对应的行处的权重13与第七条路径的权重8进行比较。由于 8小于13,因此将第七条路径写入与节点6对应的行。如图7的表S6(7)所示,在与节点6 对应的行,写入权重8和上一节点5。由于写入部分40109对图中所有路径都完成了写入,极值路由确定部分40107按照存储器中此时的路径表S6(7),确定极值路由。比如,按照如下过程确定节点1和节点4 之间的最小路由表S6(7)中与节点4对应的行存储的路径中的上一节点为2,与节点2对应的行存储的路径中的上一节点为1,因此节点1和4之间的最小路由是1——2——4。再比如,按照如下过程确定节点1和节点6之间的最小路由表S6(7)中与节点6对应的行存储的路径中的上一节点为5,与节点5对应的行存储的路径中的上一节点为3,与节点3对应的行存储的路径中的上一节点为2,与节点2对应的行存储的路径中的上一节点为1,因此节点1和6之间的最小路由是1——2——3——5——6。通过以上过程,可以确定两个节点之间的最小路由。根据本发明的另一实施例,还可以确定两个节点之间的最大路由。最小路由和最大路由统称极值路由。需要确定两个节点之间的最大路由的场合例如在两个节点之间发布升级的软件,其要求使升级的软件被两个节点之间尽量多的节点获得。确定两个节点之间的最大路由的方法与确定两个节点之间的最小路由的方法的区别是如果与读取的路径中的下一节点对应的行存储有路径,则写入部分将此时读取的路径中的权重和与该下一节点对应的行存储的路径中的权重相比较, 将较大者而不是较小者写入与该下一节点对应的行。仍以上面从S2C3)到S3 (4)的过程为例。在将与节点3对应的行处的权重10与第四条路径的权重5进行比较后,由于5小于10, 因此与节点3对应的行不发生变化。即,在与节点3对应的行,权重仍为10,上一节点仍为 1。为了方便查询,图7的表S(1,2)_S6(7)可以全部存储在表存储区40112。但在另一实施例中,也可以为了节省空间而只保存最终表S6(7),因为仅根据表S6(7)就能够确定极值路由。在上述实施例中,根据表S6(7)仅能确定从节点1到其它节点的极值路由。但在
另一实施例中,也可以分别做出从节点2、节点3......出发的路径表。这样,就可以根据存
储的路由表确定在图中任意两个节点之间的极值路由。在上述实施例中,表S6 (7)是预先做出并且存储在表存储区40112的。但在另一实施例中,表可以不是预先做出的,而是响应于用户请求计算两个节点之间的极值路由。因此,需要在接收到用户关于起点和终点的输入后,完成类似于从图7的Sl (1,2)到S6(7)的路径读取、写入、极值路由确定过程。这样,可以减少存储空间,但降低了反应的实时性。此外,又一种实施例中,图7中的表可以仅做出一部分,比如如果查询从节点1和节点2出发的极值路由的请求比较频繁,可以预先做出关于节点1和节点2的表,保存在表存储区40112中,而不保存从节点3、4、5或6出发的极值路由的表。图8示出了图4中的写入部分40109的一个示例性结构。写入部分40109包括加法器801和求最小值电路802。图8示出了利用加法器801和求最小值电路802将表S2 (3) 更新为S3(4)的过程。当前读取的路径是2- )->3。当前节点2和下一节点3分别是输出路径表中节点2和3的对应权重的使能信号。当前节点2使能路径表,使路径表输出与节点2对应的权重3。该权重3与当前读取的路径的权重2 —起输入加法器801,输出和 5。同时,当前节点3使能路径表,使路径表输出与节点3对应的权重10。将和5与该权重 10输入求最小值电路802。求最小值电路802产生的输出为5。将输出权重5及上一节点 2写入路径表中与节点3对应的行。从图8明显可知,由于图8中体现的各计算步骤是用串联的硬件实现的,因此,当读取一条路径后,求最小值电路802会马上产生一个输出结果,并将其写入路径表中,这整个过程只需一个时钟周期。如果像现有技术一样,各计算步骤通过软件实现,每一个步骤都要等待上一个步骤的运行结果,大大增加了处理时间。例如,在图8中要先运行读取运算, 再运行加法运算,再运行求最小值运算,其中求最小值要等待加法的结果。由于软件是一步一步运行的,当前步骤的运行要依赖于上一步骤的运行结果,因此要等待上一步骤的运行, 从而需要多个时钟周期。这是软、硬件实现的特点决定的。图9是根据本发明的另一个实施例的极值路由确定引擎的结构图。该实施例与前面描述的实施例的区别在于,所述极值路由确定逻辑电路40104包括开关40110,用于选择性地启用所述写入部分40109。当开关40110断开时,写入部分40109不工作。路径读取部分40106象图2的字符串读取部分10405那样工作,极值路由确定部分40107象图2的匹配确定部分10406那样工作。它们与存储器40103—起相当于图2的最佳适应调度模块104, 完成通用正则表达式引擎中的最佳适应调度功能。当开关40110闭合时,写入部分40109 工作。路径读取部分40106、极值路由确定部分40107、写入部分40109和存储器40103 — 起用于确定极值路由。这样,根据该实施例的极值路由确定引擎可以灵活地工作。当不需要用它确定极值路由时,它可以作为通用正则表达式引擎的一部分工作。这增加了应用的灵活性。该实施例的其它部分与前面的实施例类似。按照另一实施例,路径读取部分40106按照深度优先法而不是宽度优先法从图中读取路径。深度优先法的原则是从任一节点出发读取了一条路径后,都继续读取沿该路径的后续路径,直到不能读取为止。当不能读取后续路径时,要从该路径的上一节点重新确定是否能沿上一节点读取其它未读过的路径。按照这一原则,从图6的表中读取路径的顺序为-1)1-(3)->2-2)2-(8)->4-3)4-(2)->6-4)2-(2)- > 3-5)3-(1)->5-6)5-(2)->6-7) 1-(10)->3可以看出,当从节点1出发,沿节点2、4最终到达节点6而没有能够继续的路径时,回溯到节点4,并考虑是否有其它能继续进行的路径。因为从节点4出发没有其它能继续进行的路径,再回溯到节点2,并得到从节点2经节点3、5最终到达节点6的三条路径。 最后回溯到节点1,并得到节点1到节点3的路径。如图10所示,根据本发明的一个实施例的极值路由确定方法包括在步骤S1001 中,读取存储的图中的路径,所述路径带有权重;在步骤S1002中,更新读取的路径的权重并将权重被更新过的路径写入存储器中;在步骤S1003中,确定极值路由。根据本发明的一个实施例的写入部分40109可以通过图8中的硬件实现,路径读取部分40106和极值路由确定部分40107可以在图2的字符串读取部分10405和匹配确定部分10406的基础上软件编程实现。软件实现的部分可以具体实现为以下形式,即,可以是完全的软件(包括固件、驻留软件、微代码等)、或者本文一般称为“电路”、“模块”或“系统” 的软件部分与硬件部分的组合。此外,本发明的软件改进部分还可以采取体现在任何有形的表达介质(medium of expression)中的计算机程序产品的形式,该介质中包含计算机可用的程序码。可以使用一个或多个计算机可用的或计算机可读的介质的任何组合来实现本发明的一个实施例的软件部分。计算机可用的或计算机可读的介质例如可以是——但不限于——电的、磁的、光的、电磁的、红外线的、或半导体的系统、装置、器件或传播介质。计算机可读介质的更具体的例子(非穷举的列表)包括以下有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPR0M或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、诸如支持因特网或内部网的传输介质、或者磁存储器件。注意计算机可用的或计算机可读的介质甚至可以是上面印有程序的纸张或者其它合适的介质,这是因为,例如可以通过电扫描这种纸张或其它介质,以电子方式获得程序,然后以适当的方式加以编译、解释或处理,并且必要的话在计算机存储器中存储。在本文件的语境中,计算机可用的或计算机可读的介质可以是任何含有、存储、传达、传播、或传输供指令执行系统、装置或器件使用的或与指令执行系统、装置或器件相联系的程序的介质。计算机可用的介质可包括在基带中或者作为载波一部分传播的、由其体现计算机可用的程序码的数据信号。计算机可用的程序码可以用任何适当的介质传输,包括一但不限于一无线、电线、光缆、RF等等。用于实现本发明的软件部分的计算机程序码,可以以一种或多种程序设计语言的任何组合来编写,所述程序设计语言包括面向对象的程序设计语言一诸如Java、 Smalltalk^++之类,还包括常规的过程式程序设计语言一诸如” C”程序设计语言或类似的程序设计语言。程序码可以完全地在用户的计算上执行、部分地在用户的计算机上执行、作为一个独立的软件包执行、部分在用户的计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后一种情形中,远程计算机可以通过任何种类的网络—— 包括局域网(LAN)或广域网(WAN)—连接到用户的计算机,或者,可以(例如利用因特网服务提供商来通过因特网)连接到外部计算机。以下参照按照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/ 或框图描述本发明。要明白的是,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得通过计算机或其它可编程数据处理装置执行的这些指令,产生实现流程图和/或框图中的方框中规定的功能/操作的装置。也可以把这些计算机程序指令存储在能指令计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令产生一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instruction means) 的制造品。也可以把计算机程序指令加载到计算机或其它可编程数据处理装置上,使得在计算机或其它可编程数据处理装置上执行一系列操作步骤,以产生计算机实现的过程,从而在计算机或其它可编程装置上执行的指令就提供实现流程图和/或框图中的方框中规定的功能/操作的过程。附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。本文中所用的术语,仅仅是为了描述特定的实施例,而不意图限定本发明。本文中所用的单数形式的“一”和“该”,旨在也包括复数形式,除非上下文中明确地另外指出。还要知道,“包含”一词在本说明书中使用时,说明存在所指出的特征、整体、步骤、操作、单元和/或组件,但是并不排除存在或增加一个或多个其它特征、整体、步骤、操作、单元和/或组件,以及/或者它们的组合。以下的权利要求中的对应结构、材料、操作以及所有功能性限定的装置(means) 或步骤的等同替换,旨在包括任何用于与在权利要求中具体指出的其它单元相组合地执行该功能的结构、材料或操作。所给出的对本发明的描述其目的在于示意和描述,并非是穷尽性的,也并非是要把本发明限定到所表述的形式。对于所属技术领域的普通技术人员来说, 在不偏离本发明范围和精神的情况下,显然可以作出许多修改和变型。对实施例的选择和说明,是为了最好地解释本发明的原理和实际应用,使所属技术领域的普通技术人员能够明了,本发明可以有适合所要的特定用途的具有各种改变的各种实施方式。
权利要求
1.一种极值路由确定引擎,包括存储器,用于存储图中带有权重的路径;极值路由确定逻辑电路,包括路径读取部分,用于读取图中的路径;写入部分,用于按照预定极值要求更新读取的路径的权重并将权重被更新过的路径写入所述存储器中;和极值路由确定部分,用于确定极值路由。
2.根据权利要求1的极值路由确定引擎,其中所述存储器采用通用正则表达式引擎中的存储器,所述路径读取部分采用通用正则表达式引擎中的字符串读取部分,所述极值路由确定部分采用通用正则表达式引擎中的匹配确定部分。
3.根据权利要求1的极值路由确定引擎,其中所述路径还包括当前节点和下一节点。
4.根据权利要求3的极值路由确定引擎,其中如果读取的路径中的当前节点的地址处存储有完整路径,则写入部分对所述读取的路径中的权重进行更新,在其上增加当前节点的地址处的权重;如果读取的路径中的当前节点的地址处未存储有完整路径则写入部分不作处理。
5.根据权利要求4的极值路由确定引擎,其中如果读取的路径中的下一节点的地址处未存储有完整路径,则写入部分将此时的读取的路径写入该下一节点的地址处。
6.根据权利要求4的极值路由确定引擎,其中如果读取的路径中的下一节点的地址处存储有完整路径,则写入部分将此时读取的路径中的权重与该下一节点的地址处存储的路径中的权重相比较,将较小者写入该下一节点的地址处。
7.根据权利要求4的极值路由确定引擎,其中如果读取的路径中的下一节点的地址处存储有完整路径,则写入部分将此时读取的路径中的权重与该下一节点的地址处存储的路径中的权重相比较,将较大者写入该下一节点的地址处。
8.根据权利要求1的极值路由确定引擎,其中所述路径读取部分按照下列算法之一从所述图中读取路径宽度优先法或深度优先法。
9.根据权利要求1的极值路由确定引擎,其中所述极值路由确定逻辑电路包括开关, 用于选择性地启用所述写入部分。
10.根据权利要求1的极值路由确定引擎,其中所述写入部分包括加法器和求最小值电路。
11.根据权利要求1的极值路由确定引擎,其中响应于所述写入部分对图中所有路径都完成了写入,所述极值路由确定部分确定极值路由。
12.一种极值路由确定方法,包括读取存储的图中的路径,所述路径带有权重;更新读取的路径的权重并将权重被更新过的路径写入存储器中;确定极值路由。
13.根据权利要求12的极值路由确定方法,其中所述路径还包括当前节点和下一节点。
14.根据权利要求13的极值路由确定方法,其中,如果读取的路径中的当前节点的地址处存储有完整路径,则对所述读取的路径中的权重进行更新,在其上增加当前节点的地址处的权重;如果读取的路径中的当前节点的地址处未存储有完整路径则不作处理。
15.根据权利要求14的极值路由确定方法,其中,如果读取的路径中的下一节点的地址处未存储有完整路径,则将此时的读取的路径写入该下一节点的地址处。
16.根据权利要求14的极值路由确定方法,其中,如果读取的路径中的下一节点的地址处存储有完整路径,则将此时读取的路径中的权重与该下一节点的地址处存储的路径中的权重相比较,将较小者写入该下一节点的地址处。
17.根据权利要求14的极值路由确定方法,其中,如果读取的路径中的下一节点的地址处存储有完整路径,则将此时读取的路径中的权重与该下一节点的地址处存储的路径中的权重相比较,将较大者写入该下一节点的地址处。
18.根据权利要求12的极值路由确定方法,其中,按照下列算法之一从图中读取路径宽度优先法或深度优先法。
19.根据权利要求12的极值路由确定方法,其中,选择性地启用所述写入。
20.根据权利要求12的极值路由确定方法,其中,响应于对图中所有路径都完成了写入,确定极值路由。
全文摘要
本发明的一个实施例提供了一种极值路由确定引擎,包括存储器,用于存储图中带有权重的路径;极值路由确定逻辑电路,包括用于读取图中的路径的路径读取部分、用于按照预定极值要求更新读取的路径的权重并将权重被更新过的路径写入所述存储器中的写入部分、和用于确定极值路由的极值路由确定部分。本发明的一个实施例提高了极值路由确定的处理速度。
文档编号H04L29/06GK102158388SQ20101012019
公开日2011年8月17日 申请日期2010年2月12日 优先权日2010年2月12日
发明者刘卫, 常晓涛, 曾宏博, 王鲲 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1