“组合算法”和“线性算法”之间有什么区别?

时间:2009-06-16 16:51:22

标签: np-complete approximation

或者更确切地说,组合算法和线性算法的定义是什么?

为了说清楚,因为很明显第一响应者误解了这个问题:我不是在寻找在线性时间与非线性时间运行的算法的定义。线性算法在某种程度上与线性规划有关,线性规划是一种寻找或近似线性优化问题解决方案的技术。

由于NP难问题非常困难,因此有一个完整的领域试图找到近似的解决方案。例如,旅行商问题有几个近似解决方案,这些解决方案在多项式时间内运行,并产生一个在最佳解决方案的给定范围内的解决方案。

这些近似算法中的一些称为线性算法,其他算法称为组合算法;而后者似乎更受欢迎(为什么?)。这些是我想要理解的两个概念。

3 个答案:

答案 0 :(得分:4)

问题是问题的制定。

正如您所说的旅游销售人员问题(TSP) NP-hard 正是因为它有一个离散的问题表达(销售人员要么在特定时间访问某个城市)。这个离散的公式产生了问题,它的算法是组合。 (注意,并非所有的组合问题都是NP难的;考虑排序算法。)

然而,TSP的线性编程(LP)松弛导致线性算法。这是因为问题已被重新制定,使得销售人员在一定比例的时间内访问城市。使用LP松弛的主要原因是松弛版本可以在多项式时间内求解。然而,LP松弛的解决方案不一定是原始问题的解决方案。

答案 1 :(得分:0)

线性算法往往只使用一组数据 - '取集合a中的所有数字,将它们加倍,然后将结果放入集合b'。操作次数等于set a

中的项目数

组合的组合对集合的组合 - '对于集合a中的每个数字,计算出该数字的总和以及集合b中的每个数字并打印到屏幕'。操作数是set a的大小和set b的大小的乘积。

答案 2 :(得分:0)

组合算法随着输入的增长而“爆炸”。线性算法与其输入成比例增长,而组合算法与指数(或更差)或其输入成比例增长:例如,通过图表枚举所有可能的路径。