用python统一成本搜索算法

时间:2018-01-18 04:44:24

标签: python algorithm search

考虑一个状态空间,其中开始状态为2,每个状态k有三个后继:数字2k, 2k+1, 2k+2。从州k到每个孩子的费用是k, ground(k/2), k+2

我想用python实现统一成本搜索算法。目标状态是85号。

1 个答案:

答案 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 + ")";
        }
    }
}