最近連續聽到PageRank算法,久聞其名,不聞其詳,內心虛得很,今兒補補課。html
PageRank算法的網絡資料很是全面,畢竟是將近二十年的經典算法,算法細節能夠參考文末連接,這裏簡單說說個人理解。算法
PageRank要解決的問題是如何給網頁排序,它的思路是,利用網頁間的連接關係構造有向圖,對有向圖的全部節點作重要性排序。網絡
重要性也能夠理解爲影響力,以一個分數的形式來表達,分數從高到低就構成了一個排序。htm
怎麼定義影響力?從節點的流出和流入分別定義:對於節點A和B,若是指向A的節點多於指向B的節點,則A的分數更高;若是A的分數比B的分數更高,則A指向的節點比B指向的節點分數更高。blog
把上面的原則轉化爲迭代規則,以機率值表示分數,就能夠把各節點的分數計算過程建模爲一個Markov鏈的收斂過程,實現了這個收斂過程就計算出了圖中各節點的分數。排序
固然,實際問題中要處理的細節還有不少,好比沒有外鏈的網頁如何處理,證實該模型是Markov過程等等,能夠參考文末連接。get
本質上講,PageRank是給有向圖的節點作重要性排序,比網頁連接更常見的有向圖是社交關係圖,因此PageRank拿來作社交網絡的節點排序應當也是能夠的。pdf
PageRank是工程思惟的典型表明,建模思路簡潔易懂,代碼實現也幾乎沒有難度,惟一有深度的部分是Markov鏈的證實,這實際上是隨機過程當中最多見最基礎的證實題。基礎
你瞧,就是這樣一個簡潔實用的算法,孵化出了一家偉大的公司,改變了世界。co
這就是簡潔的力量,工程的美。
參考文獻:
http://www.javashuo.com/article/p-yejonzzd-gv.html
http://ilpubs.stanford.edu:8090/422/1/1999-66.pdf (提出PageRank算法的論文)