我想实现一个复杂的分支逻辑 Android 业务应用程序,用作营销问卷工具,有很多问题,并根据用户的反应在其中进行分支。我很困惑是将对话逻辑实现为 FSM 还是行为树。作者使用树来实现状态机。例如,在 Ian Millington 等人的人工智能游戏中,作者建议将决策树用于 FSM。但是,我认为 FSM 可以有闭包,例如在“发出警报”和“防御”之间进行转换将使其成为图表而不是树。我的第一个问题是树和状态机有什么区别?第二个是什么对我的应用程序来说是一个好的实现,管理高水平的分支复杂性?
问问题
6534 次
3 回答
2
行为树和决策树是两个不同的东西。行为树是面向目标和反应性的(更适合在类似游戏的环境中模拟代理或智能实体的决策),并且决策树是一个很好的工具,用于根据动作的效用来规范(和存储)决策给定的状态。主要是,在第一种方法中,执行更加有状态(执行与您在树中的状态相关联),而在后一种方法中则更加无状态(整个树被评估为从根到叶以到达结论)。
也就是说,从您的描述看来,您正在寻找的是基于规则的专家系统。
于 2013-04-11T16:55:44.423 回答
1
我认为根据定义,FSM 只有一个入口点,而行为树可以有多个输入。树是图,但图不是树。树是一个无环图,其中叶子永远不会有多个父节点。所以在这方面,树更适合FSM。
无论如何,我想这种类型的模拟超出了 android api 的范围。因此,我会更多地关注 Java 中可用的工具类型。我曾经用 Java 做过一个机器学习研究项目。我最终实现了一个自定义 Tree 数据结构以促进多线程。
我希望这会有所帮助!
于 2011-07-14T14:41:46.280 回答
0
FSM 是由转换链接的状态图。对于复杂的 fsm,由于复杂的转换,很难扩展。
对于行为树,每个节点都由其父节点管理,转换实际上隐含在父子关系中,因此更容易扩展现有的行为树。
于 2015-12-24T09:48:37.890 回答