在通信领域,为了保证信号不中断,经常需要为业务准备一条工作路由和一条保护路由。要求工作路由和保护路由没有交点,否则,相交点故障时,整个业务中断了。
在Full Mesh网络中,很容易找到满足上面要求的两条路由。算法如下:
1、先用最短路算法生成工作路由
2、从图中去掉工作路由经过的节点
3、再用最短路算法生成保护路由
问题来了,当上面算法宣告失败时,并不等于问题无解。
改进的算法:
1、先用最短路算法生成一条路由P
2、对图进行一些修改后,生成第二条路由Q。修改图的目的是使P和Q仅可能少地相交,给P经过的节点设置一个很大的费用,比预期最长的路径还大,但远小于无穷大。如果P和Q不相交,P和Q就是问题的解。
3、找到P和Q的所有交点,从图中去掉这些交点,再生成第三条路由R。
4、将P、Q、R画到纸上,会得到一个狭长的叶子,叶子的两个边缘就是问题的解。
该算法已实现,测试效果不错