考虑一个状态空间,其中开始状态为2,每个状态k
有三个后继:数字2k, 2k+1, 2k+2
。从州k到每个孩子的费用是k, ground(k/2), k+2
。
我想用python实现统一成本搜索算法。目标状态是85号。
答案 0 :(得分:1)
取一个数组,最初为0表示每个状态(0..85)。
从开始状态(2)到目标/ 2(85/2)
迭代在每个状态下计算可能的后继,以及从当前状态移动到那里的成本(当前状态的成本在数组中)。
如果您刚刚计算的成本低于之前的成本,或者之前为0,则更新计算所需的成本。
从对应于目标状态的数组中获取成本。如果它为0则无法达到。
代码看起来应该是这样的
public class Buildable
{
private final String property;
@java.beans.ConstructorProperties({"property"})
Buildable(final String property) {
this.property = property;
}
public static BuildableBuilder builder() {
return new BuildableBuilder();
}
public static class BuildableBuilder
{
private String property;
BuildableBuilder() { }
public BuildableBuilder property(final String property) {
this.property = property;
return this;
}
public Buildable build() {
return new Buildable(property);
}
public String toString() {
return "Buildable.BuildableBuilder(property=" + this.property + ")";
}
}
}