【发布时间】:2014-05-21 12:17:42
【问题描述】:
正如所说(例如,维基百科)启发式提供的解决方案不能保证是最优的。我认为这在很多情况下都是正确的,但是如果我们使用例如启发式成本估计(如 A* 算法中的那个)来实现可以被证明是最优的解决方案会怎样。在那种情况下,我们不应该将该算法称为启发式算法吗?
【问题讨论】:
-
如果存在算法在没有给出最优解的情况下终止的问题实例,则该算法是启发式的。寻找可以被证明是最优的解决方案(通过使用精确的方法)不会改变算法的启发式性质。正如 larsmans 所说,如果在特定技术条件下可以证明一种算法在终止时保证最优性,那么该算法就是精确的。因此,如果算法被归类为启发式算法,这在很大程度上取决于构成问题的条件。
-
所以,如果我对你和 larsmans 理解得很好,那么一种精确的算法,它使用启发式函数作为它的一部分来修剪搜索树的无结果的分支(这 100% 不会导致任何最佳解决方案) 不能称为启发式。但我能称之为什么?也许是“配备启发式函数的精确算法”?
-
我只称它为精确算法,如果您需要进一步详细说明,那么您所说的也是正确的。它使用启发式部分的事实使其在实践中更有效,与准确性无关。即使启发式被删除,算法仍然是精确的。顺便说一句,在实际或数学意义上,精确并不意味着“高效”。例如,蛮力枚举是准确的,但效率不高。
标签: algorithm terminology heuristics