我必须设计一个分支定界算法,每次都解决笛卡尔平面上图形的最优路径。我已经得到提示,在运行时早期识别无望的分支将复合成一个运行“快一百倍”的程序。我的想法是假设连接到开始/结束节点的最短边将是巡回赛中的第一条或最后一条边,但薄菱形图证明并非如此。有没有人对如何消除这些无望的分支或谈论这个的参考有想法?
基本上,有没有比仅按字典顺序更好地分支到解决方案子集的更好方法,例如。第一个分支包含和排除边缘 ab,第二个分支包含和排除分支 ac
我必须设计一个分支定界算法,每次都解决笛卡尔平面上图形的最优路径。我已经得到提示,在运行时早期识别无望的分支将复合成一个运行“快一百倍”的程序。我的想法是假设连接到开始/结束节点的最短边将是巡回赛中的第一条或最后一条边,但薄菱形图证明并非如此。有没有人对如何消除这些无望的分支或谈论这个的参考有想法?
基本上,有没有比仅按字典顺序更好地分支到解决方案子集的更好方法,例如。第一个分支包含和排除边缘 ab,第二个分支包含和排除分支 ac
最近邻是一种简单的算法。分支定界只是一个优化循环,此外您还需要一个子问题求解器。我认为最近邻也是一种分支定界算法。相反,我会研究单纯形算法。这是一种线性规划算法。也是解决tsp的切割平面算法。
所以在你的分支定界算法的某个地方,你查看可能去的地方,然后以某种方式跟踪它们以便以后做。
为了提高效率,您可以做几件事: