Я пытаюсь на компьютере АЛГОРИТМ ЗАКРЫТИЯ найти AE + (замыкание) по набору FD F = {A -> D, AB -> E, BI -> E, CD -> I, E --> C}.
Этот алгоритм LINCLOSURE:
LINCLOSURE(X, I;*)
1. Initialization
for each FD W 4 ZinFdobegin
COUNT[W - Z] := ) WI;
for each attribute A in W do add W - Z to LIST[A ]
end;
NEWDEP : = x; UPDATE : = X.
2. Computation
while UPDATE # @ do begin
choose an A in UPDATE;
UPDATE := UPDATE - A;
for each FD W - Z in LIST[A] do begin
COUNT[ w - Z] := COUNT[W - Z] - 1;
if COUNT[ W - Z] = 0 then begin
ADD := Z - NEWDEP,
NEWDEP := NEWDEP U ADD;initialization= UPDATE U ADD
end
end
end.
3. retum(NEWDEP).
После фазы инициализации я получил
NEWDEP = AE UPDATE =AE.
LIST[A] = {A --> D, AB --> E}
LIST[B] = {AB --> E, BI--> E}
LIST[I] = {BI --> E}
LIST[C] = {CD --> I}
LIST[D] = {CD --> I}
LIST[E] = {E --> C}
После этой начальной фазы вычисления:
while AE neq null
choose an A in AE
UPDATE = AE-A
UPDATE = A
ADD = D - AE
NEWDEP = AE U D-AE
UPDATE = E U D-AE
Обход LIST [A], COUNT [A -> D] = 0
переход в состояние IF
Я не понимаю, что будет храниться ADD, что такое ответ D - AE?
и после этого как это сделать:
Я не понимаю следующие три вещи в алгоритме:
(1) Что такое ADD = D - AE?
(2) Что такое NEWDEP =AE U D-AE?
(3) Что такое ОБНОВЛЕНИЕ = EU D-AE?