AI - 如何根据规则简明地生成所有可能的结果

时间:2015-02-09 19:50:09

标签: java if-statement artificial-intelligence generator rules

我有一个问题如下:一个房间可以容纳13个人,一个9个,另一个房间4.房间全部开始空0 0 0并且可以填充到他们的容量或一个房间的内容可以转移到另一个房间。因此,对于像13 0 0这样的情况,13可以填满第三个房间,使其成为9 0 4.依此类推。我想生成所有不同的可能性(跟随每一代,直到我达到END或我已经生成的状态。我已经使用很多If Ifse语句实现了这个...我可以生成这个的最简洁的方法?

1 个答案:

答案 0 :(得分:2)

您可以定义一个名为State的类,其中包含三个房间的状态,例如,您可以执行类似State st = new State(13,0,0)的操作。国家的建设者也可以验证国家,以确保第一个房间只能容纳13个人,第二个房间只能容纳13个人,第三个房间4个。

然后,您可以使用签名:

实现名为expand的函数
List<State> expand (State st)

此函数接收状态并返回可从接收状态生成的状态列表。

要做:

  

我想产生所有不同的可能性(跟随每一代   直到我达到END或我已经生成的状态

有很多方法可以做到这一点,这取决于你想要获得什么样的数据?你想让那些国家引领你进入你想要的国家吗?或者您只是想知道州是否可以到达?

修改 好的,既然你想获得所有可达状态,你可以创建另一个函数,如:

List<State> getReachableStates(State root)

现在,您可以以递归方式或以迭代方式实现此功能。 这是迭代的: 此方法包含扩展状态列表和一个扩展状态列表,以初始化状态获取作为参数接收的根状态。然后,当你有一个扩展的状态时,调用扩展你从状态列表中删除的状态进行扩展。 调用expand后,将展开的State添加到处理状态列表,并将调用expand的结果添加到to process列表。 结束时,返回展开状态列表。