無向圖廣度優先遍曆及其JAVA實現

來源:互聯網
上載者:User

標籤:fst   png   margin   read   pre   oct   隊列   adt   訪問   

廣度優先遍曆(breadth-first traverse,bfts),稱作廣度優先搜尋(breath first search)是連通圖的一種遍曆策略。之所以稱作廣度優先遍曆是因為他的思想是從一個頂點V0開始,輻射狀地優先遍曆其周圍較廣的地區。

演算法描述

給定圖G=(V,E)。V是節點集合,E是邊集合。

設定一個訪問標誌位vflag(i)表示節點i的訪問情況,若vflag(i)=0表示節點i未被訪問

vflag(i)=1表示節點i已經被訪問過。

l  初始化所有節點的vflag=0。

l  某個節點V0出發(該節點可以是任意的),並訪問此頂點。

l  從V0出發,訪問V0的各個未曾訪問的鄰接點(下標從小到大排列)W1,W2,…,Wk;然後,依次從W1,W2,…,Wk出發訪問各自未被訪問的鄰接點。

l  重複上步,直到全部頂點都被訪問為止。

 

For example,

 

fig1. 5節點無向圖

假設我們先從V3 節點開始,把V3裝進遍曆結果隊列和緩衝隊列。將V3訪問標誌位置1。取出緩衝隊列首位後並丟棄。這裡是V3節點。找出與V3節點相鄰的並未被訪問過的節點有。有V1和V5節點,按下標大小我們將V1和V5分別裝進緩衝隊列和遍曆隊列。自此。緩衝隊列是[1,5]。遍曆隊列是[3,1,5]。此時緩衝隊列沒有丟空,我們繼續重複之前的步驟。即取出並丟棄緩衝隊列隊首V1。找出與V1相鄰並未訪問過的節點,有V2,V4.. 此時緩衝隊列是[5,2,4],遍曆隊列是[3,1,5,2,4]。此時,已經完成遍曆。緩衝隊列還未被丟空,繼續重複上述步驟。即取出並丟棄緩衝隊列隊首V5,找出與V5相鄰未被訪問的節點,沒有。V3相鄰但是V3已被訪問。此時緩衝隊列是[2,4],遍曆隊列是[3,1,5,2,4]。類似丟V2,V4直至緩衝隊列丟空。實際為節省程式已耗用時間可將遍曆結束條件設為訪問標誌隊列全部非0。

 

BFT的java實現代碼:

 1 %============================================ 2 % 檔案名稱:        bfst           3 % 版本號碼:        1.0.0 4 %           Isabelle<[email protected]> 5 % 單位:          specter 6 % 修改時間:    Sat Oct. 8 1:20:01 2017 7 % 建立時間:    Sat Oct. 8 1:20:01 2017 8 %--------------------------------------------------------------------------                9 % blog:http://www.cnblogs.com/isabellezhou10 % Copyright (Dist) 2017 Isabelle All rights reserved. 11 %============================================public class{}

 

無向圖廣度優先遍曆及其JAVA實現

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.