Дерево Поведения против Государственного автомата - PullRequest
1 голос
/ 14 июля 2011

Я хочу реализовать бизнес-приложение Android со сложной логикой ветвления, которое будет использоваться в качестве инструмента для маркетинговых опросов, с множеством вопросов и ветвлений между ними в зависимости от того, что ответит пользователь.Я запутался, реализовывать ли диалоговую логику в виде FSM или дерева поведения.Авторы использовали деревья для реализации конечных автоматов.Например, в книге «Искусственный интеллект для игр» Яна Миллингтона и др. Автор предлагает использовать дерево решений для FSM.Тем не менее, я думаю, что FSM может иметь замыкания, например, переход между «сигналом тревоги» и «защитой» сделает его графиком, а не деревом.Мой первый вопрос: в чем разница между деревом и конечным автоматом?Во-вторых, что будет хорошей реализацией для моего приложения, управляя высоким уровнем сложности ветвления?

Combining Decision Tree and State Machine

Ответы [ 3 ]

1 голос
/ 11 апреля 2013

Деревья поведения и деревья решений - это две разные вещи.Деревья поведения являются целенаправленными и реагирующими (больше подходят для имитации решений агентов или интеллектуальных объектов в играх, подобных среде), а деревья решений являются отличным инструментом для спецификации (и хранения) решений, основанных на полезности действия дляданное состояние.В основном, в первом подходе выполнение является более полным состоянием (выполнение связано с состоянием, в котором вы находитесь в дереве), а в последующем - больше без состояния (все дерево оценивается от корня к листу, чтобы достичьзаключение).

Тем не менее, из вашего описания кажется, что вы ищете экспертную систему, основанную на правилах.

0 голосов
/ 24 декабря 2015

FSM - это график состояний, связанных переходами. для сложного fsm его сложно расширить из-за сложных переходов.

Для деревьев поведения каждый узел управляется своим родителем, переход фактически неявно связан с отношениями родитель / потомок, поэтому проще расширять существующее дерево поведения.

Вы можете обратиться к https://github.com/TencentOpen/behaviac для исходного кода и конструктора.

0 голосов
/ 14 июля 2011

Я думаю, что по определению у FSM есть только одна точка входа, а у деревьев поведения может быть несколько входов.Дерево - это граф, но граф - это не дерево.Дерево - это ациклический граф, в котором листья никогда не имеют нескольких родителей.Так что в этом отношении дерево лучше подходит для FSM.

В любом случае, я бы предположил, что этот тип симуляции выходит за рамки android api.Следовательно, я бы больше посмотрел на то, какие инструменты доступны в Java.Однажды я занимался исследованием машинного обучения на Java.В итоге я реализовал собственную структуру данных Tree, чтобы облегчить многопоточность.

Надеюсь, это поможет!

...