常见基础搜索算法

搜索算法是在一定的搜索空间内,按照特定的策略,从一种状态移动到另一种状态的过程。
serach

这个图当然并不完整,只是为了表达Astar算法的优势是结合了不同算法的优势的

BFS 和 DFS

在无权图中最常用的

  • BFS(广度优先搜索):从根节点开始,沿着树的宽度遍历树的节点。如果所有节点均被访问,则算法终止。

  • DFS(深度优先搜索):从根节点开始,沿着树的深度遍历树的节点,尽可能深的搜索树的分支。

Dijkstra

Dijkstra 算法是一种贪心算法,它总是选择当前最短的边,及总cost最小的边,并更新与该边相连的顶点的最短路径。这种方法可以保证找到的是全局最短路径,但是在搜索空间很大的情况下,可能需要处理大量的顶点和边,效率较低。

启发式搜索

启发式搜索是一种使用启发式方法寻找最优解的搜索策略,可以解决一些经典的搜索问题,如八数码问题、旅行商问题等。

贪婪最佳优先搜索

贪婪最佳优先搜索在每一步都选择估计距离目标最近的节点进行访问,这是通过一个启发式函数(也称为估价函数)来实现的。这种策略使得搜索过程更加快速,因为它优先访问看起来更接近目标的节点。但是,这种策略并不保证找到的路径是最短的,因为它可能会错过一些看起来距离目标较远但实际上是最短路径的节点。

A 星 算法

可视化互动学习A* 算法的好资源
A* 算法是一种启发式搜索算法,它结合了 Dijkstra 算法和启发式搜索的优点。它使用 Dijkstra 算法的思想,保证找到的是全局最短路径,同时使用启发式函数来优先搜索代价较小的状态,提高搜索效率。在选择启发式函数时,A* 算法有一个重要的条件,就是启发式函数必须不大于实际代价,这样可以保证找到的是最优解。

必须注意针对不同的问题 这些算法的特点可能就不同

旅行商问题

旅行商问题是一个经典的问题,描述的是一个旅行商要旅行n个城市,每个城市只能访问一次,最后回到原来的城市,如何规划线路使得总的旅行距离最短。

NP-HARD问题

NP-Hard问题是指那些至少和NP中最难的问题一样难的问题。旅行商问题就是一个NP-Hard问题。

运用场景

旅行商问题在物流、电路板制造等许多领域都有应用。

搜索算法在旅行商问题中的应用

搜索算法可以用来找到旅行商问题的最优解。例如,深度优先搜索和广度优先搜索可以用来遍历所有可能的路径,找到最短的路径。A*搜索则可以用启发式函数来优化搜索过程,提高搜索效率。

能体现什么

搜索算法在旅行商问题中的应用能体现出搜索算法在解决实际问题中的重要性。同时,也能体现出不同搜索算法的优劣和适用情况。

缺点是什么

搜索算法在解决旅行商问题时,可能会遇到的主要问题是搜索空间太大,导致搜索效率低下。此外,对于NP-Hard问题,目前还没有多项式时间的确定性算法,所以搜索算法可能无法在合理的时间内找到最优解。

总结

搜索算法是解决复杂问题的重要工具,它们通过系统化的策略在庞大的状态空间中寻找最优解。在无权图的场景中,广度优先搜索(BFS)和深度优先搜索(DFS)是两种常用的基本方法,分别擅长广度和深度的探索。在加权图中,Dijkstra 算法以其贪心的特点能够高效地找到全局最短路径。启发式搜索算法,如贪婪最佳优先搜索和 A* 算法,通过启发式函数的引导,大大提高了搜索效率,特别适合处理复杂的最短路径问题。然而,当面临像旅行商问题(TSP)这样属于 NP-Hard 类的高难度问题时,这些算法虽然能提供一定的解决思路,但在实际应用中仍然面临着搜索空间过大和计算效率低的问题。总体来说,搜索算法在优化路径、解决复杂的组合问题方面具有广泛的应用前景,理解和掌握它们的特性和适用场景,对于解决实际问题至关重要。