Bonjour,
voici mon problème
je développe une application facebook en java, en récupérant des données sur les "amis" de l'utilisateur.
je détermine ensuite une première matrice carré symétrique, qui est la "matrice d'amitié" (qui représente l'utilisateur et ses amis, et s'il sont amis entre eux).
si l'utilisateur est ami avec quelqu'un, c'est représenté par 1, mais aussi si un ami de l'utilisateur est ami avec un autre ami de celui-ci, c'est représenté par 1
par exemple, si l'utilisateur c'est A, qui a 3 amis B C et D, avec B ami de C et D, mais C pas ami avec D, on a:
A B C D
A 0 1 1 1
B 1 0 1 1
C 1 1 0 0
D 1 1 0 0
ensuite, avec ca, on va déterminer la seconde matrice, qui représente le nombre d'amis commun deux à deux
exempl: pour D et C, on regarde toute les valeurs communes pour lesquelles ils sont à 1. on a A et B, amis commun de D et C, donc ils ont 2 amis commun
de proche en proche, on a la seconde matrice:
A B C D
A 0 2 1 1
B 2 0 1 1
C 1 1 0 2
D 1 1 2 0
c'est cette seconde matrice qui va permettre de construire le graphique (tel que je le concois), car elle détermine les distances entre chacun (en les ramenantà une base commune, pour que ca soit relatif parce que quelqu'un qui a 1000 amis et qui a 50 amis commun avec un autre, on peut se douter de leur "proximité")
la difficulté, c'est de construire quelque chose qui respecte plus ou moins la seconde matrice.
il y a fa aire trois choses sur un meme graphique :
- représenter l'amitié entre tout le monde et le l'utitlisateur principal (ca c'est facile)
- représenter chaque personne par une pastille en fonction du nombre d'amis qu'il a
- représenter l'amitié de tout le monde entre eux (ca ca pose problème)
je pense qu'il est possible de faire une sorte de relaxation sur les contraintes, pour avoir une marge de manoeuvre sur les distances de la matrice de distance, mais ensuite, je sais pas trop comment, l'idée est de pouvoir visualiser directement les "groupes" d'amis, qui devraient être visible par interprétation de la matrice des distances...
Si quelqu'un connait un algorithme de ce genre, ou sait comment faire, ca serait G E N I A L
Partager