Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [GAP] Бинарные отношения


Автор: THandle 27.3.2011, 13:19
Всем привет. Не получается сделать вот такое задание:

Цитата

Разработать функцию, которая для заданного бинарного отношения r возвращает список всех упорядоченных пар элементов (x,y), таких что которых выполняется условие x r y, но не выполняется условие y r x.


Допустим мы имеем бинарное отношение заданное на: [[3,4], [1,2,4], [2,3,4], [3]];

Это пары: (3,2), (3,3), (3,4), (4,3), (1,3), (1,4), (2, 1), (2,2), (2,4).

То есть результатом должно быть: (3,2), (1,3), (1,4), (2,1), (2,4).

Думаю что вынимать конкретные пары из списка надо с помощью Filtered, но что то никак не соображу какое условие надо написать...

Автор: THandle 27.3.2011, 14:00
Запостил вопрос... и как то дошло одно из решений до меня:

Код

Ololo:=function(r)
local s, i, j, k, l, res;
s := Successors(r);
l := [];
res:=[];
for i in s do
  for j in i do
    for k in s[j] do
      if not ([j, k] in l) then
        Append(l, [[j, k]]);
      fi;
    od;
  od;
od;
for i in l do
  if not ([i[2], i[1]] in l) then
    Append(res, [i]);
  fi;
od; 
return res;
end;



Код

brk_06> T:=RandomBinaryRelationOnPoints(5);
Binary Relation on 5 points
brk_06> Read("l5.g");
brk_06> Ololo(T);
[ [ 2, 1 ], [ 2, 3 ], [ 2, 4 ] ]
brk_06> Successors(T);
[ [ 1 ], [ 1, 3, 4 ], [ 4 ], [ 3, 4 ], [ 2, 3, 4 ] ]
brk_06> LogTo();


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)