動態網路中的實時分布式社群結構檢測(2012)

2021-09-21 05:53:32 字數 2141 閱讀 4466

參考**real time distributed community structure detection in dynamic networks

關於動態網路監測以前的方法:

(1)最初的嘗試是跟蹤社群,而不是在網路中檢測它們。

(2)將已知的靜態社群檢測演算法應用於從動態網路快照生成的靜態圖中。但是,這需要在一系列靜態快照中捕獲動態網路,這是很有挑戰性的。例如:

這篇**提出的演算法

g:動態圖

g=g0,g1,g2…gt

gt(v,et)

h:i記得接觸過的最大數量

hi:節點i最近接觸到的h個節點

d:設d是乙個引數,使得hi中最近的聯絡人具有h的重要性,而最近的乙個引數的重要性為max(h−d,1),而kth最近的接觸在hii中的重要性為m。ax(h−dk,1)

設p>h,使得1/p是節點通過更改社群隨機重新命名更改為自己的id的概率。

tr:讓tr是將通知重新標記的聯絡人的數量。

(1)如果在集合ei節點i主要與社群l的成員互動(共享邊),那麼在這段時間內它可能是社群l的成員。

(2)如果節點i很少改變社群,那麼這個人當前的社群關聯很可能是未來社群聯絡的**。

利用(1),(2),我們可以使用該演算法只使用本地資訊實時地單獨估算社群成員數,演算法如下:

結果:

使用了四個網路進行測試。所有網路由100個節點組成。在所有方法中,通過選擇網路中的隨機節點並將其連線到社群中的另乙個隨機節點來生成邊。選擇穩定引數n大於演算法的預期最大收斂時間。在實驗之間,在使用不同的引數時,n的值可以改變以適應更長的或更短的期望最大收斂時間。

加入這個網路說明了兩個社群的加入。最初,網路被劃分為兩個社群,每個社群有50個節點。在每次迭代中都會產生隨機接觸。後n次已使這兩個網路聯合起來進行聯絡。在這個網路中,所有節點都在同乙個社群中進行n次接觸,然後該社群分成兩個社群,每個社群有50個節點每個節點n次接觸。連線此網路包含兩個大小相同的社群,由一些中間節點連線。該網路對n個聯絡人進行了**。

b收斂和h

在圖3中,在d=0的連線網路上執行了實驗,沒有重新標記,以顯示h的變化對收斂時間(錯誤數目穩定的時間)的影響。這個圖中h值越大,收斂時間越長。這種增長背後的直覺就是這樣。在乙個節點需要決定它在哪個社群的情況下,它可能需要最多h個聯絡人來決定。隨著時間的延長,這個決策時間所以會變長。因此,當乙個節點與它所屬的社群連線時,它加入社群所需的時間更長,從而延長了收斂時間。

e:共享節點及其對社群的影響

乙個例子說明了該演算法區分社群的能力,這是乙個例子,其中兩個節點組在它們之間共享少量的節點。在圖6中,我們看到乙個這樣的網路,共享節點的數量從4到44不等。報告的數字是所有50次模擬執行中的平均社群數。隨著連線兩個組的共享節點數量的增加,兩個組都屬於同乙個社群的可能性也隨之增大。

f:在random spatial network中找到社群,在這個網路中,30個節點被隨機地播種在乙個30x30的單位方格上。在每一次迭代中,都會在每個節點及其三個最近的鄰居之間發現一條邊,隨後,節點以隨機概率移動乙個較小的距離。在h=20,d=1,p=4000,rc=20生成圖上進行模擬。

(1)relabeling event:

(2)community growth and shrinkage

結論:本文提出了一種實時分布式社群結構估計演算法。它非常適合於分布式計算,其執行時以h為線性,是歷史長度引數。h是可以調節的所以演算法的成本可以調節。該演算法在人工生成的網路上進行了**,並對人工社群進行了正確的估計。此外,它還在隨機生成的網路上找到了乙個合理的社群結構。

社群結構的準確確定取決於使用者對**中**的幾個關鍵引數h、d、p和rc的調整。h是最重要的,它影響執行時間和收斂時間。然而,適當的d值有助於提高收斂時間,而rc的正確值則可使relabel發生。

未來的工作:今後的發展可以包括允許每個節點具有多個社群附屬關係。此外,該演算法不允許網路的一部分經常改變社群隸屬關係,而另一部分則更穩定。今後的工作包括調整h和其他在每個節點上測量以在網路的不同部分建立自定義行為

分布式系統中的分布式事務

分布式事務中可以借助mq訊息系統來進行事務控制,這一點與可靠訊息最終一致方案一樣。看來mq中介軟體確實在乙個分布式系統架構中,扮演者重要的角色。最大努力通知方案是比較簡單的分布式事務方案,它本質上就是通過定期校對,實現資料一致性。中介軟體如何保證訊息的一致性 問題的問法多種多樣,怎麼保證兩個伺服器的...

Tensorflow 中的分布式

執行,打入1 python tf code sever.py job name ps task index 0 2 python tf code sever.py job name ps task index 1 3 python tf code sever.py job name work tas...

java中的分布式應用(一)之分布式介紹

要理解分布式系統,主要需要明白一下2個方面 1.分布式系統一定是由多個節點組成的系統。其中,節點指的是計算機伺服器,而且這些節點一般不是孤立的,而是互通的。2.這些連通的節點上部署了我們的節點,並且相互的操作會有協同。分布式系統對於使用者而言,他們面對的就是乙個伺服器,提供使用者需要的服務而已,而實...