本文继续介绍组合优化的求解算法。
上一篇里面,我们介绍了局部搜索类算法(local search)和基于线性规划(linear programming)的算法。能够求解组合优化问题并且有一定适用面、效果还不错的算法还有不少,本文再选择一些有代表性的算法来简单介绍。
第三类算法:多项式时间复杂度(Polynomial time)精确与近似算法
严格的说这不能叫做一类算法,因为这部分算法的特点是根据具体问题求具体的解,不像前面两类一样具备较广的通用性。
首先,有一部分比较特殊的组合优化问题是P问题,已知有多项式时间的算法。这类问题的代表是网络流(network flow)问题,例如最大流(Mamixum flow)和费用流(Minimum-cost flow)问题。
这些问题都有可求出精确解的多项式时间复杂度算法[1],通过这些算法,可以以很低的理论复杂度来解相当大规模的问题。还有部分更为特殊的网络流问题例如最短路问题(shortest path)和二分匹配问题(bipartite matching)甚至有更快的多项式算法。
在实际问题中,网络流问题(还有其他的P