启发式和元启发式有什么区别?

时间:2012-05-04 08:54:43

标签: computer-science heuristics

经过一些关于算法的研究后,我发现了两个令我困惑的术语。 我已经阅读了至少20篇论文,然而,两者都没有明确的定义。 我希望有人可以帮助我区分启发式算法和元启发式算法。 如果可能的话,添加它的来源。

ps:我已经知道这些词的含义是什么,但我不知道它们在计算机科学中究竟有什么区别。

提前致谢

3 个答案:

答案 0 :(得分:35)

您可以将启发式视为问题的近似(非近似)解决方案。近似和近似之间的区别在于,第一个是关于对问题解决方案的一个很好的猜测,但是你真的不知道它有多好。第二个是关于获得一个解决方案,您可以证明它与最佳解决方案的接近程度。

因此,启发式算法通常依赖于问题,即您为给定问题定义启发式算法。 Metaheuristics是与问题无关的技术,可应用于广泛的问题。例如,一种启发式方法是在Quicksort中选择一个随机元素进行旋转。元启发式对它将要应用的问题一无所知,它可以将函数视为黑盒子。

你可以说启发式利用依赖于问题的信息来找到特定问题的“足够好”的解决方案,而元启发式则像设计模式一样,可以应用于广泛的问题的一般算法思想。 / p>

答案 1 :(得分:7)

为了给出正确的引用,相对于亚历杭德罗回答:

  

«元启发式算法是一种高级别的独立于算法的算法框架,它提供了一套指导或策略来开发启发式优化算法[...]根据表达的指南,启发式优化算法的特定问题实现元启发式框架也被称为元启发式»(Sörensen,Glover on http://scholarpedia.org/article/Metaheuristics

完全完成。我们应该区分精确算法,近似算法和启发式算法。精确的算法找到了精确的解决方案。近似算法应在可接受的时间内找到近似解,并用假设的最优解指示其差异范围。启发式算法只是在可接受的时间内找到了一个足够好的解决方案。

顺便说一句,Alejandro quicksort的例子似乎并不完全适合两三个不同的原因。

  1. 事实上,启发式和元启发式是优化领域的一部分。他们试图解决的问题是搜索最佳,而不是排序。
  2. 启发式通常用于您想解决的问题太复杂,在计算意义上 - 这不是排序问题的情况。
  3. 通过quicksort示例指出的内容,如果我理解得很好,则是随机元素。原则上,你可以有确定性的启发式方法 - 我从未遇到过确定性的元启发式,但可能有人可以对其进行编码。它可能有点“玩文字”但是,随机元素更恰当地表征“随机搜索”而不是(元)启发式。

答案 2 :(得分:2)

有关详细说明,请参阅:

Sörensen, K. (2015). Metaheuristics—the metaphor exposed. International Transactions in Operational Research, 22(1), 3-18.

  

元启发式是一种高级别的独立于算法的算法   提供一套指导方针或战略的框架   启发式优化算法。该术语也用于指代   特定于问题的启发式优化算法的实现   根据这样一个框架中表达的指导方针(Sörensen,   2015年)。

启发式是指导方针,metaheurstics是使用这些指南的框架。