Avatar billede Slettet bruger
15. juni 2007 - 09:50 Der er 6 kommentarer

Relations-udregning

Jeg ønsker at kopiere funktionen som bruges af friendster, myspace o.l. hvor man, som medlem, kan finde den korteste rute mellem sig selv og en tilfældig person. Man klikker på personen, og frem kommer noget i retning af:

Du er ven med X
X er ven med Y
Y er ven med Z
Z er ven med ham du klikkede på

Jeg har selv en hjemmeside med 75.000 medlemmer. Men jeg kan ikke regne ud hvordan jeg laver denne funktion, med mindre jeg sætter mit program til at teste alle mulige veje i mit netværk.

Jeg har f.eks. 100 venner. Hvis hver af mine venner også har 100 venner, så er der allerede 10.000 mulige retninger i 2. led. I 4. led er der 100.000.000 retninger som skal undersøges. Og det er ikke just en mulighed.

Så hvordan gør de store det?
Avatar billede erikjacobsen Ekspert
15. juni 2007 - 10:10 #1
Avatar billede innercitydk Nybegynder
15. juni 2007 - 10:42 #2
Dijkstras algoritme kan være behjælpelig her.

http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm

Har selv brugt den i forbindelse med en opgave på datamatiker studiet. Det er lidt langhåret, men du kan finde rigtig meget hjælp på nettet. Brug ikke kun google, men også altavista.dk. Bruger du begge og krydsrefererer, finder du altid hvad du leder efter ;)
Avatar billede Slettet bruger
19. juni 2007 - 02:28 #3
Selvom det oplyses, at algoritmen kan bruges til sociale netværk (som i mit tilfælde), så synes jeg at jeg ser nogle problemer.

Algoritmen undersøger altid den korteste vej ud fra startpunktet. Men i mit tilfælde vil afstanden til nabopunkterne altid være den samme - f.eks. 1. Der med vil alle mulige retninger stadig skulle undersøges.
Avatar billede erikjacobsen Ekspert
19. juni 2007 - 08:42 #4
Du har ret, og du har ikke ret. ;)

Ja, selvfølgelig skal en masse retning undersøges. Dijkstras algoritme sørger blot for at tage relevante retninger, og at gøre det systematisk.

Det er nogen helt billig beregning. Derfor vil "sociale sites" sikkert også snyde - dels ved at forudberegne data, og dels ved ikke nødvendigvis at give den korteste vej.
Avatar billede Slettet bruger
19. juni 2007 - 08:55 #5
Ja ok, jeg frygtede lidt at det var svaret. Selvom jeg stadig synes at det lyder usandsynligt, at så meget kan forudberegnes. Min tabel med first-level relations fylder 30 mb selvom den kun indeholder 2 integer felter. Hvis den også skulle indeholde second-level relations ville den fylde 3 gb.
Avatar billede erikjacobsen Ekspert
19. juni 2007 - 10:23 #6
Det er også derfor de sikkert snyder. Hvis de siger, der er 6 mennesker mellem dig og Kim Jong Il, så kunne der være en en anden vej på 5, som de ikke har fundet endnu. Det reducerer beregningerne og datamængderne en hel del, hvis man kun skal have et cirka-resultat.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Ingeniør til Satellitkommunikation

KMD A/S

Projektleder

Netcompany A/S

Test Consultant