На этой страничке обсуждаются два применения обратимым вычислениям: решение ограничений и планирование действий на обратимых вычислениях, две задачи искусственного интеллекта.
Ограничение - это предикат, возвращающий true если его аргументы удовлетворяют ограничению, и возвращающий false, если аргументы не удовлетворяют ограничению. Удовлетворение ограничения есть поиск таких аргументов этого предиката, на которых предикат истинен. К решению ограничений, например, сводится автоматический синтез музыки, где предикат качества звучания оценивает массив звуков на дорожке, искомые звуки на дорожке - аргументы предиката. Или же, к решению ограничений сводится автоматический синтез планов. Тут предикат качества плана проверяет, достигает ли массив действий цели и не имеет ли он не нужных последствий, оптимален ли план и начинается ли с исходного состояния. Действия плана являются аргументами этого предиката. Также, к решению ограничений можно свести и поиск пути от начальной до конечной точки по улицам города. Предикат качества пути определяется на массиве отрезков пути, эти отрезки являются аргументами предиката, а поиск этих отрезков является удовлетворением ограничения, то есть решением ограничения. Поэтому, к решению ограничений сводятся некоторые задачи искусственного интеллекта. Ограничения можно решать обратными вычислениями, то есть выводить аргументы предиката из результата предиката, выполняя код предиката обратно, от результата - к аргументам.
Обратимые вычисления можно использовать для минимизации функций общего вида, то есть без каких-либо ограничений на вид функции. Тут не нужны ни гладкость, ни наличие производных. Достаточно записать алгоритм расчёта функции на простом обратимом ассемблере BLACK в среде Visual Studio и отладить код в отладчике Digital Coin Debugger. Алгоритм минимизации функции из библиотеки классов BlackOptimizer найдёт значения параметров функции, такие, чтобы результат функции был меньше требуемого. Ниже следует пример такой обратимой оптимизации: "Минимизация функций общего вида на обратимых вычислениях".
Далее примеры будут усложнены, идя от простого к сложному. Кроме примеров, демонстрирующих концепцию решения ограничений и планирования, на обратимых вычислениях, попытаемся решить и практически-важные примеры, как то оптимальное переодевание персонажа при его прокачке ботом, сложную задачу удовлетворения ограничений в виртуальном игровом мире. Также, попытаемся решить задачу поиска оптимального плана зачистки монстров в радиусе передачи игрового золота, она возникает в боттинге при RMT - Real Money Trading, торговле игровым золотом за реальные деньги. Оба эти примера будут демонстрировать применение обратимых вычислений в интеллектуальном управлении персонажами.
Продолжение следует, зайдите на сайт через несколько недель.