Информатика -продвинутый курс

       

МОДЕЛИРОВАНИЕ РАССУЖДЕНИЙ


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

Предикат - это конструкция вида P(t1, t2, ..., tn), выражающая какую-то связь между некоторыми объектами или свойствами объектов. Обозначение этой связи или свойства, Р,

называют «предикатным символом»; t1,

t2, .... tn обозначают объекты, связанные свойством (предикатом) Р

и называют термами.

Термы могут быть только трех следующих типов:

1) константа (обозначает индивидуальный объект или понятие);

2) переменная (обозначает в разное время различные объекты);

3) составной терм – функция f(t1, t2, … tn), имеющая в качестве своих аргументов m

термов t1, t2, … tm.

Примеры.

1. Предложение «Волга впадает в Каспийское море» можно записать в виде предиката

впадает (Волга, Каспийское море).



«Впадает» - предикатный символ; «Волга» и «Каспийское море» - термы-константы. Мы могли обозначить отношение «впадает» и объекты «Волга» и «Каспийское море» символами.

Вместо термов-констант можно рассматривать переменные:

впадает (Х, Каспийское море)

или

впадает (X,Y).

Это тоже предикаты.

2. Отношение х

+ 1 < у можно записать в виде предиката А(х,у). Предикатный символ А здесь обозначает то, что останется от x

+ 1 < у, если выбросить из этой записи переменные х и у.

Итак, предикат - это логическая функция, принимающая значения «истина» или «ложь» в зависимости от значений своих аргументов.
Количество аргументов у предиката называют его арностью.

Так, для наших примеров предикат «впадает» имеет арность 2 и при Х = «Волга», а Y = «Каспийское море» истинен, а при Х = «Дон», Y = «Бискайский залив» ложен. Предикат А в примере 2 также имеет арность 2, истинен при Х = 1, Y = 3 и ложен при X=3, Y=1.

Предикаты могут быть объединены в формулы с помощью логических связок (союзов): ^ («и», конъюнкция), v («или», дизъюнкция), ~ («не», отрицание), > («следует», импликация), - («тогда, и только тогда, когда», эквиваленция).

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

Математически строго формулы логики предикатов определяются рекурсивно:

1) предикат есть формула;

2) если А

и В - формулы, то А, А^В,АvВ, А>B, А-В - тоже формулы;

3) других формул не бывает.

Многие формулы логики предикатов требуют использования кванторов, определяющих область значений переменных - аргументов предикатов. Используются кванторы общности (перевернутое А от английского «All» - все) и квантор существования - (перевернутое Е от английского «Exists» - «существует»). Запись "x читается «для любого х», «для каждого х»; $х - «существует х»,

«хотя бы для одного х». Кванторы связывают переменные предикатов, на которые они действуют, и превращают предикаты в высказывания.

Таблица 1.12 Истинность связок предикатов (И - истина, Л - ложь)

А

В

А^В

AvB



А>В

А-В

И

И

Л

Л

И

Л

И

Л

И

Л

Л

Л

И

И

И

Л

Л

Л

И

И

И

Л

И

И

И

Л

Л

И

Пример.

Введем обозначения: А(х) - студент х учится отлично; В(х) - студент х получает повышенную стипендию. Теперь формула А (Иванов) > В (Иванов) означает: студент Иванов учится отлично, следовательно, студент Иванов получает повышенную стипендию, а формула с квантором общности (Vx) (A(x) —> В(х)) означает: каждый студент, который учится отлично, получает повышенную стипендию.



Из всевозможных формул нам потребуется только один их вид, называемый фразами Хорна.

Фразы Хорна содержат в общем случае импликацию и конъюнкцию предикатов А, В1, В2,. . . , Вп следующим образом: В1, В2,. . . Вп > А,

или в более удобных обозначениях:

А:-В1, В2,...Вn

(читается: А

если B1 и В2 и ... и Вп).

Очевидно, фраза Хорна является формой записи некоего правила, и в дальнейшем будет называться правилом. Предикат А называется заголовком или головой правила, а предикаты В1, В2,... ,Вп-

его подцелями.

Очевидно, что отдельный предикат является частным случаем фразы Хорна: А.

Другой частный случай фразы Хорна - правило без головы

:-В1, В2,...,Вп,

или

:-В.

