Элементы языка Пролог

Пролог — это одна из моделей систем искусственного интеллекта, способных воспроизводить логические умозаключения. Кроме того, Пролог — это язык для описания фактов, правил и процедур логи­ческого вывода. О языке Пролог обычно говорят, что он представляет язык логического программирования.

Основной особенностью системы Пролог являются встроенные процедуры логического вывода, имитирующие способность человечес­кого интеллекта выполнять логические умозаключения. Какая лек­сика используется при этом — русского, английского или других языков — играет второстепенную роль, несущественную для ЭВМ, но важную для тех, кто будет работать и вести диалог с машиной.

Основная идея Пролога как языка записи фактов, вопросов и правил заключается в том, что они записываются в форме предика­тов математической логики. Все они интерпретируются ЭВМ строго в соответствии с законами математической логики и ни чем более.

Основные конструкции языка Пролог — это факты, вопросы и правила. Все эти три конструкции записываются в форме преди­катов и их комбинаций. Рассмотрим правила их записи на языке Пролог.

Факты — это конкретные сведения о ком-то либо о чем-то. Факты на языке Пролог записываются в форме предикатов с конкретными аргументами-значениями. Примеры записи фактов на Прологе:

папа (Вова, Лена); — Вова — папа Лены

любит (Лена, музыка); — Лена любит музыку

оценка (Лена, русский, 5); — У Лены 5 по русскому языку

Вопросы на Прологе — это запросы к совокупности данных или процедурам, хранящимся, в ЭВМ. Запись вопросов начинается со знака ?, за которым записывается предикат или группа предикатов, разделяемых запятыми. Примеры записи простых вопросов на языке Пролог:

? папа (х, Лена) — Кто папы Лены?

х = Вова

? мама (х, у) — Кто у кого — мама ?

НЕТ

? оценка (х, _ , 5) — Кто имеет оценки 5?

х = Лена

Здесь буквы ху — обозначения переменных, а числа и слова — конкретные значения аргументов в соответствующих предикатах. Знак подчеркивания «_» представляет неопределенное значение, которое несущественно для ответа на вопросы.

При записи сложносоставных вопросов в языке Пролог можно указывать несколько условий-предикатов, разделяемых запятыми. Запятая в этих сложносоставных вопросах играет роль логической связки и. Примеры сложносоставных вопросов:

 

? мама (х, у), мама (у, Оля) — Кто мама у мамы Оли?

х = Зина у = Люба

? мама (х, у), папа (у, Оля) — Кто мама у папы Оли?

НЕТ

Правила в Прологе — это правила логического вывода. Слева в правилах записывается следствие, а справа — предусловие. Пред­условие может состоять из одного или нескольких предикатов, раз­деляемых запятыми. Примеры записи правил вывода на Прологе:

студент (х) ¬ занятие (х, учеба); — Студент — тот, кто занят учебой;

нумизмат (х) ¬ собирает (х, монеты); — Нумизмат — тот, кто собирает монеты.

Примеры вопросов на использование этих правил:

? студент (х) — Кто — студент?

х = Алеша

х = Лена

? нумизмат (у) — Кто — нумизмат?

у = Алеша

В правилах со сложносоставными определениями запятая также играет роль логической связки и, объединяя условия, образующие определение. Такого рода правила позволяют создавать самые слож­ные и изощренные базы знаний по самым различным предметным областям и применениям.

Приведем пример составления базы знаний о друзьях. Будем раз­личать друзей по их именам: Алеша, Оля и т. д. Включим в базу дан­ных следующие сведения о друзьях:

что им нравится;

что они коллекционируют;

чем они занимаются;

какие оценки они имеют.

При такой постановке проблемы и предметная область, и круг основных вопросов очерчены достаточно четко. Для записи фактов на Прологе примем следующие предикаты:

нравится (<имя>, <вещь>);

собирает (<имя>, <вещь>);

занимается (<имя>, <предмет>);

оценка (<имя>, <предмет>, <балл>);

Вместо <имя>, <вещь>, <предмет>, <балл> при составлении базы знаний необходимо подставить конкретную информацию о конкрет­ных друзьях. Записывать имена будем с большой буквы в имени­тельном падеже. Далее, <вещь> и <предмет> — это существительные в именительном падеже, <балл> — целое число от 1 до 5.

Пусть об Оле и Алеше известно следующее:

1. Оле нравится музыка. Она собирает фотографии любимых пев­цов. Занимается домоводством. Оля имеет 4 по русскому языку и 5 по алгебре.

2. Алеше нравится история, он собирает монеты, естественно, име­ет 5 по истории, занимается в археологическом кружке.

Соответствующая база данных на языке Пролог:

нравится (Оля, музыка); — Оле нравится музыка

нравится (Алеша, история); — Алеше нравится история

собирает (Оля, фотографии); — Оля собирает фотографии

собирает (Алеша, монеты); — Алеша собирает монеты

собирает (Алеша, значки); — Алеша собирает значки

оценка (Оля, русский, 4); — Оля имеет 4 по русскому языку

занимается (Алеша, бизнес); — Алеша занимается бизнесом

оценка (Оля, алгебра, 5); — Оля имеет оценку 5 по алгебре

оценка (Алеша, история, 5); — Алеша имеет оценку 5 по истории

К составленной базе данных можно обращаться с самыми разными вопросами об интересах, занятиях, склонностях и успехах в учебе. Примеры самых простых вопросов и ответов, получаемых от ЭВМ:

? занимается (Алеша, футбол) — Занимается ли Алеша футболом?

нет

? нравится (Оля, музыка) — Нравится ли Оле музыка?

да

 

Использование в вопросах переменных позволяет получать от ЭВМ информацию, хранящуюся в базе данных. В ответ на такие вопросы выводятся все возможные варианты ответов. Например:

? нравится (х, у) — Кому что нравится?

х = Оля у = музыка

х = Алеша у = история

Если какая-то часть информации по той или иной причине не нужна, то вместо соответствующей переменной в вопросе ставится знак подчеркивания «_»:

? собирает (_ , х) — Что собирают друзья?

х = фотографии

х = монеты

х = значки

Наконец, в вопросах можно одновременно использовать как пе­ременные, так и конкретные значения. Например:

? занимается (х, музыка) — Кто занимается музыкой ?

нет

? занимается (Алеша, у) — Чем занимается Алеша ?

у = бизнес

? собирает (х, монеты) — Кто собирает монеты ?

х = Алеша

? оценка (х, _ , 5) — Кто имеет пятерки?

х = Оля

х = Алеша

Примеры сложносоставных вопросов:

1. Кто занимается бизнесом и собирает монеты?

? занимается (х, бизнес), собирает (х, монеты)

х = Алеша

2. Какие оценки имеет тот, кто собирает монеты?

? собирает (х, монеты), оценка (х, р, z)

х = Алеша

р = история

z = 5

К составленной базе данных можно добавить следующие правила вывода:

книголюб (х) ¬ нравится (х, книги), — Книголюб — тот, кто

собирает (х, книги) любит и собирает книги

бизнесмен (х) ¬ собирает (х, монеты), — Бизнесмен — тот, кто

занятие (х, бизнес) собирает монеты и занима­ ется бизнесом

Примеры использования правил-определений:

? книголюб (х) — Кто — книголюб?

НЕТ

? бизнесмен (у) — Кто — бизнесмен ?

у = Алеша

Добавить комментарий