2011-01-06 96 views
2

我是整個分佈式系統領域的新手。我需要幫助來了解如何在此環境中形成羣集,並決定哪個是CH(羣集標題)。我想用生成樹來選擇能量最高的節點作爲CH。當選擇CH時,其他節點應將其信息發送給CH,CH將其發送到基站(紅色節點)。如何在此環境中形成羣集並選擇羣集標頭?

問題是我不知道該算法應該如何。下面是一些算法,我試圖做

聚類算法

  • 每隔一小時,節點啓動生成樹找到包含大部分能量的節點
  • 如果它收到一個「搜索」的一個節點的消息:

    - 如果來自發送方的能量低於其自身,則比較每個節點剩餘的能量。用自己的ID回覆 。如果來自發件人的能量比自己高。回覆與發送者ID,並把它傳遞給其他的鄰居

  • 當一個節點接收到它自己的ID,這使其自我簇頭
  • 當其他節點知道簇首已經選擇開始將信息發送到簇首

環境:

假設這是路由器網絡

的數目是各節點的能量功率

紅色節點是基站。

alt text

+0

如果你不告訴我們你嘗試過的算法有什麼問題,很難知道你想要什麼幫助。 – 2011-01-06 08:14:38

回答

0

你的算法是近乎完美,唯一缺少的是關於網絡的直徑的信息。

網絡的直徑是網絡中兩個最遠的節點的距離。

現在,讓我們表示您的算法,例程A和網絡直徑(G)。在繼續進一步討論之前,讓我們同意證明從(連接的)網絡的任意節點開始的簡單洪泛算法需要直達(G)輪到達網絡的每個節點是微不足道的。首先,我們必須假設具有最多能量的節點是唯一的(即,不存在具有相同能量量的其他節點)。

如果每個節點事先知道網絡的直徑,那麼這個問題很容易解決,我們只需要調用例程A進行diam(G)輪,然後,只有一個節點將有一個與他自己的ID相同的消息並且該節點將其變量前導改爲true然後用「Leader is election,it is me」消息來洪泛網絡。

-1
Cluster Form 
{ 
In each cluster 
If(Energy==…..) 
{ 
Energy= ……..; 
Send (CH_ID,CLUSTER_ID_CH) 
} 
If(Node_ CLUSTER _ID_CH== CLUSTER_ID_CH) 
    { 
send Join_Message(NODE_ID,CH_ID) 
//when receving Join_Messag 
CH send (TDMA) 
} 
}** 


for more information send me to [email protected]