Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Искусственный интеллект, версия 2.0





Чтобы двигаться дальше, напомню, что такое предикатные языки, что такое правила, ситуация, что такое распараллеливание на цепочки вывода.

В предикатных языках (таких, как Пролог), нет последовательности шагов в программе. Есть только набор правил, причём последовательность выполнения этих правил изначально никак не задана.

Выглядит это так:

правило n: результат если условие;

правило m: результат если условие;

И так далее.

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

Какой-то глобальной ситуации при выполнении предикатной программы нет. Есть начальное условие, под которое интерпретатор ищет первое попавшееся правило с подходящим условием, результат этого правила добавляется к начальному условию. Поиск подходящего правила для нового условия повторяется. В итоге получается цепочка вывода, которая может вести к правилу, обозначающему достижение конечного результата. Если интерпретатор исчерпает все доступные цепочки, то он начнёт откатываться обратно, для каждого цикла ища следующее подходящее правило, выстраивая новые цепочки.

Ещё раз обратите внимание, состояние (ситуация) представляет собой начальное условие плюс цепочку применённых правил. При откате соответственно меняется и цепочка применённых правил.

При сцеплении правил в цепочки интерпретатор вполне может впасть в бесконечный поиск, хотя решение может быть рядом. Поэтому, если интерпретатор "умный" то он умеет или распознавать места потенциального зацикливания, или может вести параллельно несколько цепочек решений, выбирая из них в итоге ту, что быстрее приведёт к конечной ситуации. С другой стороны, тому, кто пишет набор правил, надо позаботиться о том, чтобы минимизировать вероятность зацикливания.

Например, задача про миссионеров и людоедов, когда на одной лодке надо перевезти толпу миссионеров и людоедов на другой берег. Лодка вмещает только двух человек. Если людоедов на берегу останется больше чем миссионеров, то миссионеров съедят. При решении задачи на предикатном языке, расписываются допустимые ситуации, чтобы миссионеров не съели (в т.ч. рекурсивно) и допустимые перемещения лодки (в лодке должен быть всегда один или два человека). Дальше интерпретатор сам строит дерево допустимых решений, пока не приходит к ситуации, когда вся толпа оказывается на другом берегу. Цепочка правил в этом случае несёт в себе последовательность перевозок миссионеров и людоедов через речку.

Поскольку правила чётко сцепляются друг с другом в процессе поиска решения, в предикатных языках уже на уровне правил задана иерархия и последовательность их применения, нечто похожее на группировку в процедуры в процедурных языках. Но как только мы делаем сцепление между правилами менее чётким, такая группировка теряется. И как именно она возникнет заново (или как помочь ей образоваться) - это уже новый вопрос.

В предикатных языках нет никаких циклов, нет условных переходов, нет жёстко заданной последовательности действий. Исполнитель всегда "знает" что ему делать, потому что следующий шаг он подбирает под текущую ситуацию. Исполнитель подбирает только один шаг, потому что на следующем шаге он произведёт оценку изменённой ситуации и выберет новый шаг, как бы неожиданно не изменилась ситуация. Это же поможет исполнителю выпутаться, если часть его программы дала сбой или приняла неверное решение. Вместо того, чтобы катастрофически падать в неправильном направлении, исполнитель ещё раз оценит ситуацию, и, вполне возможно, следующий шаг эту ситуацию всё-таки улучшит.

Конечно, задействованные процессы намного прожорливее к вычислительным мощностям, по сравнению с процедурной записью программы. И в изначальном виде в предикатных языках далеко не всё так гладко, как описано в предыдущем абзаце.

Недостаток предикатных языков заключается в том, что область применения правил очень узкая, и выстраиваются они в слишком длинные цепочки. В интеллекте же наоборот, преобладают короткие цепочки вывода, в которых логическая единица оценивает весьма широкий массив входных условий, причём по нечётким и нелинейным критериям.

Date: 2015-09-05; view: 338; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.005 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию