Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ИИС

.pdf
Скачиваний:
201
Добавлен:
12.03.2016
Размер:
5.88 Mб
Скачать

понимают вступление к литературному произведению. Наконец, существует третье значение этого слова, являющееся аббревиатурой. Оно получено из фразы ПРОграммирование в ЛОГике. На этом значении слова "пролог" мы и остановимся.

Связь между логикой и программированием впервые проявилась в процессе формализации математики. Оказалось, что между вычислениями и доказательствами существует взаимодействие, состоящее в том, что всякое доказательство задает построение или вычисление того объекта, существование которого доказывается. С другой стороны, развитие самого программирования и усложнение реальных программ привели к необходимости формально выразить и доказать их свойства. Для этого используется математическая логика. Концепция логического программирования является следствием сближения логики и программирования. Свое практическое воплощение она получила в языке ПРОЛОГ.

Появившись в начале 70-х годов в качестве экспериментальной разработки лабораторий искусственного интеллекта университетов Марселя и Эдинбурга ПРОЛОГ на протяжении почти десяти лет оставался известным лишь узкому кругу специалистов. Однако, тот факт, что логическое программирование и сам ПРОЛОГ были положены в основу японского проекта ЭВМ пятого поколения, привлек к этому языку всеобщее внимание.

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

40

программирования, которые требуют описания того как должен быть вычислен результат, или другими словами, требуют описания процедуры решения задачи. Поэтому, кстати, традиционные языки программирования: Ада, Паскаль, Фортран - принято называть процедурными, а Пролог непроцедурным языком. Система Пролог-Д - реализация концепции логического программирования для учебных персональных ЭВМ.

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

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

Для запуска системы необходимо задать вопрос. Вопросэто факт, которому предшествует символ "?". База знаний и вопрос образуют программу на языке Пролог-Д. Следовательно, программирование на Прологе-Д - это умение создать систему фактов и правил, характеризующих решаемую задачу и умение задать нужный вопрос к этой системе.

Принципы работы языка ПРОЛОГ.

Для пояснения основных концепций языка ПРОЛОГ рассмотрим задачу, решение которой выполним с помощью обратной цепочки рассуждений. Пусть задано правило:

41

ЕСЛИ мужчина по имени Х со своей матерью по имени М находятся в комнате,

И женщина по имени Y со своей матерью по имени М находятся в комнате,

ТО мужчина по имени Х и женщина по имени Y - брат и сестра.

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

Таблица 1

 

 

Таблица 2

 

 

 

 

 

 

 

 

Имена

Имена

их

Имена

Имена

их

мужчин

матерей

 

женщин

матерей

 

 

 

 

 

 

 

Дэниел

Диана

 

Энн

Лори

 

 

 

Ларри

Лори

 

Лаура

Ширли

 

Майкл

Бонни

 

Сьюзи

Бонни

 

Пит

Джейн

 

 

 

 

 

 

 

 

 

 

Просмотрев таблицы, можно предположить, что братом и сестрой могут быть:

42

Ларри и Энн (мать обоих носит имя Лори) и Майкл и Сьюзи (мать обоих носит имя Бонни).

Попробуем представить логику работы программы. Прежде всего предположим, что часть правила, идущая за словом ТО, верна и действительно существуют мужчина Х и женщина Y, приходящиеся друг другу братом и сестрой. Выполним обратную цепочку рассуждений исходя из истинности такого заключения. Подтвердить истинность заключения можно, доказав истинность каждого из условий, входящих в правило. Первое условие гласит: ―Мужчина по имени Х со своей матерью по имени М находятся в комнате‖. Сначала попытаемся отыскать имена для мужчины Х и его матери М в табл.1. Это легко сделать, выбрав первую же строчку, т.е. Х присвоим значение ―Дэниел‖, а М - значение ―Диана‖:

Мужчина по имени Дэниел со своей матерью по имени Диана находятся в комнате.

Таблица 1

 

 

Таблица 2

 

 

 

 

 

 

 

 

Имена

Имена

их

Имена

Имена

их

мужчин

матерей

 

женщин

матерей

 

 

 

 

 

 

 

Дэниел

Диана

 

Энн

Лори

 

 

 

 

Лаура

Ширли

 

 

 

 

Сьюзи

Бонни

 

 

 

 

 

 

 

Теперь нужно попытаться доказать истинность второго условия правила: «Женщина по имени Y со своей матерью по имени М находятся в комнате». Но значение Муже выбраноДиана, и, следовательно, нужно найти в табл.2 имя женщины,

43

чью мать зовут Диана. Но имени Диана нет в правой половине табл. 2. Значит, нужно вернуться назад и для первого условия правила отыскать в табл. 1 другие значения для Х и М. Выберем следующую строку с именами Ларри и Лори, то есть присвоим значения:

Х = Ларри,

