Представление знаний в интеллектуальных системах
Методическое пособие - Компьютеры, программирование
Другие методички по предмету Компьютеры, программирование
редставляют собой обобщающие знания об области экспертизы.
Правило(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>