我想实现一个复杂的分支逻辑Android业务应用程序,用作营销问卷调查工具,根据用户的响应,提供大量问题和分支。 我很困惑是将对话逻辑实现为FSM还是行为树。作者使用树来实现状态机。例如,在Ian Millington等人工智能游戏中,作者建议将决策树用于FSM。但是,我认为FSM可以有闭包,例如在“raise alarm”和“defend”之间进行转换将使它成为图形而不是树。我的第一个问题是树和状态机之间的区别是什么?第二个是我的应用程序的良好实现,管理高水平的分支复杂性?
答案 0 :(得分:1)
行为树和决策树是两回事。行为树是面向目标和被动的(套件更多用于模拟游戏环境中的代理或智能实体决策),决策树是基于动作的实用程序的规则(和存储)决策的一个很好的工具。给定的国家。 主要是,在第一种方法中,执行更多是状态满(执行与您在树中的状态相关),而后者更无状态(整个树从根到叶进行评估,以便到达结论)。
那就是说,根据你的描述,你所看到的似乎是专家系统,基于规则。
答案 1 :(得分:0)
我认为根据定义,FSM只有一个入口点,而行为树可以有多个输入。树是图形,但图形不是树。树是一种非循环图,其中叶子永远不会有多个父母。所以在这方面,树更适合FSM。
无论如何,我认为这种类型的模拟超出了android api的范围。因此,我会更多地了解Java中可用的工具类型。我曾经用Java做过机器学习研究项目。我最终实现了自定义树数据结构,以便于多线程处理。
我希望有所帮助!
答案 2 :(得分:0)
FSM是由转换链接的状态图。对于复杂的fsm,由于复杂的转换,很难扩展。
对于行为树,每个节点都由其父节点管理,转换实际上隐含在父/子关系中,因此更容易扩展现有的行为树。
you can refer to https://github.com/TencentOpen/behaviac for the source code and designer.