1. 程式人生 > >物聯12:二進位制樹型搜尋演算法

物聯12:二進位制樹型搜尋演算法

二進位制樹型搜尋演算法

        純ALOHA演算法和時隙ALOHA演算法的通道最佳利用率為18.4%和36.8%,隨著標籤數量的增加,其效能急劇惡化,因此人們提出了二進位制搜尋演算法。二進位制防碰撞演算法基於輪詢的辦法,按照二進位制樹模型和一定的順序對所有的可能進行遍歷,因此它不是基於概率的箅法,而是一種確定性的防碰撞演算法,但該演算法要將所有可能全部遍歷,因此其應用起來比較慢。

        二進位制樹型搜尋演算法由讀寫器控制,基本思想是不斷的將導致碰撞的電子標籤進行劃分,縮小下一步搜尋的標籤數量,直到只有一個電子標籤進行迴應。

二進位制搜尋演算法的基本思路是,多個標籤進入讀寫器工作場後,讀寫器傳送帶限制條件的詢問命令,滿足限制條件的標籤回答,如果發生碰撞,則根據發生錯誤的位修改限制條件,再一次傳送詢問命令,直到找到一個正確的回答,並完成對該標籤的讀寫操作。對剩餘的標籤重複以上操作,直到完成對所有標籤的讀寫操作。      

        為了實現二進位制搜尋演算法,就要選用曼徹斯特編碼,因為這種編碼可以檢測出碰撞位。    為了實現這個演算法,引入以下4種命令。

1.衝突位檢測

        實現該算法系統的必要前提是能夠辨認出在讀寫器中資料衝突位的準確位置。為此,必須有合適的位編碼法。如圖對NRZ編碼和曼徹斯特編碼的衝突狀況作一比較。

1)NRZ編碼

        如果兩個電子標籤之一發送了副載波訊號,那麼,這個訊號由讀寫器譯碼為“高”電平,就被認定為邏輯“1”。但讀寫器不能確定讀入的某位究竟是若干個電子標籤傳送的資料相互重疊的結果,還是某個電子標籤單獨傳送的訊號。

2)曼徹斯特編碼

       如果兩個或多個電子標籤同時傳送的數位有不同值,則接收的上升沿和下降沿互相抵消,“沒有變化”的狀態是不允許的,將作為錯誤被識別。用這種方法可以按位追溯跟蹤衝突的出現。

  

         結論:二進位制搜尋演算法,要選用曼徹斯特編碼。

2.用於“二進位制樹搜尋”演算法命令

1)REQUEST 請求系列號

    傳送一序列號作為引數給區域內標籤。序列號小於或者等於的標籤,回送其序列號給閱讀器。(縮小範圍)

2)SELECT  選擇系列號

    用某個(事先確定的)序列號作為引數傳送給標籤。具有相同的序列號的標籤將以此作為執行其他命令(讀出和寫入)的切入開關,即選擇了標籤。

3)READDATA  讀出資料

     選中的標籤將儲存的資料傳送給閱讀器。

4)UNSELECT   退出選擇

     取消一個事先選中的標籤,標籤進入無聲狀態,這樣標籤對REQUEST命令不作應答。

3.二進位制樹型搜尋演算法過程

    基本思想是將處於衝突的標籤分成左右兩個子集0和1,先查詢子集0,若沒有衝突,則正確識別標籤,若仍有衝突則再分裂,把子集0分成00和01兩個子集,依次類推,直到識別出子集0中所有標籤,再按此步驟查詢子集1。

    因此,標籤的序列號是處理碰撞的基礎。

  

        具體例項,參照後一篇博文。