六度空間

  1. 你知道嗎?其實從一出生,我們就和世界上每個人都有聯繫,並且不超過六個人!
    這就是六度空間理論,又名六度分隔理論,意思是你至多隻要通過六個人就能認識全世界的任意一個人,可以這樣算:假設一個人能認識25個人或以上,那經過7次介紹之後(間隔6人),一個人可以被介紹給25的7次方,等於6103515625人,超過60億!當然,前提假設是平均每個人能認識25個人或以上,美國科學家早在上世紀60年代就提出了這一理論,據英國《每日郵報》近日報道,美國研究人員通過精密計算進一步發展了這一理論。美國微軟公司的研究人員選取了2006年某月通過微軟網絡發送的300億條即時信息。計算結果顯示,78%的用戶可與另一用戶通過6.6條信息相連。也就是說,平均通過6.6個人就能把世界上任何兩個人聯繫起來。普通人要想與歌星麥當娜或英國女王取得聯繫,其實只需要7個熟人而已。研究人員埃裏克·霍維茨說,“人們一直將六度分隔理論當作一個民間傳說。但沒想到事實的確如此。不管是美國總統還是好萊塢明星,只要找到正確的6個人,我們就能聯繫起來。”
    六度分割通常用來描述一個廣闊的社會網絡(SN),現在大部分的社會網絡服務都提供了搜索功能,即搜索出一個用戶到達另外一個用戶的最短路徑,也就是找出這兩個用戶之間通過最少的用戶的鏈接。
    一般的SN提供的搜索都是4度的,也就是例如A-B-C-D-E
    稱爲4度的分隔。提供5度搜索和6度搜索的幾乎寥寥無幾,當然一方面是5,6度分隔的用戶很少,大部分的用戶都應該在4度內,另外一個方面是5,6度分隔的搜索在實際計算上也涉及非常大的運算量。
    【SN搜索算法】注:(已下所有都是不去除本身的)
    如果說尋找兩個人之間的最小分隔的路徑和尋找最短路徑可以類比,那麼唯一不同的是SN上每個節點的聯繫可以非常的廣闊,不只是上下左右,而是十個甚至上百個聯繫。這是是一個多維空間內的最短路徑的尋找。假設一個用戶平均有n個好友,那麼粗略估計一個用戶的4度好友大約有n×n×n×n+n×n×n+n×n+n
    ~ n^4,無疑是一個非常恐怖的數目。因此採用傳統的遞歸的方法顯然是不大現實的。
    當然,事情並非這麼麻煩,有簡潔的方法可以加快找到用戶之間的最小分隔:不單是從一個用戶搜索,而是從兩個用戶同時搜索,而看兩個用戶的2度之內的用戶是否有相同:
    A-B-C E-D-C
    A和E的處在在兩度分隔的用戶基本上數目估計都在n的平方。問題變成了比較n^2和n^2之間有沒有相同,這個計算的時間等同於2×n^2的排序所需要的時間。
    【SN索引】 那麼能否繼續加快速度?
    當然可以,可以提前對用戶的好友進行索引,對好友的好友進行索引,這樣在未來進行關係的搜索時會大大加快: A: {A1} {A2}
    A1爲A的好友的集合,A2爲A的好友的好友的集合 E: {E1} {E2} 那麼 1度分隔爲: A 屬於{E1},等同於E屬於
    {A1} 2度分隔爲: A 屬於{E2},等同於E屬於 {A2},{A1}{E1}有共同項。 3度分隔爲: {A1}
    {E2}有共同項,等同於A屬於 {E2} 4度分隔爲: {A2} {E2}有共同項 【SN關係的更新】
    當然,發現是一個核心問題,另外一個問題就是更新,因爲SN的關係不會是一成不變的,在一個活躍的SN社區裏,每天用戶之間的關係的更新更是可觀。這裏只考慮關係添加的例子:
    A: {A1} {A2} E: {E1} {E2} 當A 與 E
    直接建立了好友關係後,應該說整合系統的關係全都變化了,因爲這個新的關係一定會導致一些關係的短路,從而導致很多現有的關係的調整。但是因爲我們只存儲2度分隔以內的關係,也只關心兩度分隔以內的關係,因此當發生了一個新的關係後,2度內關係的變化一定是A和E本身或者他們的一度關係的用戶,再遠的用戶將不受這個關係的影響。
    因此首先 所有{A1}的元素的二度分隔集合裏要加上E,所有{E1}的元素的二度分隔集合裏要加上A。
    然後是二度的修正。分別加上對方的1度。 {A2} = {A2 + E1} {E2} = {E2 + A1} 最後是一度的修正:A,
    E 的 一度{A1}{E1}需要加入E,A: {A1} = {A1 + E} {E1} = {E1 + A}
    整體操作的量大約在2n次操作,比我們通常認爲的要小的多。
發佈了22 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章