gewichtung

pangu

Angesehenes Mitglied
nehmen wir an ich möchte user nach beliebtheit sortieren:
( usera hat 5 freunde, userb nur 3, dann soll usera zuerst kommen.)

so ist es noch einfach, aber wenn jetzt freunde, die selber viele freunde haben "wichtiger" sind als freunde, die kaum oder keine freunde haben, wird das schon komplizierter.
(

usera: 5 freunde
userb: 3 freunde
userc: 100 freunde
userd: 0 freunde

wenn jetzt userx userc als freund hat, soll er höher gerankt werden, als usery, der usera + userb + userd als freunde hat..
)

-> müsste dann so eine art rekursive abfrage wie z.b. beim pageranksystem sein, aber wie fange ich da an?
am besten auch über mehrere ebenen, denke mal 2-5 sollten reichen, sonst wirds auch zu rechenintensiv, oder!?


hintergrund: möchte verhindern, dass ein user (evtl mit ein paar bekannten) 100te fakeaccounts anlegt, ums so seine "beliebtheit" zu pushen: kann man das irgendwie auslesen, in wie weit diese accounts innerhalb der anderen accounts integriert wurden oder nur zum pushen der anderen accounts angelegt wurden?
 
Nun, programmiertechnisch müsste man einfach alle bis zu den Zeitpunkt vorhandenen Freundschaften auswerten (also wird es eine gewisse Abweichnung geben, wenn man nicht die komplette Datenbank während dieser Zeit sperren möchte, bzw. sie vorher spiegelt). Und es kommt drauf an, bis zu welcher Ebene Du gehen möchtest, am einfachsten wäre es, wenn Du nur 1 Ebene haben möchtest, je mehr Ebenen Du hast, desto mehr Rechenleistung vorbraucht der Algorithmus.


Der Algorithmus sollte recht einfach sein, sobald die Rahmenbedingungen klar sind. Also welche Gewichtung direkte Freunde haben sollen, wie viel Gewichtung die einzelnen Ebenen haben sollen usw.


Bei MySQL und eine Ebene, wäre es am einfachsten einfach die Beziehung zu den anderen Freunden herauszufinden, darauß die Summe zu bilden und dann über eine Formel eine entsprechende Gewichtung zu bestimmen, denn direkte Freunde sollten ja mehr Wert sein alle die Freunde von Freunden.


Soweit erstmal zur programmiertechnischen Seite, praktisch gesehen müsste man erstmal eine komplett einheitliche Definition von dem Begriff "Freund" geben.
wink.gif




MfG Sascha Ahlers
 
Dein Problem wird - wenn ich richtig verstehe - von der trivialen Gewichtung \sum{ 1*#F_i} wobei #F_i die Anzahl der Freunde ist, der mein Freund hat. Das kann aber auch ausgehebelt werden. Also zu deutsch ich hab 3 Freunde die 2,3,5 Freunde haben, also bin ich 2+3+5 wert.
Da musst Du auch keine Rekursion anwenden.
 
Zurück
Oben