Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Инстр сред разр ИС.docx
Скачиваний:
22
Добавлен:
18.09.2019
Размер:
219.09 Кб
Скачать

4.2.3. Дедуктивный вывод в многоуровневой логике

Неотъемлемой частью интеллектуальных систем являются механизмы обработки знаний, одним из которых является дедуктивный вывод.

Рассмотрим процесс дедуктивного вывода более подробно. В дедуктивном выводе используются два алгоритма: алгоритм сколемизации и алгоритм унификации. Эти алгоритмы в MLL являются модификацией соответствующих алгоритмов в логике 1-го порядка.

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

4.2.3.1. Алгоритм сколемизации

Рассмотрим особенности алгоритма сколемизации в MLL. Алгоритм сколемизации основывается на следующих положениях.

А. Сколемовская функция содержит в качестве аргументов все переменные, которые связаны квантором  и которые расположены слева от квантора , за исключением переменной, которая является   предком переменной, связанной квантором .

Б.   предок и домен должны быть включены в сколемовскую функцию и в матрицу для процедуры унификации. Они сохраняются в форме (х/Х)//Y.

Поясним положение (А) на примере.

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

Рассмотрим формулу:

(x1//X) ( x0//x1) P(x1,x0) (5)

Формула (5) читается следующим образом: для любого объекта х1, который является частью объекта Х, (на рис.21 это а1, а2, а3), существует объект х0, который является частью объекта х1, ( на рис. 23 это b11 или b12 или b1k, если х1 есть а1,и b21 или b22 или b2n, если х1 есть а2, и b31 или b32 или b3m, если х1 есть а3), такой что P(х10).

В классическом алгоритме сколемизации х0 заменяется на функцию fc(x1), т.е. получим формулу с учетом положения (Б):

P(x1//X, fс(x1//X)//(x1//Х) ).

Иерархическая структура является фиксированной. Поэтому фиксированными являются и все структурные отношения в ней, и, следовательно, области определения термов. Функция fc(x1//X)//(x1//X) определена на множестве частей объекта, заданного переменной х1. Поэтому она не зависит непосредственно от переменной х1//Х. Следовательно, функция fс заменяется на «обобщенную» константу Bc, которой может быть любая константа b11 или b12 или b1k, если х1 есть а1, и b21 или b22 или b2n, если х1 есть а2, и b31 или b32 или b3m, если х1 есть а3, и на которую заменяется переменная х0 в классическом алгоритме сколемизации, если она связана квантором  и стоит на первом месте в префиксе. В результате получим формулу: P( x1//X, Bс//(x1//Х) ).

Отсюда следует, что при построении сколемовской функции для переменной х0 переменная х1 «мысленно» вычеркивается из префикса.

Это положение может быть распространено на произвольную формулу MLL. Пусть задана формула:

(x1//X1 )...(xn-1 //Xn-1 )(  xn //х1 ) P(x1 ,..,xn ) (6)

Применим классический алгоритм сколемизации к формуле (6). Получим формулу:

P(x1//X1,...,xn-1//Xn-1,f(x1//X1,...,xn-1//Xn-1)//(x1//X1)).



Рис. 21. Иерархическая структура

Функция f определена на множестве частей объекта, заданного переменной х1//Х1. Поэтому ее значение не зависит непосредственно от переменной х1//Х1, и следовательно, переменная хn в алгоритме сколемизации заменяется на функцию: f(x2//X2,...,xn-1 // Xn-1 )//(x1//X1 ).

Рассмотрим алгоритм сколемизации для модифицированного синтаксиса MLL.

Пусть формула представлена в виде: (θ1 (x1/X1)//Y1)( θ2 (x2/X2)//Y2)... (θr(xr/Xr)//Yr) P(x1,x2,..,xr), где θi{, }, Xi–сортность переменной хi, Yi –предок переменной хi, i=1..r, P – бескванторная формула (матрица). (В качестве Yi, i=1..r, может быть константа или переменная).

Шаг 1. Найти наименьший индекс i такой, что θ1, θ2,..., θi-1 все равны , а θi = .

Если такого i нет, то перейти к шагу 4. Если i=1, то xi заменяется на константу (@а/Хi)//Yi во всех вхождениях в матрицу и на @а во всех вхождениях хi в префикс в виде предка другой переменной.

Замечание. Специальный символ @ означает, что @а может быть любой константой сорта Хi, обозначающей часть объекта Yi.

Если i1, то перейти к шагу 3.

Шаг 2. Квантор θi =  вычеркивается. Перейти к шагу 1.

Шаг З. Все переменные с индексом до i сравнить с  предком i-й переменной.

Если совпадения нет, то взять новый (i-1)-местный функциональный символ fi. Переменная хi заменяется на сколемовскую функцию (fi(x1,x2,..,xi-1)/Хi)//Yi во всех вхождениях в матрицу и на функцию fi (x1,x2 ,...,xi-1 ) во всех вхождениях xi в префикс, и перейти к шагу 2.

Если имеются совпадения (т.е. имеется переменная xj (j < i) под квантором , которая является и предком заменяемой переменной) и если i-2 равняется нулю, то хi заменяется на (@а/Хi)//хj во всех вхождениях в матрицу и на @а во всех вхождениях в префикс как  - предок другой переменной, то перейти к шагу 2.

Если i-2 не равняется нулю, то взять (i-2)-местный функциональный символ, не встречавшийся в формуле. Переменная xi заменяется на сколемовскую функцию (fi(x1,x2,...,xi-2)/Хi)//xj во всех вхождениях в матрицу и на функцию fi (x1 ,x2 ,...,xi-2 ), где хkxj , k=1i-2 во всех вхождениях в префикс как предок другой переменной, и перейти к шагу 2.

Шаг 4. Если кванторов  нет, то стоп. Если в префиксе формулы в качестве   предков выступают сколемовские функции, то аргументам функции приписываются их домены и  предки. Всем переменным, стоящим под квантором , в матрице формулы приписываются их домены и  предки, за исключением случая, когда переменная является   предком другой переменной.

Кванторы  опускаются, предполагая, что они существуют.

Стоп.

Пример 2. Рассмотрим пример использования алгоритма. Предположим, что объекты X,Y,Z имеют в качестве компонентов несколько объектов. Приведем последовательность шагов алгоритма сколемизации, примененного к формуле:

((x1/D1)//X) ((y1/D2)//Y)((y0/D3)//y1)((x0/D4)//x1) ((z1/D5)//Z) P(x1,x0,y1,y0,z1)

Шаг 1. i=2

Шаг З. ((x1/D1)//X)( (y1/D2)//Y)((y0/D3)//f1(x1)) ((x0/D4)//x1)((z1/D5)//Z)

P(x1,x0,(f1(x1)/D2)//Y,y0,z1)

Шаг 2. ((x1/D1)//X)((y0/D3)//f1(x1))((x0/D4)//x1)((z1/D5)//Z) P(x1,x0,(f1(x1)/D2)//Y,y0,z1)

Шаг 1. i=3

Шаг 3. ((x1/D1)//X)((y0/D3)//f1(x1))((x0/D4)//x1)((z1/D5)//Z) Р(x1,(f2(y0)/D4)//x1,(f1(x1)/D2)//Y,y0,z1)

Шаг 2. ((x1/D1)//X)((y0/D3)//f1(x1))((z1/D5)//Z) P(x1,(f2(y0)/D4)//x1,(f1(x1)/D2)//Y,y0,z1)

Шаг 1. i нет

Шаг 4.

P((x1/D1)//X, (f2((y0/D3)//f1((x1/D1)//X))/D4)//x1, (f1((x1/D1)//X)/D2)//Y, (y0/D3)//f1((x1/D1)//X), (z1/D5)//Z)

Стоп.