М = Лори.

Таблица 1

 

 

Таблица 2

 

 

 

 

 

 

 

 

Имена

Имена

их

Имена

Имена

их

мужчин

матерей

 

женщин

матерей

 

 

 

 

 

 

 

Дэниел

Диана

 

Энн

Лори

 

Ларри

Лори

 

Лаура

Ширли

 

 

 

 

Сьюзи

Бонни

 

 

 

 

 

 

 

Теперь для подтверждения второго условия правила в табл. 2 нужно найти имя женщины, мать которой носит имя Лори. Из табл. 2 видно, что это Энн:

Y = Энн

Обратившись к части ТО правила, можно заключить, что Ларри и Энн брат и сестра.

Подытожим выполненные действия.

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

2.Подтверждение истинности первого условия.

44

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

4.Подтверждение истинности второго условия.

5.Сделать это не удалось, так как во второй таблице не оказалось подходящих данных.

6.Пришлось вернуться назад и попытаться добиться истинности первого условия, а затем и второго с новыми значениями входящих в них переменных.

7.С новыми значениями переменных Х и Y последняя цель была успешно достигнута.

8.Заключение в части ТО правила оказалось истинным при новых выбранных значениях переменных.

Представление правил в языке ПРОЛОГ.

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

Правила на языке ПРОЛОГ записывается в виде предложений. Для выше рассматриваемого примера предложение имеет вид (рис.1.3).

45

Рис.1.3. Правило в языке ПРОЛОГ.

На выше представленном примере рассмотрим синтаксис и некоторые свойства языка ПРОЛОГ.

1.Полная запись правила на языке ПРОЛОГ называется предложением. В языке существует два типа предложений: для записи правил и для записи фактов (предложения для записи фактов будут рассмотрены позднее). Приведенное выше предложение - это предложение для записи правил.

2.Часть предложения языка, соответствующая части ТО правила, записывается слева от знака ―:-‖ и называется

заголовком правила: brother-sister(X, Y, М)):-

3.Часть ЕСЛИ правила в предложении языка записывается справа от знака ―:-‖. Предикаты male(X,M), female(Y,M)и называется телом предложения.

4.Тело предложения состоит из отдельных частей, разделенных запятыми. Каждая часть в теле предложения

46

называется целью. Запятая, разделяющая цели в предложении, имеет смысл логическогоИ.

5.Все предложения языка ПРОЛОГ заканчиваются точкой.

6.Слова, находящиеся до открывающейся левой скобки, т.е.

слова brother-sister, male, female, называются предикатами.

Предикаты всегда начинаются со строчной буквы.

7.Слова, взятые в круглые скобки и идущие следом за именем предиката, называются аргументами. Для предиката male аргументом являются переменные X и M.

8.Символы ―:-‖ в языке имеют смысл логического ЕСЛИ.

Используя это правило и факты, собранные в табл.1 и табл.2, напишем программу на языке PROLOG, т.е. в сущности создадим базу знаний:

male(Дэниел,Диана). male(Ларри,Лори). male(Майкл,Бонни). male(Пит,Джейн). female(Энн,Лори). female(Лаура,Лирли). female(Льюзи,Бонни).

brother-sister(X, Y, М):- male(X,M), female(Y,M).

В предикате brother-sister аргументы X, Y, М могут принимать значения имен предполагаемых брата и сестры и их матери соответственно. Предикат male эквивалентен утверждению ―X - это имя мужчины, мать которого носит имя М‖, а предикат female - утверждению ― Y - это имя женщины, мать которой носит имя М‖. Введя эту программу

47

в компьютер, пользователь может приступить к диалогу с ней. PROLOG выдает на терминал символ приглашения к работе ―?‖, после которого пользователь может ввести вопрос:

? - brother-sister(X, Y, М).

Программа выведет ответ:

Х = Ларри

Y = Энн

М = Лори

Таким образом, будет установлено родство Энн и Ларри, поскольку у них одна и та же мать, носящая имя Лори.

48

Глава 2. ПРЕДСТАВЛЕНИЕ ЗНАНИЙ. 2.1. Данные, знания и представление знаний.

Данные, знания и база знаний.

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

Данные — это отдельные факты, характеризующие объекты, процессы и явления предметной области, а также их свойства.

При обработке на ЭВМ данные трансформируются, условно проходя следующие этапы:

D1 — данные как результат измерений и наблюдений;

D2 — данные на материальных носителях информации (таблицы, протоколы, справочники);

D3 — модели (структуры) данных в виде диаграмм, графиков, функций;

D4 — данные в компьютере на языке описания данных;

D5 — базы данных на машинных носителях информации.

Знания— это закономерности предметной области (принципы, связи, законы), полученные в результате практической деятельности и профессионального опыта, позволяющие специалистам ставить и решать задачи в этой области.

49