Элементы языка Пролог
Пролог - это одна из моделей систем искусственного интеллекта, способных воспроизводить логические умозаключения. Кроме того, Пролог - это язык для описания фактов, правил и процедур логического вывода. О языке Пролог обычно говорят, что он представляет язык логического программирования.
Основной особенностью системы Пролог являются встроенные процедуры логического вывода, имитирующие способность человеческого интеллекта выполнять логические умозаключения. Какая лексика используется при этом - русского, английского или других языков - играет второстепенную роль, несущественную для ЭВМ, но важную для тех, кто будет работать и вести диалог с машиной.
Основная идея Пролога как языка записи
фактов, вопросов и правил заключается в том, что они записываются в форме предикатов математической логики. Все они интерпретируются ЭВМ строго в соответствии с законами математической логики и ни чем более.
Основные конструкции языка Пролог - это факты, вопросы и правила. Все эти три конструкции записываются в форме предикатов и их комбинаций. Рассмотрим правила их записи на языке Пролог.
Факты - это конкретные сведения о ком-то либо о чем-то. Факты на языке Пролог записываются в форме предикатов с конкретными аргументами-значениями. Примеры записи фактов на Прологе:
папа (Вова, Лена); - Вова - папа Лены
любит (Лена, музыка); - Лена любит музыку
оценка (Лена, русский, 5); - У Лены 5 по русскому языку
Вопросы на Прологе - это запросы к совокупности данных или процедурам, хранящимся, в ЭВМ. Запись вопросов начинается со знака ?, за которым записывается предикат или группа предикатов, разделяемых запятыми. Примеры записи простых вопросов на языке Пролог:
? папа (х, Лена) - Кто папы Лены?
х = Вова
? мама (х, у) - Кто у кого - мама ?
НЕТ
? оценка (х, _ , 5) - Кто имеет оценки 5?
х = Лена
Здесь буквы х, у - обозначения переменных, а числа и слова - конкретные значения аргументов в соответствующих предикатах. Знак подчеркивания «_» представляет неопределенное значение, которое несущественно для ответа на вопросы.
При записи сложносоставных вопросов в языке Пролог можно указывать несколько условий-предикатов, разделяемых запятыми. Запятая в этих сложносоставных вопросах играет роль логической связки и. Примеры сложносоставных вопросов:
? мама (х, у), мама (у, Оля) - Кто мама у мамы Оли?
х = Зина у = Люба
? мама (х, у), папа (у, Оля) - Кто мама у папы Оли?
НЕТ
Правила в Прологе - это правила логического вывода. Слева в правилах записывается следствие, а справа - предусловие. Предусловие может состоять из одного или нескольких предикатов, разделяемых запятыми. Примеры записи правил вывода на Прологе:
студент (х) ¬ занятие (х, учеба); - Студент - тот, кто занят учебой;
нумизмат (х) ¬ собирает (х, монеты); - Нумизмат - тот, кто собирает монеты.
Примеры вопросов на использование этих правил:
? студент (х) - Кто - студент?
х =
Алеша
х = Лена
? нумизмат (у) - Кто
- нумизмат?
у = Алеша
В правилах со сложносоставными определениями запятая также играет роль логической связки и, объединяя условия, образующие определение. Такого рода правила позволяют создавать самые сложные и изощренные базы знаний по самым различным предметным областям и применениям.
Приведем пример составления базы знаний о друзьях. Будем различать друзей по их именам: Алеша, Оля и т. д. Включим в базу данных следующие сведения о друзьях:
что им нравится;
что они коллекционируют;
чем они занимаются;
какие оценки они имеют.
При такой постановке проблемы и предметная область, и круг основных вопросов очерчены достаточно четко. Для записи фактов на Прологе примем следующие предикаты:
нравится (<имя>, <вещь>);
собирает (<имя>, <вещь>);
занимается (<имя>, <предмет>);
оценка (<имя>, <предмет>, <балл>);
Вместо <имя>, <вещь>, <предмет>, <балл> при составлении базы знаний необходимо подставить конкретную информацию о конкретных друзьях. Записывать имена будем с большой буквы в именительном падеже. Далее,
<вещь> и <предмет>
- это существительные в именительном падеже,
<балл> - целое число от 1 до 5.
Пусть об Оле и Алеше известно следующее:
1. Оле нравится музыка. Она собирает фотографии любимых певцов. Занимается домоводством. Оля имеет 4 по русскому языку и 5 по алгебре.
2. Алеше нравится история, он собирает монеты, естественно, имеет 5 по истории, занимается в археологическом кружке.
Соответствующая база данных на языке Пролог:
нравится (Оля, музыка); - Оле нравится музыка
нравится (Алеша, история); - Алеше нравится история
собирает (Оля, фотографии); - Оля собирает фотографии
собирает (Алеша, монеты); - Алеша собирает монеты
собирает (Алеша, значки); - Алеша собирает значки
оценка (Оля, русский, 4); - Оля имеет 4 по русскому языку
занимается (Алеша, бизнес); - Алеша занимается бизнесом
оценка (Оля, алгебра, 5); - Оля имеет оценку 5 по алгебре
оценка (Алеша, история, 5); - Алеша имеет оценку 5 по истории
К составленной базе данных можно обращаться с самыми разными вопросами об интересах, занятиях, склонностях и успехах в учебе. Примеры самых простых вопросов и ответов, получаемых от ЭВМ:
? занимается (Алеша, футбол) - Занимается ли Алеша футболом?
нет
? нравится (Оля, музыка) - Нравится ли Оле музыка?
да
Использование в вопросах переменных позволяет получать от ЭВМ информацию, хранящуюся в базе данных. В ответ на такие вопросы выводятся все возможные варианты ответов.
Например:
? нравится (х, у) - Кому что нравится?
х = Оля у = музыка
х = Алеша у = история
Если какая- то часть информации по той или иной причине не нужна, то вместо соответствующей переменной в вопросе ставится знак подчеркивания «_»:
? собирает (_ , х) - Что собирают друзья?
х
= фотографии
х = монеты
х = значки
Наконец, в вопросах можно одновременно использовать как переменные, так и конкретные значения. Например:
? занимается (х, музыка) - Кто занимается музыкой ?
нет
? занимается (Алеша, у) - Чем занимается Алеша ?
у = бизнес
? собирает (х, монеты) -
Кто собирает монеты ?
х = Алеша
? оценка (х, _ , 5) - Кто имеет пятерки?
х = Оля
х = Алеша
Примеры сложносоставных вопросов:
1. Кто занимается бизнесом и собирает монеты?
? занимается (х, бизнес), собирает (х, монеты)
х = Алеша
2. Какие оценки имеет тот, кто собирает монеты?
? собирает (х, монеты), оценка (х, р, z)
х = Алеша
р = история
z = 5
К составленной базе данных можно добавить следующие правила вывода:
книголюб (х) ¬ нравится (х, книги), - Книголюб - тот, кто
собирает (х, книги) любит и собирает книги
бизнесмен (х) ¬ собирает (х, монеты), - Бизнесмен - тот, кто
занятие (х, бизнес) собирает монеты и занима ется бизнесом
Примеры использования правил-определений:
? книголюб (х) - Кто - книголюб?
НЕТ
? бизнесмен (у) - Кто - бизнесмен ?
у = Алеша
В о п р о с ы
1. Как записываются факты на языке Пролог?
2. Как записываются вопросы на языке Пролог?
3. Как записываются правила в языке Пролог?
З а д а ч и
1. Опишите на языке Пролог данные о своей семье: о маме, папе, сестрах, братьях, дедушках и бабушках - кто кому приходится мамой и папой. Укажите вопросы для определения родственных отношений.
2. Опишите данные о своих друзьях с указанием их увлечений (кто что любит), занятий (кто чем занимается). Подберите правила для определения понятий:
а) сластена; д) спортсмен;
б) филателист; е) бизнесмен;
в) математик; ж) музыкант;
г) программист; з) мусорщик.
3. Опишите в форме фактов для себя и своих ближайших друзей-одноклассников данные об оценках по предметам:
а) литература; г) физкультура;
б) математика; д) информатика;
в) физика; е) история.
4. Подберите правила определения понятий:
а) математик; д) физик;
б) историк; е) лирик;
в) двоечник; ж) троечник.
г) отличник;