Скачиваний:
46
Добавлен:
11.03.2015
Размер:
650.62 Кб
Скачать

Множество рассогласований

Рассмотрим сначала процедуру нахождения множества рассогласований D непустого множества

выражений W = fE1; : : : ; Ek g. 1 Пусть сначала D = ?.

2Найти первую слева позицию, на которой не для всех выражений из W стоит´ один и тот же символ.

3Для каждого Ei 2 W : добавить в D подвыражение из Ei , которое начинается с символа, занимающего найденную позицию.

Пример

Для W =

P

x; f (y; z); a ;

P(x; a; y); P x; g

h k(x)

; f (a; x)

первая

 

 

 

 

 

 

 

позиция, на которой не все выражения состоят из одинаковых

символов пятая.

n o

Находим множество рассогласований: D = f (y; z); a; g h k(x) .

51 / 101

Множество рассогласований

Рассмотрим сначала процедуру нахождения множества рассогласований D непустого множества

выражений W = fE1; : : : ; Ek g. 1 Пусть сначала D = ?.

2Найти первую слева позицию, на которой не для всех выражений из W стоит´ один и тот же символ.

3Для каждого Ei 2 W : добавить в D подвыражение из Ei , которое начинается с символа, занимающего найденную позицию.

Пример

Для W =

P

x; f (y; z); a ;

P(x; a; y); P x; g

h k(x)

; f (a; x)

первая

 

 

 

 

 

 

 

позиция, на которой не все выражения состоят из одинаковых

символов пятая.

n o

Находим множество рассогласований: D = f (y; z); a; g h k(x) .

52 / 101

Алгоритм унификации

Алгоритм унификации можно записать следующим образом:

1

Пусть сначала k = 0,

Wk = W , svk = e.

2

Если Wk единичный дизъюнкт, то выдать svk наиболее

 

общий унификатор для W и остановиться.

 

Иначе найти множество Dk рассогласований для Wk .

3

Если существуют такие элементы (термы) vk ; tk 2 Dk , что

 

vk переменная, не входящая в tk , то найти lk = ftk =vk g

 

и перейти к шагу 4.

 

 

Иначе выдать, что W неунифицируемо и остановиться.

4

Пусть svk+1 = svk lk ,

Wk+1 = Wklk

 

(Заметим, что Wk+1 = W svk+1 ).

5

Присвоить k := k + 1 и перейти к шагу 2.

53 / 101

Алгоритм унификации

Алгоритм унификации можно записать следующим образом:

1

Пусть сначала k = 0,

Wk = W , svk = e.

2

Если Wk единичный дизъюнкт, то выдать svk наиболее

 

общий унификатор для W и остановиться.

 

Иначе найти множество Dk рассогласований для Wk .

3

Если существуют такие элементы (термы) vk ; tk 2 Dk , что

 

vk переменная, не входящая в tk , то найти lk = ftk =vk g

 

и перейти к шагу 4.

 

 

Иначе выдать, что W неунифицируемо и остановиться.

4

Пусть svk+1 = svk lk ,

Wk+1 = Wklk

 

(Заметим, что Wk+1 = W svk+1 ).

5

Присвоить k := k + 1 и перейти к шагу 2.

54 / 101

Алгоритм унификации

Алгоритм унификации можно записать следующим образом:

1

Пусть сначала k = 0,

Wk = W , svk = e.

2

Если Wk единичный дизъюнкт, то выдать svk наиболее

 

общий унификатор для W и остановиться.

 

Иначе найти множество Dk рассогласований для Wk .

3

Если существуют такие элементы (термы) vk ; tk 2 Dk , что

 

vk переменная, не входящая в tk , то найти lk = ftk =vk g

 

и перейти к шагу 4.

 

 

Иначе выдать, что W неунифицируемо и остановиться.

4

Пусть svk+1 = svk lk ,

Wk+1 = Wklk

 

(Заметим, что Wk+1 = W svk+1 ).

5

Присвоить k := k + 1 и перейти к шагу 2.

55 / 101

