Предикат askable. оборудование для производства мебели г. Жуковский
Предикат askable определяет какие вопросы будут заданы пользователю. Чтобы избежать повторения одних и тех же вопросов, программа записывает ответы на вопросы, что обеспечивается предикатом respond . Если на вопрос A последовал ответ yes, то в программу вводится факт A. Если же получен ответ no, то в программу вводится факт untrue(A). Эта информация используется предикатом known, чтобы избежать задания вопросов, ответы на которые уже известны программе. Директива dynamic для untrue добавлено для того, чтобы избежать предупреждение Пролога об отсутствии определения untrue.
Дополняем базу знаний предикатом askable и директивой dynamic для предикатов ‘имеет симптом’ и ‘имеет признак’.
Теперь получим рекомендации для Боба:
?- solve(hy(bob,Y)).
bob имеет симптом мышечные боли? yes.
bob имеет симптом лихорадка? yes.
bob имеет признак моложе 8 лет? no.
bob имеет признак старше 60 лет? no.
Y = 'лечь в постель и принять аспирин' ;
bob имеет симптом насморк? yes.
bob имеет симптом нарывы в горле? yes.
Y = 'вызвать врача' ;
No
Повторный запрос для Боба приводит сразу к тому же ответу:
?- solve(hy(bob,Y)).
Y = 'лечь в постель и принять аспирин' ;
Y = 'вызвать врача' ;
No
Опубликовал vovan666
May 23 2013 07:28:04 ·
0 Комментариев ·
4140 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.