Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodich.doc
Скачиваний:
0
Добавлен:
06.12.2018
Размер:
348.16 Кб
Скачать

6. Управление стратегией вывода в экспертных системах с помощью прямой цепочки рассуждений.

Часто при анализе какой-либо проблемы используются списки вопросов, позволяющих последовательно уточнить задачу. Если такие структуры заложить в программу, то она не будет ЭС, т. к. мы получим дерево решений, "встроенное" в программу. Однако сам стиль вывода используется в ЭС и называется прямым выводом.

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

Проиллюстрируем прямой вывод на программе "Птица, зверь или рыба". Эта программа использует правила верхнего уровня и механизмы задания вопросов низкого уровня. Механизмы задания вопросов аналогичны версии программы с обратной цепочкой рассуждений. А правила верхнего уровня отличаются.

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

guess_animal: - find_animal, have_found (X),

write ("Задуманное вами животное - ", X), nl, !.

find_animal: - test1 (X), test2 (X, Y),

test3 (X, Y, Z), test4 (X, Y, Z, _), !.

find_animal.

В проверке предусмотрены четыре правила проверки: test1,..., test4. Они должны охватить все, что может выясниться при первой, второй, третьей, четвертой проверках. Например, третья проверка управляет всем, что происходит на глубине третьего шага. Тест test3 представляет собой правило с несколькими предложениями. В зависимости от того, какое из предложений задействовано, могут быть заданы следующие вопросы:

Живет на земле? Live on land?

Имеет полосы? Has stripes?

Имеет щупальца? Has tentacles?

Летает? Does it fly?

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

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

test1 (m) животное - млекопитающее;

test1 (n) животное - не млекопитающее.

Для теста test2 возможны следующие комбинации значений аргументов:

test2 (m, c) млекопитающее и плотоядное;

test2 (m, n) млекопитающее и не плотоядное;

test2 (n, w) не млекопитающее и плавает;

test2 (n, n) не млекопитающее и не плавает.

Для проверок третьего уровня имеется еще больше возможностей:

test3 (m, c, s) млекопитающее, плотоядное, с полосами;

test3 (m, c, n) млекопитающее, плотоядное, без полос;

test3 (m, n, l) млекопитающее, не плотоядное, живет на суше;

test3 (m, n, n) млекопитающее, не плотоядное, не живет на суше;

test3 (n, w, t) не млекопитающее, плавает, имеет щупальца;

test3 (n, w, n) не млекопитающее, плавает, не имеет щупалец;

test3 (n, n, f) не млекопитающее, не плавает, летает;

test3 (n, n, n) не млекопитающее, не плавает, не летает.

Для test4 имеется меньшее число возможных значений установок для аргумента, поскольку лишь в двух случаях требуется более трех проверок: когда test3 успешно завершается как test3 (m, n, l) или как test3 (n, w, n). Во всех остальных случаях животное уже идентифицировано. Имеем:

test4 (m, n, l, s) млекопитающее, не плотоядное, живет на суше, с полосами

test4 (m, n, l, n) млекопитающее, не плотоядное, живет на суше, без полос

test4 (n, w, n, f) не млекопитающее, плавает, без щупалец, имеет крылья

test4 (n, w, n, n) не млекопитающее, плавает, без щупалец, без крыльев.

Полная структура тестовых правил имеет следующий вид:

test1 (m): - it_is (mammal),!.

test1 (n).

test2 (m, c): - it_is (carnivorous),!.

test2 (m, n).

test2 (n, w): - positive (does, swim),!.

test2 (n, n).

test3 (m, c, s): - positive (has, stripes), asserta (have_found (tiger)),!.

test3 (m, c, n): - asserta (have_found (cheetah)).

test3 (m, n, l): - negative (does, swim),

negative (does, fly),!.

test3 (m, n, n): - asserta (have_found (blue_whale)).

test3 (n, n, f): - positive (does, fly),

asserta (have_found (eagle)),!.

test3 (n, n, n): - asserta (have_found (ostrich)).

test3 (n, w, t): - positive (has, tentacles),

asserta (have_found (octopus)),!.

test3 (n, w, n).

test4 (m, n, l, s): - positive (has, stripes),

asserta (have_found (zebra)),!.

test4 (m, n, l, n): - asserta (have_faund(giraffe)).

test4 (n, w, n, f): - positive (has, feathers),

asserta (have_found (penguin)),!.

test4 (n, w, n, n): - asserta (have_found (sardine)).

Отметим, что проверки проводятся с помощью предикатов it_is, positive, negative, описанных в ПРЗ с обратной цепочкой.

Как возникает окончательный ответ? Когда при поиске по какому-либо маршруту достигается основание дерева решений, факт, идентифицирующий животное, помещается в базу данных. Например, последний предикат в правиле test3 (m, c, s). Это означает, что искомое животное - тигр. Позднее этот факт, помещенный в базу данных, будет использован в качестве ответа.

Далее, определяется правило find_animal, требующее выполнения всех четырех проверок, хотя иногда требуется всего лишь три. Это не имеет большого значения, так как мы уже поместили ответ в такое место, откуда сможем его получить. Система возвращается назад и успешно выполняет второе предложение правила find_animal. Затем другие части правила guess_rule обеспечивают распечатку ответа.

Упражнения:

1.Выполнить упражнения из раздела 4, организуя правила в систему с прямой цепочкой рассуждений.

2.Изучив листинг программы ПРЗ, вычислите среднее число вопросов, задаваемое в обеих версиях программы для определения животного.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]