Представление знаний в интеллектуальных системах

Методическое пособие - Компьютеры, программирование

Другие методички по предмету Компьютеры, программирование

редставляют собой обобщающие знания об области экспертизы.

Правило(1)

По-русски: Если y - профессор факультета х и w студент(ка) факультета z при x?z, то y может служить внешним экзаменатором для w.

Логически: Проф (x,y)

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

Предложение-цель (1).

По-русски: Может ли Жак служить внешним экзаменатором для Мари?

Логически: Экзам(Жак_2. Мари_4).

Можно применять различные приемы для выработки стратегий доказательства теоремы.

16.Язык Prolog. Термы и объекты. Факты и элементарные вопросы

 

Термы и объекты

В Прологе объекты (т.е. элементы) универсума рассуждения представляются с помощью термов так же, как в логике. В силу того, что язык эти термы не интерпретирует, объекты сами являются термами - синтаксическими объектами одной из следующих категорий:

индивидные константы (атомы)

переменные

функции (функциональные термы), состоящие из имени функции и списка аргументов-термов

Синтаксис различает атомы, переменные и функции. Используемые соглашения сообразны конкретным применениям. Здесь мы используем синтаксис Си-Пролога. Однако выбор конкретной версии языка Пролог не влияет на различие между переменной (именем нарицательным) и константой (именем собственным).

Атом записывается тремя способами:

- как идентификатор, начинающийся со строчной буквы жаклин генрих_4 (допускается использование подчёркивания)

как число 123 1.23

как произвольную последовательность символов, расположенную между апострофами Что Вы говорите Больше нечего сказать

Переменная - это идентификатор, начинающийся с прописной буквы Х Имя Король_Франции

Функция - это имя функции, за которым следует список термов, помещённых в скобки и разделённых запятыми. Имя функции - это нечисловой атом.

автор(книга, 1987) f(X) Что ты говоришь?(штука)

На практике прологовская программа представляет собой некую действительность, а термы - реальные объекты. Например, при описании библиотеки атомами будут имена авторов и/или издателей, годы издания, названия и т.д., а функциями - издательства и/или книги:

издат(дюно, 1987) книга(жюль_верн, мишель_строгофф, издат(этцель, 1876))

Каждый атом - это отдельный объект, считающийся элементарным. Предпочтительны мнемонические идентификаторы, а не анонимные (вроде х2 и bb). То же относится и к функциональным термам: лучше взять издат(_,_), а не и(_,_). Отметим, что в программе на Прологе функциональный терм является структурой данных, сложным объектом, который можно эффективно построить или анализировать. Это не функция, сопоставляющая результат набору аргументов.

Данные (константы) Пролога - это термы, не имеющие переменных. В логике они называются индивидными термами (а также константными термами). Числовые атомы - это константы для программирования численных расчётов.

Факты и элементарные вопросы

Простые предикаты (атомарные формулы и/или предикатные формы) формальной логики, такие, как Автор(Эрнани,Гюго)принимают значения И или Л. Почти то же самое имеет место для фактов и вопросов Пролога, не содержащих переменных. Простой предикат Пролога записывается в виде функционального терма, например:

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

/* библио*/

книга(грэм, рассуждать, чтобы программировать ,издат(дюно,1986)).

книга(кондиляк, пролог, издат(дюно,1986)).

книга(дьедонне, математика, издат(эрман,1986)).

книга(гюго, отверженные, издат(пош,1984)).

книга(гюго, эрнани, издат(галлимар,1974)).

книга(хартман, параллельный паскаль, издат(шпрингер,1977)).

библиотекарь(эмиль).

начальник(эмиль, анри).

начальник(жозев, анри).

идёт_дождь.

Точка, стоящая после предиката, указывает на то, что рассматриваемое выражение является фактом. Первая строка - это комментарий: любая последовательность символов, записанная между парой ограничителей /* и */, при выполнении игнорируется. Каждый факт, содержащийся в программе, имеет соответствующее значение истинности и порождает (определяет) отношение между термами. Например, двухместное отношение (предикат) начальник установлено между термами эмиль и анри, а трёхместное отношение книга - для 6 троек термов и т.д. Последний факт в приведённом примере - идёт дождь - является нульместным отношением (не имеющим аргументов).

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

Из простых предикатов строят также вопросы, например: ? - начальник(эмиль, анри).

Это выражение нового факта не устанавливает, но система запрашивает о том, установлен или нет данный факт. Значение вопроса (т.е. ответ) зависит от БД. В нашем примере вопрос простой, переменные и правила отсутствуют. Значение есть И, если в БД содержится факт с предикатом вопроса. В противном случае значение есть Л. Всё это интуитивно ясно. На практике задаётся последовательность вопрос - ответ:

? - начальник(эмиль, анри).

- > да

Таким образом, простейшие программы на Прологе регистрируют элементарные факты в БД и отвечают на вопросы, связанные с этими фактами. Сама же БД определяет некие ?/p>