谷歌的創(chuàng)始人拉里·佩奇和謝爾蓋·布林當時還是研究生院的兩個學生,他們發(fā)明了一種新的網絡搜索算法:讓網頁自己給自己投票,不是舉手投票,而是用 實際行動(鏈接)投票。在上面的例子中,頁面X和頁面Y都鏈向頁面Z,頁面Z是這個迷你網絡中唯一有兩個外鏈接指向它的頁面。所以,頁面Z是這個迷你網絡 中最“流行”的網頁?!傲餍卸取笔怯行畔⒑康? 。但是,如果一個可疑網頁鏈向另一個網頁,那么另一個網頁也應該被扣分,就像一個不可靠的人推薦的人不值得別人信任一樣?!傲餍卸取北旧聿徽f明問題,只有 被好的網頁“推薦”(好的網頁里含有你的鏈接),才能獲得加分。
于是,我們又回到了那句禪語:最佳網頁是那些鏈接其他最佳網頁的網頁。但是,一開始,誰來決定哪些網頁是最佳網頁呢?
我 們讓網絡自己來決定,具體方式如下:谷歌的搜索算法給每個網頁打一個分數,這個分數叫作“網頁排序號”,是一個介于0和1之間的數字。“網頁排序號”考慮 一個假想的上網者,他會在這個網頁上花掉的時間占總上網時間的多大比例?通過回答這個問題,我們可以度量一個網頁相對于其他網頁的重要程度。這個假想的上 網者是這樣上網的:如果一個網頁上有另外幾個網站的鏈接,他就會從這些鏈接中隨機選擇一個點擊,點擊每個鏈接的概率相等。在這個假設條件下,一個網頁的訪 問量越大(我們假想的上網者的訪問量,不是實際互聯網用戶的訪問量),這個網站就越重要。
因為“網頁排序號”的定義是(假想上網者)訪問這 個網站的時間占總上網時間的比例,所以網絡上所有網頁的“網頁排序號”的總和必然為1。根據守恒定律,我們還可以把“網頁排序號”想象成一股水流,這股水 流在網頁間流動,從體驗不佳的網頁不斷地向體驗良好的網頁匯聚。谷歌的算法考察的就是,從長期來看,這股水流如何分配到網絡中的各個網頁中。
為 了算出水流的分配,我們需要一個巧妙的迭代算法。首先,我們對每個網頁的“網頁排序號”進行一個粗略的估計,用這個猜測值作為迭代的初始值。然后,我們考 慮水流如何不斷地分流到新的網頁中,規(guī)則是:如果一個網頁上有另外幾個網站的鏈接,假設上網者就從這些鏈接中隨機選擇一個點擊,點擊每個鏈接的概率相等。 這個過程不斷地進行下去,直到水停止流動,每個網頁的訪問量穩(wěn)定下來。
一開始,谷歌的算法比較寬泛:每個網頁的初始值都一樣。比如,我們的迷你網絡共有3個網頁,那么每個網頁的“網頁排序號”的初始值都是1/3。