【发布时间】:2019-08-01 21:22:59
【问题描述】:
我正在尝试为 River 问题编写启发式搜索。问题是,我有 X 个体重 X 的人,X 可以驾驶木筏,他们都必须从河的一侧到达另一侧。
我尝试写以下内容; https://pastebin.com/h4adeVnv
public int heuristic(State state){
PersonState sState = (PersonState) state;
if(sState.isBoatIsSouth()){
return sState.isGoal() ? 0 : Collections.max(sState.listPersonsSouth).getWeight();
}
else {
return sState.isGoal() ? 0 : Collections.min(sState.listPersonsNorth).getWeight();
}
}
这让我远离预期答案的 1 个节点,并且在成本方面移动了 1 个节点。
我知道代码并没有真正检查当前状态与目标状态,但我不确定如何编写。
任何关于替代方法的建议或我可以做出的任何调整都将不胜感激!
【问题讨论】:
-
此外,我尝试添加以下pastebin.com/E1VqNSKP,试图通过不高估成本来使搜索功能更可接受,但仍然存在同样的问题
-
筏子只能靠重量航行吗?还是有空间限制?
-
我的坏没有意识到我忘了说!有重量和空间限制(最多只能容纳 x 重量和 y 人)
标签: java search heuristics