深度優先搜索和廣度優先搜索.md

深度優先搜索算法

深度優先的要點

在搜索一幅圖時,只需要用一個遞歸來遍歷所以頂點。在經過每個頂點的同時:
- 將它標記爲已訪問
- 遞歸訪問所有未標記的鄰居節點

深度搜索Java實現

public class DepthFirstSearch{
    private boolen[] marked;    // is there an s-v path ?
    private int count;          // number of vertices connected to s

    public DepthFirstSearch(Graph G, int s){
        marked = new boolen[G.V()];
        dfs(G, s);    
    }

    // depth first search from v
    private void dfs(Graph G, int v){
        count++;
        marked[v] = true;
        for (int w : G.adj(v)){
            if (!marked[w]){
                dfs(G, w);
            }
        }
    }

    public boolen marked(int v){
        return marked[v];
    }

public int count(){
    return count;
    }
}

深度優先搜索可處理問題

  • 連通性。可以輕鬆回答s是否與v頂點相連,DepthFirstSearch.marked
  • 單點路徑。可以回答是否存在從s到目的頂點之間的有效路徑

尋找路徑

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章