1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

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

Discussão em 'Programação' iniciada por master_peace, 8 de Janeiro de 2013. (Respostas: 0; Visualizações: 529)

  1. master_peace

    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:
     

Partilhar esta Página