Такая фраза Хорна называется вопросом. Мы будем записывать «: - В» в виде «? - В», а «:- В1, В2,.... Вп» в виде «? – В1, В2,.... Вп».

Поясним логический смысл такой формулы. Напомним, что импликация А: - В (В —> А) может быть выра-жена через отрицание и дизъюнкцию : ~BvА (проверьте это с помощью таблицы истинности). Значит, если отбросить А, останется только ~В - отрицание В. Формула < B1, ..., Вп

означает отрицание конъюнкции ~{B1^B2^...^Bn), что по закону де Моргана ~(X^Y) = (~X)v(~Y) равно (~B1)v(~B2) v ... v(~Bn) - дизъюнкции отрицаний.

Множество фраз Хорна применительно к некоторой проблемной области образует теорию (в логическом смысле).

Пример.

Рассмотрим предметную область: сдачу экзамена по некоторой дисциплине. Введем обозначения:

А - студент успешно сдает экзамен.

В - студент посещал занятия.

С - студент освоил учебный материал.

D - студент занимался самостоятельно.

Е - студент подготовил шпаргалку.

Введем знания о предметной области:

Студент успешно сдаст экзамен, если студент освоил учебный материал.

Студент освоил учебный материал, если студент посещал занятия и студент занимался самостоятельно. Студент посещал занятия. Студент занимался самостоятельно.

Форма логической записи:

А:-С;

C:-B,D;



В;

D.

В приведенном примере можно выполнить логический вывод. Так, из истинности фактов В

и D и правила С:-В, D следует истинность С, и из правила А:-С - истинность предиката А, т.е., студент успешно сдаст экзамен. Кроме того, правила А :-С и С:-В, D можно было бы переписать в виде А :-В, D.

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

Рассмотрим простейшую форму резолюции. Допустим, имеются «родительские» предложения

            отрицание: ~А                                              импликация: А :-В.

В результате одного шага резолютивного вывода получаем новое предложение:

В,

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

            допуская, что не       А

            и                                 А, если В

            выводим                    не В.

Еще более простой случай:

            отрицание:                ~А

            факт:                          А.

            Резольвента - противоречие.

В общем случае имеются родительские предложения

~(А1^ ... ^Аn)

Ak:-B1,...,Bm              1 £ k £ n.

В качестве резольвенты за один шаг вывода получается ~(A1^…^Ak-1 ^B1^…^Bm^Ak+1^…^An).

Таким образом, резолюция является подстановкой предикатов - подцелей B1,... Вп, вместо соответствующего предиката Ak из отрицания. Отрицание инициирует логический вывод и поэтому называется запросом (или вопросом) и обозначается А1, А2, ... , An.

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

Пример.

Пусть предикат дает (Х,Y,Z) означает, что «X дает Y некоторому объекту Z», а предикат получают (X, Y)



означает, что «Y получает Z». Пусть знания об этих отношениях выражаются предложениями

1) получает(вы,

сила):- дает (логика, сила, вы);

2) дает

(логика, сила, вы).

Задача, которую нужно решить, состоит в том, чтобы ответить на вопрос: получаете ли вы силу ?

Представим этот вопрос в виде отрицания -получает(вы, сила). Резолюция предложения 1 и отрицания приводит к ~дает

(логика, сила, вы), что вместе с фактом 2 приводит к противоречию. Следовательно, ответом исходной задачи является «да».

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

Рассмотрим это на примере.

Пример.

Рассмотрим следующие родительские предложения:

1) ~получает

(вы. У);

2) получает (X,

сила) :- дает (Z, сила, X).

Они содержат три переменные X,Y и Z, которые неявно находятся под действием квантора общности. Так, предложение 1 утверждает, что «для всех Y вы не получаете Y», а 2 - «для всех Z любой Х получает силу, если Z дает силу X».

Правило резолюции требует совпадения предиката из отрицания 1 и головы правила 2. Это означает, что переменные получают значения (конкретизируются) соответственно их месту в предложениях 1 и 2 следующим образом: Х = вы, Y = сила. Предикат получает (вы, сила) называется общим примером для предикатов получает(вы

Y) и получает (Х, сила).

Изложенные положения логики предикатов находят реализацию и дальнейшее развитие в языке программирования Пролог.


Содержание раздела