Московский государственный технологический университет «Станкин»
Опубликован: 18.05.2005 | Доступ: свободный | Студентов: 4953 / 957 | Оценка: 3.93 / 3.84 | Длительность: 11:45:00
ISBN: 978-5-9556-0024-6
Специальности: Программист
Лекция 2:

Системы представления знаний

< Лекция 1 || Лекция 2: 12345 || Лекция 3 >

Исчисления предикатов

Традиционная булева алгебра и исчисление высказываний [ 2.3 ] не всегда подходят для выражения логических рассуждений, проводимых людьми, более удобен для этого язык логики предикатов. Под исчислением предикатов понимается формальный язык для представления отношений в некоторой предметной области. Исчисление предикатов подробно обсуждается в ряде книг по теории ИИ [ 1.1 ] , [ 1.6 ] , [ 2.3 ] . Основное преимущество исчисления предикатов - хорошо понятный мощный механизм математического вывода, который может быть непосредственно запрограммирован. Дальнейшее изложение ведется с учетом того, что читатель знаком с основами булевой алгебры.

Предикатом называют предложение, принимающее только два значения: "истина" или "ложь". Для обозначения предикатов применяются логические связки между высказываниями: \neg - не, \vee - или, \wedge - и, \supset - если, а также квантор \exists существования и квантор всеобщности \forall

\exists x(\dots ) - существует такой x, что ...

\forall x(\dots ) - для любого x

Таким образом, логика предикатов оперирует логическими связками между высказываниями, например, она решает вопросы: можно ли на основе высказывания A получить высказывание B и т.д.

Рассмотрим некоторые примеры. Высказывание "у каждого человека есть отец" можно записать:

\forall x \exists y (человек(x) \supset  отец(y,x))

Выражение "Джон владеет красной машиной" записывается, например, так:

\exists x ( владеет(Джон, x) \supset  машина(x) \wedge  красный(x))

Рассмотрим вывод, дающий заключение на основе двух предпосылок:

Предпосылка 1: Все люди смертны

\forall x (человек(x) \supset  смертен(x))
\\
\forall x (p(x) \supset  q(x))

Предпосылка 2: Сократ - человек

p(a)

Заключение: Сократ - смертен

Смертен(Сократ) 
q(a)

Если обозначить через f функцию одного аргумента, то логическая формула для этого высказывания будет иметь вид:

\forall x (f(x) \supset  q(x))

Алфавит логики предикатов состоит из элементов (символов):

x, y, z, u, v, w - переменные;

a, b, c, d, e - константы;

f, g, h - функциональные символы;

p, q, r, s, t - предикатные символы;

\neg, \vee, \wedge, \supset, \forall, \exists - логические символы.

Запишем на языке исчисления предикатов некоторое выражение:

\exists y \forall x (человек(x) \supset  отец(y,x))

Что означает записанное выражение? Ответ очевиден: "у всех людей общий отец".

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

Даны следующие факты:

  1. "Иван является отцом Михаила" - отец(a,b)
  2. "Петр является отцом Василия" - отец(c,d)
  3. "Иван и Петр являются братьями" -
    \exists w (брат(a,c) \supset  отец(w,a) \wedge  отец(w,c))

    Даны следующие определения:

  4. "Брат отца является дядей" -
    \exists y (дядя(x,u) \supset  отец(y,u) \wedge  брат(y,x))
  5. "Сын дяди является двоюродным братом" -
    \exists x (дв.брат(z,u) \supset  дядя(x,u) \wedge  отец(x,z))

    Требуется доказать, что "Михаил и Василий являются двоюродными братьями":

  6. \exists x \exists y (дв.брат(b,d) \supset  отец(y,b) \wedge  брат (y,x) \wedge  отец(x,d))

Делаем подстановки y = Иван, b = Михаил и x = Петр, d = Василий, видим, что предикаты 1, 2, 3 дают правильное предложение 6.

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

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

\exists P (P(Джон) \wedge  качество(P) \supset  P = честность)

На этом мы закончим знакомство с этой моделью и вернемся к ней в следующей лекции при рассмотрении правил вывода, принципа резолюции и методов поиска на основе исчисления предикатов.

< Лекция 1 || Лекция 2: 12345 || Лекция 3 >
Дмитрий Черепанов
Дмитрий Черепанов

Неоднократно находил ошибки в тестах, особенно в экзаменационных вопросах, когда правильно данный ответ на вопрос определялся в итоге как не правильно отвеченный... Из-за этого сильно страдает конечный бал! Да еще в заблуждение студентов вводит! Они-то думают, что это они виноваты!!! Но они тут не причем! Я много раз проверял ответы на некоторые такие "ошибочные" вопросы по нескольким источникам - результат везде одинаковый! Но ИНТУИТ выдавал ошибку... Как это понимать?

Из-за подобных недоразумений приходиться часами перерешивать экзамен на отличную оценку...!!!

Исправьте, пожалуйста, такие "ошибки"...

Анжелика Шлома
Анжелика Шлома

Огромная просьба сделать проще тесты, это просто ужас какой-то! Слишком сложно!