Ga naar hoofdinhoud

Bouwsteen 3 — één pagina bijwerken

Hier bouw je op verder: If en else en De for-loop

Weet je dit niet meer zeker? Lees het terug voordat je verdergaat.

Leerdoel: je zet de PageRank-formule om in code, voor één pagina en met de ranks die je op dat moment hebt.

De formule​

rank(p) = (1 − d)/N + d · Σ rank(i) / aantal_links(i)
i → p

In woorden: een basisdeel (1 − d)/N voor de willekeurige sprong van de surfer, plus d keer de stemmen van alle pagina's i die naar p linken. Elke stem is rank(i) gedeeld door het aantal links dat i uitdeelt.

Welke pagina's naar p linken, zoek je uit zoals in wie_linkt_naar uit bouwsteen 1: p in web[i]. Nu tel je bij elke treffer meteen de stem op, dus je hebt de verzameling zelf niet meer nodig.

De test gebruikt de startverdeling (alles 0.25) en d = 0.85. Reken voor C mee: A, B en D linken naar C. A deelt 2 links uit (0.25/2), B en D elk 1 (0.25/1). Dat geeft 0.15/4 + 0.85 · (0.125 + 0.25 + 0.25) = 0.56875.

Bouw en test​

Python
Code-omgeving wordt voorbereid…
Antwoord
for i in web:
if p in web[i]:
som += rank[i] / len(web[i])

Naar D linkt niemand, dus som blijft 0 en D houdt alleen het basisdeel: (1 − 0.85)/4 = 0.0375.

Door naar itereren tot het stabiel is →.