Экспертная система
Эксперт – это человек, который обладает глубокими теоре-тическими знаниями и практическим опытом работы в некото-рой области. Например, врач-эксперт хорошо ставит диагноз и лечит потому, что имеет медицинское образование и большой опыт лечения пациентов. Он не только знает факты, но пони-мает их взаимосвязь, может объяснить причины явлений, сде-лать прогноз, найти решение в конфликтной ситуации.
Экспертная система – это компьютерная программа, задача которой – заменить человека-эксперта при выработке рекомен-даций для принятия решений в сложной ситуации.
Экспертная система содержит базу знаний, в которой хра-нятся не только факты, но и правила, по которым из этих фак-тов делаются выводы.
Мы построим простейшую экспертную систему, которая за-даёт пользователю вопросы и по его ответам определяет класс животных.
Предположим, что в базу знаний внесены следующие пра-вила:
если у животного есть перья, то это – птица;
если животное кормит детенышей молоком, то это – млеко-питающее;
если животное – млекопитающее и ест мясо, то это – хищ-ник.
Диалог пользователя с экспертной системой может быть, например, таким (ответы пользователя выделены курсивом):
Это животное кормит детей молоком? нет Это животное имеет перья? да
Это птица.
Для того чтобы определить последовательность вопросов, эксперт строит дерево решений, например, такое:
44 http://kpolyakov.spb.ru
Информатика, 8 класс
нет
05.04.2019 К.Ю. Поляков, Е.А. Еремин
Кормит детей молоком?
Кормит детей молоком?
млекопитающее
Кормит детей молоком?
Кормит детей молоком?
Кормит детей молоком?
Кормит детей молоком?
да
хищник
Рис. 3.4.
В прямоугольниках записаны вопросы, которые задаёт сис-тема пользователю, у стрелок – его возможные ответы («да» или «нет»). Фоном выделены выводы – результат работы эксперт-ной системы.
Постройте трёхуровневое дерево решений для своей экспертной системы.
Конечно, эта система позволяет определить не все классы животных: в некоторых местах на схеме стоят знаки вопроса. В этих случаях наша программа будет выводить ответ «не знаю».
Человеку удобнее вводить ответ словами («да», «нет»), то есть в виде символьной строки. Именно в такой форме возвра-щает результат ввода функция input, с которой мы уже знако-мы.
Программа начинает диалог с вопроса «Кормит детей моло-ком?» и в зависимости от ответа выбирает одну из двух ветвей дерева решений (см. Рис. 3.4).
otvet = input( "Кормит детей молоком? " ) if otvet == "да":
... # вариант 1 else:
... # вариант 2
Конечно, вместо многоточий должны быть добавлены команды, которые нужно выполнить в каждом случае.
45 http://kpolyakov.spb.ru
05.04.2019 Информатика, 8 класс К.Ю. Поляков, Е.А. Еремин
Обратите внимание, что символьные строки можно сравни-вать с помощью оператора «==» так же, как и числа.
Разберём дальнейшие действия системы при первом ответе «да». Во-первых, нужно вывести первый результат: «Это млеко-питающее». Во-вторых, задаём второй вопрос и в зависимости от ответа на него сообщаем второй результат:
print( "Млекопитающее." ) otvet = input( "Ест мясо? " ) if otvet == "да":
print( "Хищник." ) else:
Достарыңызбен бөлісу: |