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