[PROLOG] Sugerir conexões(amigos) em rede social

master_peace

Power Member
Pessoal tenho um projecto de faculdade, que se baseia numa rede social com parte gráfica em OpenGL, código em C++, com webservices, com sistema NAGIOS, com bases de dados e website para admnistração, etc etc. Mas, os cálculos de amizade, caminhos curtos, etc etc etc, devem todos ser calculados através de linguagem PROLOG.
E , um dos muitos códigos PROLOG que devo fazer, é um que faça o seguinte: " Sugerir conexões com outros utilizadores tendo por base as tags e conexões partilhadas (até 3º nível) ".

Tenho o seguinte código actualmente, para esta parte:


%%so da os amigos com tags em comum
amigoscomtagscomum(User,Num) :- findall(Tags,tag_utilizador(Tags,User),ListaTags),
findall(Users,(utilizador(Users,_,_,_,_),amigos(User,Users),Users\==User),ListaUsers),
verifica_comum(User,Num,ListaTags,ListaUsers,ListaF),write(ListaF).



%%verifica as tags comuns
verifica_comum(_,_,_,[],[]).
verifica_comum(_,Num,ListaTagUser,[HU|TU],[HU|LF]):- findall(Tags,tag_utilizador(Tags,HU),ListaTags),
intersecção(ListaTagUser,ListaTags,Resultado),
length(Resultado,Num),!,
verifica_comum(_,Num,ListaTagUser,TU,LF).


verifica_comum(_,Num,ListaTagUser,[_|T],LF):-verifica_comum(_,Num,ListaTagUser,T,LF).




%%so da os amigos com tags em comum
amigoscomtagscomum(User,Num) :- findall(Tags,tag_utilizador(Tags,User),ListaTags),
findall(Users,(utilizador(Users,_,_,_,_),amigos(User,Users),Users\==User),ListaUsers),
verifica_comum(User,Num,ListaTags,ListaUsers,ListaF),write(ListaF).



Falta-me, portanto, o predicado sugerir_amizades().


Alguém me pode dar umas luzes? :rolleyes:
 
Back
Topo