Які існують відмінності між деревами рішень та деревами поведінки для розробки ігор AI? Для яких додатків ви б використовували одне за іншим?
Які існують відмінності між деревами рішень та деревами поведінки для розробки ігор AI? Для яких додатків ви б використовували одне за іншим?
Відповіді:
Два досить різні. Реальний показник - у назвах. Дерева рішень - лише для прийняття рішень. Дерева поведінки призначені для контролю поведінки. Дозвольте мені пояснити. Основна відмінність двох полягає в тому, як вони проходять, так само, як вони розкладені та типи вузлів "різні".
Дерева рішень щоразу оцінюються від кореня до листа. Щоб дерево рішень працювало належним чином, дочірні вузли кожного з батьків повинні представляти всі можливі рішення для цього вузла. Якщо на вузол можна відповісти "Так, ні, можливо", повинно бути троє дітей, так вузол Так, Ні вузол та Можливо вузол. Це означає, що завжди є якийсь нижній вузол, який потрібно пройти, до досягнення кінцевого вузла. Обхід завжди вниз. Графічна форма:
Досить просто. Ми починаємо з кореня, і на основі якоїсь оцінки вибираємо 1, 2 або 3. Вибираємо 3. Потім робимо якусь іншу оцінку і вибираємо B або B ... Ну я повторно використала графіку знизу, вибачте. Прикиньте ліворуч B магію Б.
Дерева поведінки мають різну оцінку. Перший раз, коли вони оцінюються (або вони скидаються), вони починаються з кореня (батьківські вузли діють як селектори), і кожна дитина оцінюється зліва направо. Дочірні вузли впорядковуються виходячи з їх пріоритетності. Якщо всі умови дочірнього вузла виконані, його поведінка запускається. Коли вузол запускає поведінку, цей вузол встановлюється на "працює", і він повертає поведінку. Наступного разу, коли дерево оцінюється, воно знову перевіряє вузли найвищого пріоритету, тоді, коли мова заходить про "запущений" вузол, воно знає, де він зупинився. Вузол може мати послідовність дій та умов до досягнення кінцевого стану. Якщо будь-яка умова не вдається, обхід повертається до батьків. Потім батьківський селектор переходить до наступної дочірньої пріоритетності. Я спробую тут графічну форму:
Обхід починається в корені, йде до дитини 1, перевіряє стан дитини (щось на кшталт "будь-які вороги поруч?"). Умова не вдається, і обхід рухається назад до дерева, щоб перейти до другого вузла. У вузлі 2 є дія, яка виконується (можливо, щось на зразок пошуку шляху). Потім поведінка (щось на кшталт слідування шляху). Наступний шлях встановлений для запуску, і дерево повертає свій стан як запущений. Вузоли, які не вдалися або завершили, повертаються до "Готових". Потім наступного разу, коли ми перевіряємо, ми знову починаємо з вузла з найвищим пріоритетом. Знову виходить з ладу, тому ми переходимо до вузла два. Там ми виявимо, що у нас поведінка працює. Ми також виявляємо, що поведінка завершена, тому ми відзначаємо її завершеною і повертаємо її. Потім дерево скидається і готове знову йти.
Як видно, дерева поведінки є складнішими. Дерева поведінки є більш потужними і допускають складнішу поведінку. Дерева рішень легко зрозуміти і прості у виконанні. Отже, ви використовуєте дерева поведінки, коли хочете складнішої поведінки або більше контролю над поведінкою. Дерева рішень можуть використовуватися як частина дерева поведінки, або використовуватися окремо для простого ШІ.
Деякий гарне розуміння того , як поведінка дерева розібрані можна знайти тут .