Алгоритмы обработки запросов к дедуктивным базам данных и реализация алгоритма QSQ - page 8

А.И. Выборнов, А.В. Дубанов
8
Особенности реализации алгоритма QSQ.
Для реализации на
языке Java авторы модифицировали алгоритм QSQ следующим об-
разом.
Пусть алгоритм QSQ принимает на вход запрос
request
(в даль-
нейшем будем употреблять обозначение
request
как для запроса, так
и для подзапроса). Если
Q request
, то в множество
P
добавляются
все факты БД, унифицируемые с
.
request
Затем обрабатываются все
правила, голова которых унифицируема с
.
request
Процесс обработ-
ки правил повторяется до тех пор, пока не перестанет изменяться
множество
P
.
Процесс обработки правила состоит в следующем. Сначала по-
рождается список подстановок
0
,
list
состоящий из единственной пу-
стой подстановки. Затем последовательно обрабатываются все пре-
дикаты правила.
Возьмем предикат
i
pred
и применим к нему каждую из подстано-
вок списка
1
.
i
list
В результате получим множество предикатов
.
i
temp
Найдем множество фактов, унифицируемых с хотя бы одним предика-
том из
.
i
temp
В результате получаем множество ответов
i
ans
. Сопо-
ставим каждый факт из
i
ans
c
i
pred
и получим список подстановок
.
i
list
Затем таким же образом обработаем следующий предикат прави-
ла
1
,
i
pred
+
и так до тех пор, пока не будут обработаны все предикаты
этого правила. Схема данного процесса показана на рис. 2.
Рис. 2.
Обработка предикатов правила
1,2,3,4,5,6,7 9,10,11,12,13,14
Powered by FlippingBook