Главная
»
Информационные системы
»
Представление знаний в ИС
»
Для данного множества (представленного списком) определите список всех вариантов его разбиения на непересекающиеся подмножества.
Для данного множества (представленного списком) определите список всех вариантов его разбиения на непересекающиеся подмножества.
% Bilet13
% Patched 14.01.13
% To start type: jstart.
head(X,[X|L]).
tail(L,[X|L]).
member(X,L):-head(X,L).
member(X,L):-tail(T,L),member(X,T).
conk([],L,L).
conk([X|L1],L2,[X|L3]):-conk(L1,L2,L3).
sub(S,L):-
conk(L1,L2,L),
conk(S,L3,L2).
povt([],[]).
povt(L1,L2):-member(X,L1),member(X,L2).
dlina([],0).
dlina([H|T],X):-dlina(T,X1), X is X1+1.
list(L1,L3):-setof((X1,X2),(sub(X1,L1),
sub(X2,L1),
not povt(X1,X2)),L3).
razbPodmn(L1,X):-list(L1,L3),member(X,L3).
jstart:- write(' Vvedite spisok L: '),nl,read(LJAM1),nl,
razbPodmn(LJAM1,X),nl,
write(X).
Друзья! Приглашаем вас к обсуждению. Если у вас есть своё мнение, напишите нам в комментарии.