А.4.
Задача "Правдолюбцы и лжецы"
Для того чтобы
продемонстрировать вам возможности языка CLIPS, я выбрал головоломку, а не задачу
из практики применения экспертных систем. В головоломке решается одна из задач,
возникающих на острове, населенном обитателями двух категорий: одни всегда говорят
правду (назовем их правдолюбцами), а другие всегда лгут (их, естественно, назовем
лжецами). Множество подобных головоломок вы можете встретить на страницах занимательной
книги Раймонда Смуляна (Raymond Smullyan) What is the Name of this Book?. Ниже
приведены разные задачи из этой серии.
Р1.
Встречаются два человека, А и В, один из который правдолюбец, а другой — лжец.
А говорит: "Либо я лжец, либо В правдолюбец". Кто из этих двоих правдолюбец,
а кто лжец?
Р2. Встречаются
три человека, А, В и С. А и говорит: "Все мы лжецы", а В отвечает:
"Только один из нас правдолюбец". Кто из этих троих правдолюбец, а
кто лжец?
РЗ. Встречаются
три человека, А, В и С. Четвертый, проходя мимо, спрашивает А: "Сколько
правдолюбцев среди вас?" А отвечает неопределенно, а В отвечает: "А
сказал, что среди нас есть один правдолюбец". Тут в разговор вступает С
и добавляет: "В врет!" Кем, по-вашему, являются В и С?
В программе, решающей проблемы подобного класса, будут использованы широкие возможности средств программирования правил в языке CLIPS и продемонстрированы некоторые интересные приемы, например использование контекстов и обратного прослеживания. Мы также покажем, как конструировать и тестировать прототипы, которые приблизительно воспроизводят поведение окончательной программы. Как отмечалось в основном материале книги, технология построения экспертных систем с использованием прототипов — одна из самых распространенных в настоящее время.