A* 从寻找最优路径到寻找最优解的注意事项

A* 的理解
A*是一种宽度优先搜索。在搜索时不断的对待搜索点的价值进行排序,所以A*可以快速的寻找到接近于最优解的解,但不一定是最优解,只是接近

A*的价值函数是微妙的控制器。需要不断测试到最佳的估价函数。


寻找最佳路径是A*算法的最初目标。但需要寻找答案的不仅仅是最佳路径,很多问题都需要寻找最优解。在尝试将A* 算法使用在除了寻找最佳路径之外的解空间搜索问题上时,发现有很多细节需要注意。

1. 对于重复节点(节点相同)的判断。 作为寻径算法时,地图上的点,作为一个节点,每个节点只出现一次。 作为解空间算法时,必要时需要加上深度这一概念,因为某一节点可能出现在不同的分支上。 根本原因在于:节点相同,估价值相同。如果A到C,和B到C,导致了C的估价不同,那么A-C的C,B-C的C应该作为不同的节点处理

2. 状态图的变化。如果所进行的操作都会对“棋局”造成影响,那么节点应该是“棋局”,而不是所作的操作。

你可能感兴趣的:(C++,c,算法,C#)