C++ 检查启发式是否兼容
我知道,在这些条件下,兼容的启发式是:C++ 检查启发式是否兼容,c++,artificial-intelligence,heuristics,C++,Artificial Intelligence,Heuristics,我知道,在这些条件下,兼容的启发式是: hn就我所知,在你的案例中,出租车距离是一个很好的启发。这里有更多信息:。编辑:正如@FeiXiang正确指出的那样,在您的情况下,您应该使用出租车距离,也就是曼哈顿距离,其中唯一有效的移动是向上、向下、向左或向右 如果Xa,Ya是你在网格点a和Xb中的当前位置,Yb是你的目的点b,那么你将计算曼哈顿距离,如下所示 typedef std::pair<int, int> Point; unsigned manhattanDistance(con
hn就我所知,在你的案例中,出租车距离是一个很好的启发。这里有更多信息:。编辑:正如@FeiXiang正确指出的那样,在您的情况下,您应该使用出租车距离,也就是曼哈顿距离,其中唯一有效的移动是向上、向下、向左或向右 如果Xa,Ya是你在网格点a和Xb中的当前位置,Yb是你的目的点b,那么你将计算曼哈顿距离,如下所示
typedef std::pair<int, int> Point;
unsigned manhattanDistance(const Point &a, const Point &b)
{
return abs(a.first - b.first) + abs(a.second - b.second);
}
互联网上有大量的资源可以帮助你解决这个问题,所以开始阅读书籍吧,祝你好运这是A*寻路算法吗?是的,这是对A*路径的诚实,更容易去查找一个简单的A*在C++中完成,并从中学习。我相信,你对事物的高层次描述只是把工作搞糊涂了。在他的问题上,唯一可能的行动是向上、向下、向左和向右。因此,出租车距离比欧几里德距离更具启发性。顺便说一句,你不需要取绝对值,因为你之后会立即将值平方。