Продукционная система является идеальной архитектурой для рассуждений на основе данных.
В рассуждениях на основе данных чаше применяется поиск в ширину. Алгоритм очень прост: содержимое рабочей памяти сравнивается с предпосылками каждого правила в упорядоченной базе правил. Если данные в рабочей памяти приводят к активизации правила, результат помещается в рабочую память, и управление передается следующему правилу. После рассмотрения всех правил поиск повторяется сначала.
Рассмотрим, например, задачу автомобильной диагностики на основе правил:
Правило 1: если
топливо поступает в двигатель и
двигатель вращается,
то
проблема в свечах зажигания.
Правило 2: если
двигатель не вращается и
фары не горят,
то
проблема в аккумуляторе или проводке.
Правило 3: если
двигатель не вращается и
фары горят,
то
проблема в стартере.
Правило 4: если
в баке есть топливо и
топливо поступает в карбюратор,
то
топливо поступает в двигатель.
Если предпосылка правила не выводится из других правил, то недостающая информация запрашивается при необходимости. Например, предпосылка правила 1 топливо поступает в двигатель не является запрашиваемой, так как этот факт является заключением другого правила, а именно — правила 4.
Поиск в ширину на основе данных начинается из состояния, показанного на рис. 7.9. Оно очень напоминает состояние, изображенное на рис. 7.5. (см вопрос 15) Отличие состоит лишь в отсутствии информации в рабочей памяти. Предпосылки четырех правил проверяются на предмет "запрашиваемой" информации. Предпосылка топливо поступает в двигатель не является запрашиваемой, поэтому правило 1 применить нельзя, и управление переходит к правилу 2. Информация двигатель не вращается является запрашиваемой. Предположим, ответом на этот вопрос будет ложь, тогда в рабочую память заносится фраза двигатель вращается, как показано на рис. 7.10.
Но правило 2 применить нельзя, поскольку первая из двух конъюнктивных предпосылок является ложной. Управление переходит к правилу 3, в котором первая посылка снова принимает значение "ложь". В правиле 4 обе предпосылки являются запрашиваемыми. Предположим, ответом на оба вопроса будет "истина", тогда предложения в баке есть топливо и топливо поступает в карбюратор помещаются в рабочую память. Туда же заносится и заключение правила — топливо поступает в двигатель.
Итак, по первому разу все правила рассмотрены, и начинается повторное рассмотрение правил с учетом нового содержания рабочей памяти. Как показано на рис. 7.11, при сопоставлении правила 1 с данными в рабочей памяти его заключение — проблема в свечах зажигания — помещается в рабочую память. Больше никаких правил применить нельзя, и сеанс решения задачи завершается. На рис. 7.12 показан граф поиска, узлы которого содержат информацию, находящуюся в рабочей памяти (РП).
Важной модификацией используемой в предыдущем примере стратегии поиска в ширину является так называемый оппортунистический поиск. Это простая стратегия поиска: всякий раз при активизации правила для вывода новой информации управление переходит к правилу, содержащему эту новую информацию в качестве предпосылки. Следовательно, любая вновь выведенная информация (состояние графа поиска в результате обработки "запрашиваемых" предпосылок не изменяется) является движущей силой для определения активизируемых в дальнейшем правил. Из-за случайного порядка следования правил представленный пример, сам по себе очень простой, также оказался оппортунистическим.
В завершение раздела, посвященного рассуждениям на основе данных, затронем вопросы объяснений и прозрачности в системах прямого поиска. Во-первых, по сравнению
с системами, основанными на цели (вопросы 15, 16), рассуждения на основе данных выполняются менее целенаправленно. Причина этого очевидна — в системе, основанной на цели, рассуждение направлено на решение конкретной задачи, которая разбивается на более мелкие, и эти подзадачи, в свою очередь, могут дробиться дальше. В результате поиск всегда направлен по иерархии, ведущей от этой цели к ее составляющим, В системах на основе данных ориентация на цель отсутствует. Поиск выполняется по дереву, зависящему лишь от порядка следования правил и появления новой информации. В итоге процесс поиска часто кажется "расплывчатым" и несфокусированным.
Во-вторых, и это является прямым результатом только что сказанного, пояснения, выдаваемые пользователю в процессе поиска, весьма ограничены. В системах на основе правил в ответ на вопрос "почему?'' пользователю представляется рассматриваемое правило. Однако, если последовательность правил точно не отслеживается (например, с помощью оппортунистического поиска), это объяснение нельзя развить. "Расплывчатость" поиска на основе данных затрудняет подобные объяснения. И, наконец, при достижении цели системе трудно дать исчерпывающее объяснение в ответ на вопрос "как?". В качестве частичного или полного объяснения можно лишь использовать содержимое рабочей памяти или список активизированных правил. Но опять-таки эти пояснения не дают полного согласованного обоснования, которое мы наблюдали в рассуждениях на основе цели.