检查启发式方法是否兼容
check if heuristics is compatible
我知道兼容的启发式方法是在这些情况下的一种:h(n(< = c(n,a,n'( h(n'(。
和可允许的启发式方法处于状态:0< = h(n(< =实际成本。但是,我不知道该如何检查此启发式方法是否兼容:
一个经纪人住在NXN GRIDWORLD中。代理人的当前位置由代表行的元组(xa; ya(给出当前的列。代理想要达到的目标位置由元组(XG; YG(表示。代理只能一次向上移动,向下,左或右1平方。
h(a(=(xa -xg( (ya -yg(
我可以有一些提示吗?非常感谢。
对于*探路,据我所知,在您的情况下,出租车距离是一个很好的启发式。更多信息在这里:https://en.wikipedia.org/wiki/a* _search_algorithm。
编辑:正如@feixiang正确指出的那样,在您的情况下,您应该使用出租车驾驶室距离,也称为曼哈顿距离正确的。
如果(Xa, Ya)
是您在网格Point a
中的当前位置,而(Xb, Yb)
是您的目的地Point 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*搜索算法,因此开始访问书籍并祝你好运!
相关文章:
- 是否可以为 QPixmap 派生类嵌入缩放方法?
- 是否有内置方法可以强制转换为不同的基础类型,但保留常量限定符?
- 跨 DLL 边界访问虚拟方法是否安全/可能?
- 检查类是否在方法中实例化
- 检查启发式方法是否兼容
- C 编译时间检查模板类型中是否存在方法
- 是否有方法为模板参数指定所需的定义
- 分析以空值结尾的字符串的启发式方法
- 用于确定类型是否具有方法的 SFINAE
- 是否有方法将相对库路径添加到可执行文件以避免设置LD_library_path
- 是否有方法将所有赋值运算符(+=、*=等)转发为隐式使用重写的直接赋值运算符(=)
- 是否有方法使用vector的内容作为键和自定义值来初始化unordered_map ?
- 在调用main函数之前,是否有方法解析命令行选项?
- 在c++中是否有方法对成员变量(类)进行后期初始化?
- 是否有方法为任何指针类型定义转换操作符
- 是否有方法为窗口窗体中的特定按钮挂钩鼠标事件
- 是否有方法检测内联函数ODR违规
- 在Windows Vista+上不注册proppage.dll,是否有方法访问远程过滤器图?
- 是否有方法使Visual Studio对include区分大小写
- 是否有方法在调用函数时防止隐式的static_cast ?