Performance 使用回溯和分支定界的优点

Performance 使用回溯和分支定界的优点,performance,algorithm,complexity-theory,backtracking,branch-and-bound,Performance,Algorithm,Complexity Theory,Backtracking,Branch And Bound,我知道DP对于许多NP完全问题(如TSP)具有更好的性能。虽然所需的空间很大,但它很好地降低了复杂性 但我无法理解分支绑定和回溯与蛮力搜索相比的效率 在最坏的情况下,无论暴力等于b&b还是回溯?使用穷举搜索,您将计算所有N!节点之间可能的路由。使用回溯,您可能会计算访问一半节点的路由,注意它已经比目前找到的最佳路由更昂贵,并在该点停止调查该部分路由。这样做,您就跳过了计算通过完成该部分路由生成的所有路由,从而节省了穷举搜索的时间,穷举搜索将继续检查所有路由。使用穷举搜索,您将计算所有N!节点之间

我知道DP对于许多NP完全问题(如TSP)具有更好的性能。虽然所需的空间很大,但它很好地降低了复杂性

但我无法理解分支绑定和回溯与蛮力搜索相比的效率


在最坏的情况下,无论暴力等于b&b还是回溯?

使用穷举搜索,您将计算所有N!节点之间可能的路由。使用回溯,您可能会计算访问一半节点的路由,注意它已经比目前找到的最佳路由更昂贵,并在该点停止调查该部分路由。这样做,您就跳过了计算通过完成该部分路由生成的所有路由,从而节省了穷举搜索的时间,穷举搜索将继续检查所有路由。

使用穷举搜索,您将计算所有N!节点之间可能的路由。使用回溯,您可能会计算访问一半节点的路由,注意它已经比目前找到的最佳路由更昂贵,并在该点停止调查该部分路由。这样做,您就跳过了计算通过完成该部分路由生成的所有路由,从而节省了穷举搜索的时间,而穷举搜索将继续检查所有路由。

穷举搜索,您的意思是暴力搜索?@Gangadhar将穷举搜索改为暴力搜索,你是说暴力搜索?@Gangadhar改为暴力搜索,但在最坏的情况下,两者都需要检查N!组合@user567879:正确。没有银弹。分支定界解决方案在一般情况下有用,而不是在最坏情况下。我不知道TSP上分支定界的最佳最坏情况边界。我所看到的所有writeup(使用比我过于简化的示例更好的分支选择和更好的边界函数)都集中在预期行为上,通常通过计算机实验进行分析。然而,这些实验确实表明,仔细的分支和绑定在实践中可以做得更好,因为蛮力——at的例子——也使用了一些手动调整——吸引了我的眼球。@amit那么它的主要优势是什么?@user567879:主要优势是它(1)的性能不会比单纯的蛮力差。(2) 通常表现得比天真的蛮力更好。在实现穷举搜索解决方案时,使用分支和绑定确实没有缺点。但在最坏的情况下,两者都需要检查N!组合@user567879:正确。没有银弹。分支定界解决方案在一般情况下有用,而不是在最坏情况下。我不知道TSP上分支定界的最佳最坏情况边界。我所看到的所有writeup(使用比我过于简化的示例更好的分支选择和更好的边界函数)都集中在预期行为上,通常通过计算机实验进行分析。然而,这些实验确实表明,仔细的分支和绑定在实践中可以做得更好,因为蛮力——at的例子——也使用了一些手动调整——吸引了我的眼球。@amit那么它的主要优势是什么?@user567879:主要优势是它(1)的性能不会比单纯的蛮力差。(2) 通常表现得比天真的蛮力更好。在实现穷举搜索解决方案时,使用分支和绑定确实没有缺点。