对“精确算法”的定义感到困惑

时间:2014-09-27 12:54:30

标签: algorithm optimization logic

说"算法是准确的"是什么意思?在优化和/或计算机科学方面?我需要一个精确的逻辑/认识论定义。

3 个答案:

答案 0 :(得分:5)

Exactapproximate算法是解决优化问题的方法。

Exact algorithms是始终找到给定优化问题的最佳解决方案的算法。

然而,在组合问题或总体优化问题中,传统方法通常不够有效,尤其是当问题搜索区域庞大且复杂时。在其他方法中,我们可以使用启发式方法来解决这些问题。启发式倾向于提供更糟糕的解决方案。这些启发式的子集是approximation algorithms

当我们使用approximation algorithms时,我们可以证明最优解与算法产生的解之间的比率的界限。

E.g。在某些NP-hard问题中,有一些polynomial-time近似算法,而最着名的精确算法需要exponential time

例如,虽然polynomial-timeVertex Cover近似算法,但最好exact algorithm(使用记忆)在 O(1.1889n) pp 62-63 中运行。< / p>

答案 1 :(得分:4)

术语 exact 通常用于表示“与近似相反”。近似算法找到了优化问题的微小变化的解决方案,该优化问题允许在某种意义上“接近”最优的溶液,但是仍然是期望的。正如@Sirko在评论中所说,近似值通常是有意义的,因为确切的问题是难以处理或不可判定的,而近似版本则不然。通常,不止一种近似可能是有意义的。

以下是示例:

  1. 旅行商问题的精确算法是NP Complete。 TSP将在地图上查找访问N个城市中每个城市的最小长度为L的路线。 NP完整性表示最着名的算法仍然需要时间是N的指数函数。对于某些固定的c,TSP的近似算法找到长度不超过cL的路径。 1.例如,您可以轻松地构建城市的最小生成树,即N中的多项式并围绕树遍历,覆盖每个边两次,以获得针对c = 2的情况的近似算法。隐含的目标是找到常数c的算法尽可能接近一。

  2. 用于编译程序的精确算法,在任何给定源代码的最短时间内产生正确的结果 - 在合理的假设下 - 是不可判定的。当然,我们每天都会使用“优化编译器”来提高代码速度,但不能保证真正的最优性。

答案 2 :(得分:2)

在优化中,有两种算法。 完全近似算法。

精确算法可以精确找到最佳解决方案。

近似算法可以找到接近最佳解决方案。

主要区别在于精确的算法适用于&#34; easy&#34;问题。 是什么造成了问题&#34;容易&#34;是因为它可以在合理的时间内解决,如果问题变大,计算时间也不会成倍增长。这类问题称为 P (确定性多项式时间)。使用精确算法来优化此类的问题。对于其他类问题,首选算法是优选的。