启发式算法解决优化问题_通过启发式搜索在Java中更快地解决问题

通过搜索可能的解的空间来解决问题是人工智能中一种称为状态空间搜索的基本技术。 启发式搜索是状态空间搜索的一种形式,它利用有关问题的知识来更有效地找到解决方案。 启发式搜索在各个领域都取得了很大的成功。 在本文中,我们向您介绍了启发式搜索领域,并提出了Java编程语言中A *(最广泛使用的启发式搜索算法)的实现。 启发式搜索算法对计算资源和内存提出了很高的要求。 我们还展示了如何通过避免昂贵的垃圾收集并利用Java Collections Framework(JCF)的高性能替代方法来改进Java实现。 本文的所有代码都可以下载 。

启发式搜索

图形数据结构可以表示计算机科学中的许多问题,其中图形中的路径表示潜在的解决方案。 寻找最佳解决方案需要寻找最短路径。 例如,想象一个自主的视频游戏角色。 角色可以进行的每一个移动都对应于图形中的一条边,并且角色的目标是找到最短的路径来吸引相对的角色。

诸如深度优先搜索和广度优先搜索之类的算法是流行的图遍历算法。 但是它们被认为是无知的 ,并且通常会受到所能解决问题的大小的严重限制。 而且,不能保证深度优先搜索找到最优解(或者在某些情况下根本不求任何解),而宽度优先搜索只能保证在特殊情况下找到最优解。 相反,启发式搜索是一种明智的搜索,它利用关于问题的知识(采用启发式编码)来更有效地解决问题。 启发式搜索可以解决许多不为人知的算法无法解决的难题。

你可能感兴趣的:(算法,大数据,python,机器学习,人工智能)