← 回首頁

PageRank 網頁排名

想像一個永遠在網海裡亂點連結的「隨機衝浪者」:他大多數時候點開目前頁面上的某個連結跳走,偶爾膩了就隨手打一個網址重新開始。跑久了,他停在哪些頁面的時間最長? 這個「長期停留機率」就是 PageRank——Google 早年用它替全網頁排名的核心點子。直覺是:被很多重要頁面指到的頁面,自己也重要; 而且一個頁面把自己的「票」平均分給它指出去的每個連結。下面用一張 6 節點的小有向圖,一輪一輪地看每個節點的分數怎麼從均勻起步、互相傳遞、最後收斂成穩定排名。

PageRank 冪迭代 Power Iteration

所有節點 rank 從 1/N 均勻起步(總和為 1,代表機率分佈)。每一輪:先算懸掛質量(無出邊節點的分數,會外洩,均攤回全體避免蒸發); 每個節點先拿到「隨機跳頁」的重啟基底 (1-d)/N + d·danglingMass/N;再讓每條邊 u→v 把 u 的分數平均分給它的每個出鄰、累加到 v。 如此反覆,rank 每輪變動遞減直到收斂——分數最高者即隨機衝浪者長期最常停留的節點。

固定示範圖(6 節點有向圖,同 pagerank.test.js;節點 5 為懸掛節點=無出邊;d=0.85)。唯一穩態排名:2 > 0 > 1 > 5 > 4 > 3
迭代輪數(iterations):0 本輪最大變動(delta): 懸掛質量(danglingMass):
節點上方數字為該節點目前的 rank(機率,四捨五入至 3 位小數);紅色為當前正在收分的節點,並以紅色高亮傳入的邊 u→v;藍框為懸掛節點(無出邊)。末幀以紅色標出榜首、綠色標其餘節點。

rank 排名(由大到小;榜首以紅色標示)

出分支度 outdeg(每個節點把 rank 均分給幾個出鄰;0=懸掛節點)

誠實揭露:這裡做了哪些教學簡化