Основы проектирования систем искусственного интеллекта



         

Списки - часть 5


г) степени первых термов в Р и Q одинаковы, но сумма коэффи­циентов равна нулю. В данном случае многочлен R равен результату сложения хвоста Р с хвостом Q. Например, если

р(х)=2+2х

Q(x)=2-3x^2

то

R(x)=2x-3x^2

(это результат сложения хвостов многочленов Р (х) и Q (х)).

Рассмотренный процесс сложения многочленов можно непосред­ственно записать на языке Пролог:

/* Граничные условия

слож_мн([], Q Q).

слож_мн(P, [], P).

/* Рекурсивное условие

/* (a)

слож_мн([x(Pc, Pp)|Pt], [x(Qc, Qp)|Qt],

[x(Pc,Pp)IRt]) :-

PpQp,

слож_мн(Рt, [х(Qс,Qр) | Qt], Rt).

/*(б)

слож_мн([x(Pc, Pp) | Pt], [x(Qc, Qp) | Qt],

[x(Qc, Qp) | Rt]) :-

PpQp,

слож_мн([x(Pc, Pp) | Pt], Qt, Rt).

/*(в)

слож_мн([x(Pc, Pp) | Pt], [х(Qc,Pp) | Qt],

[x(Rc, Pp) | Rt]) :-

Rc is Pc+Qc,

Rc =\= 0,

слож_мн(Pt, Qt,Rt).

/*(r)

слож_мн([х(Рс, Рр) | Pt],

[x(Qc.Pp) | Qt], Rt) :-

Re is Pc+Qc,

Rc =:= 0,

слож_мн(Pt, Qt, Rt).

Заметим, что в двух последних утверждениях проверка на равен­ство осуществляется следующим образом: степени первых термов складываемых утверждений обозначает одна и та же переменная Pp.

Списки как термы. В начале главы мы упомянули о том, что спи­сок представляется с помощью терма. Такой терм имеет функтор '.', Два аргумента и определяется рекурсивно. Первый аргумент являет­ся головой списка, а второй - термом, обозначающим хвост списка. Пустой список обозначается []. Тогда список [а, b] эквивалентен терму.(а,.(b, [])).

Таким образом, из списков, как и из термов, можно создавать вложенные структуры. Поэтому выражение

[[a, b], [c, d], [a], a]

есть правильно записанный список, и на запрос

?- [Н | Т]=[[а, b], с].

Пролог дает ответ

Н=[а, b]

Т=[с]




Содержание  Назад  Вперед