Как я могу реализовать алгоритм объединения на таком языке, как Java или C #?
я работаю через свой учебник AI, который я получил, и яМы подошли к последней задаче домашнего задания для моего раздела: "
Внедрите алгоритм объединения, описанный на стр. 69, на любом языке по вашему выбору ».
На странице 69 у вас есть следующий псевдокод для алгоритма объединения:
function unify(E1, E2);
begin
case
both E1 and E2 are constants or the empty list:
if E1 = E2 then return {}
else return FAIL;
E1 is a variable:
if E1 occurs in E2 then return FAIL
else return {E2/E1}
E2 is a variable
if E2 occurs in E1 then FAIL
else return {E1/E2}
either E1 or E2 are empty then return FAIL
otherwise:
begin
HE1 := first element of E1;
HE2 := first element of E2;
SUBS1 := unify(HE1, HE2);
if SUBS1 := FAIL then return FAIL;
TE1 := apply(SUBS1, rest of E1);
TE2 := apply(SUBS1, rest of E2);
SUBS2 := unify(TE1, TE2);
if SUBS2 = FAIL then return FAIL;
else return composition(SUBS1, SUBS2)
end
end
end
Теперь я понимаю общую концепцию объединения, но совершенно не представляю, как бы я начал реализовывать это на языке, таком как Java или C # .I '
Я даже не уверен, как будет выглядеть сигнатура метода. Какой тип переменных это займет? Я'Я вполне уверен, что мне нужно возвращать списки для представления конструкций исчисления предикатов, но это предположение.
Например, когда говоритсяЕ1 это переменнаяхорошо, если яЯ передаю его в метод Unify, как это может быть иначе? Я мог бы проверить на ноль, но будет ли это иначе, чем "пустой список "?
Может кто-нибудь помочь мне или указать мне правильное направление для реализации алгоритма Unificaiton в C # или Java?