Алгоритм унификации

Алгоритм унификации можно записать следующим образом:

1

Пусть сначала k = 0,

Wk = W , svk = e.

2

Если Wk единичный дизъюнкт, то выдать svk наиболее

 

общий унификатор для W и остановиться.

 

Иначе найти множество Dk рассогласований для Wk .

3

Если существуют такие элементы (термы) vk ; tk 2 Dk , что

 

vk переменная, не входящая в tk , то найти lk = ftk =vk g

 

и перейти к шагу 4.

 

 

Иначе выдать, что W неунифицируемо и остановиться.

4

Пусть svk+1 = svk lk ,

Wk+1 = Wklk

 

(Заметим, что Wk+1 = W svk+1 ).

5

Присвоить k := k + 1 и перейти к шагу 2.

56 / 101

Алгоритм унификации

Алгоритм унификации можно записать следующим образом:

1

Пусть сначала k = 0,

Wk = W , svk = e.

2

Если Wk единичный дизъюнкт, то выдать svk наиболее

 

общий унификатор для W и остановиться.

 

Иначе найти множество Dk рассогласований для Wk .

3

Если существуют такие элементы (термы) vk ; tk 2 Dk , что

 

vk переменная, не входящая в tk , то найти lk = ftk =vk g

 

и перейти к шагу 4.

 

 

Иначе выдать, что W неунифицируемо и остановиться.

4

Пусть svk+1 = svk lk ,

Wk+1 = Wklk

 

(Заметим, что Wk+1 = W svk+1 ).

5

Присвоить k := k + 1 и перейти к шагу 2.

57 / 101

Алгоритм унификации

Алгоритм унификации можно записать следующим образом:

1

Пусть сначала k = 0,

Wk = W , svk = e.

2

Если Wk единичный дизъюнкт, то выдать svk наиболее

 

общий унификатор для W и остановиться.

 

Иначе найти множество Dk рассогласований для Wk .

3

Если существуют такие элементы (термы) vk ; tk 2 Dk , что

 

vk переменная, не входящая в tk , то найти lk = ftk =vk g

 

и перейти к шагу 4.

 

 

Иначе выдать, что W неунифицируемо и остановиться.

4

Пусть svk+1 = svk lk ,

Wk+1 = Wklk

 

(Заметим, что Wk+1 = W svk+1 ).

5

Присвоить k := k + 1 и перейти к шагу 2.

58 / 101

Алгоритм унификации

Алгоритм унификации можно записать следующим образом:

1

Пусть сначала k = 0,

Wk = W , svk = e.

2

Если Wk единичный дизъюнкт, то выдать svk наиболее

 

общий унификатор для W и остановиться.

 

Иначе найти множество Dk рассогласований для Wk .

3

Если существуют такие элементы (термы) vk ; tk 2 Dk , что

 

vk переменная, не входящая в tk , то найти lk = ftk =vk g

 

и перейти к шагу 4.

 

 

Иначе выдать, что W неунифицируемо и остановиться.

4

Пусть svk+1 = svk lk ,

Wk+1 = Wklk

 

(Заметим, что Wk+1 = W svk+1 ).

5

Присвоить k := k + 1 и перейти к шагу 2.

59 / 101

Алгоритм унификации

Алгоритм унификации можно записать следующим образом:

1

Пусть сначала k = 0,

Wk = W , svk = e.

2

Если Wk единичный дизъюнкт, то выдать svk наиболее

 

общий унификатор для W и остановиться.

 

Иначе найти множество Dk рассогласований для Wk .

3

Если существуют такие элементы (термы) vk ; tk 2 Dk , что

 

vk переменная, не входящая в tk , то найти lk = ftk =vk g

 

и перейти к шагу 4.

 

 

Иначе выдать, что W неунифицируемо и остановиться.

4

Пусть svk+1 = svk lk ,

Wk+1 = Wklk

 

(Заметим, что Wk+1 = W svk+1 ).

5

Присвоить k := k + 1 и перейти к шагу 2.

60 / 101