国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

無(wú)向圖的處理算法(三)

JeOam / 3064人閱讀

摘要:那還有一個(gè)重要的問題就是,從到是否存在一條路徑,如果有找出其中最短的那條。最短路徑問題當(dāng)然這路考慮的是每條邊的都是權(quán)值為的情況。解決這個(gè)問題的算法就是廣度優(yōu)先搜索算法下面給出其實(shí)現(xiàn)代碼,其中的使用了一個(gè)隊(duì)列用來保存需要遍歷的頂點(diǎn)。

上一篇講了從一個(gè)頂點(diǎn)到另一個(gè)頂點(diǎn)是否存在路徑,用的時(shí)深度優(yōu)先搜索。那還有一個(gè)重要的問題就是,“從s到v是否存在一條路徑,如果有找出其中最短的那條。”最短路徑問題
當(dāng)然這路考慮的是每條邊的都是權(quán)值為1的情況。
解決這個(gè)問題的算法就是廣度優(yōu)先搜索算法
下面給出其實(shí)現(xiàn)代碼,其中的使用了一個(gè)隊(duì)列用來保存需要遍歷的頂點(diǎn)。其實(shí)很上一篇中的代碼結(jié)構(gòu)差不多,只不過遍歷的頂點(diǎn)是依次從隊(duì)列中取出的

package Graph;

import java.util.Stack;

import Queue.Queue;

public class BreadthFirstPaths {
    private boolean[] marked;
    private int[] edgeTo;
    private final int s;

    public BreadthFirstPaths(Graph G,int s)
    {
        marked = new boolean[G.V()];
        edgeTo = new int[G.V()];
        this.s = s;
        bfs(G,s);
    }
    private void bfs(Graph G,int s)
    {
        Queue queue = new Queue();
        marked[s] = true;
        queue.enqueue(s);
        while(!queue.isEmpty())
        {
            int v = queue.dequeue();//從隊(duì)列中刪除改頂點(diǎn)
            for(int w:G.adj(v))//對(duì)該頂點(diǎn)相鄰的所有頂點(diǎn)進(jìn)行遍歷,標(biāo)記為訪問過,同時(shí)加入隊(duì)列
            {
                edgeTo[w] = v;
                marked[w] = true;
                queue.enqueue(w);
            }
        }
    }
    public boolean hasPathTo(int v){
        return marked[v];
    }
    public Iterable pathTo(int v)
    {
        Stack path = new Stack();
        while(edgeTo[v] != s)//同上一篇,通過該數(shù)組往上回溯
        {
            path.push(v);
            v = edgeTo[v];
        }
        path.push(s);
        return path;
    }
}

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/64339.html

相關(guān)文章

  • 無(wú)向圖的實(shí)現(xiàn)和一些常用算法(一)

    摘要:無(wú)向圖的數(shù)據(jù)結(jié)構(gòu)邊數(shù)邊的數(shù)目鄰接表,存儲(chǔ)與該節(jié)點(diǎn)相鄰的節(jié)點(diǎn),一個(gè)鏈表數(shù)組無(wú)向圖的創(chuàng)建一個(gè)含有個(gè)節(jié)點(diǎn)但不含邊的無(wú)向圖從輸入流中讀取一幅圖返回圖中有多少個(gè)節(jié)點(diǎn)邊數(shù)添加一條邊節(jié)點(diǎn)相鄰的所有頂點(diǎn)對(duì)象的字符串表示實(shí)現(xiàn)很簡(jiǎn)單鄰接表既然實(shí)現(xiàn)了圖這種數(shù)據(jù)結(jié) 無(wú)向圖的數(shù)據(jù)結(jié)構(gòu) Class Graph private final int V; 邊數(shù) private int E; 邊的數(shù)目 privat...

    Lsnsh 評(píng)論0 收藏0
  • 無(wú)向圖的處理算法(四)連通分量

    這篇講的是連通分量,連通分量是深度優(yōu)先搜索算法的一個(gè)應(yīng)用。 每進(jìn)行了一次dfs,就會(huì)找到一條連通分量。 定義如下的API public class CC CC(Graph g) 預(yù)處理構(gòu)造函數(shù) boolean connected(int v,in w) v和w連通嗎 int count() 改圖中的連通分量個(gè)數(shù) int id(int v) ...

    asce1885 評(píng)論0 收藏0
  • 無(wú)向圖的處理算法(二)

    摘要:在圖中,我們很自然地會(huì)問這幾個(gè)問題從一個(gè)頂點(diǎn)能否到達(dá)頂點(diǎn)以為頂點(diǎn)能到達(dá)的所有頂點(diǎn)解決能否到達(dá)問題的算法就是深度優(yōu)先算法,使用深度優(yōu)先算法獲得的從到的路徑的時(shí)間與路徑的長(zhǎng)度成正比。 在圖中,我們很自然地會(huì)問這幾個(gè)問題 從一個(gè)頂點(diǎn)s能否到達(dá)頂點(diǎn)v? 以s為頂點(diǎn)能到達(dá)的所有頂點(diǎn)? 解決能否到達(dá)問題的算法就是深度優(yōu)先算法,使用深度優(yōu)先算法獲得的從s到v的路徑的時(shí)間與路徑的長(zhǎng)度成正比。 ...

    bluesky 評(píng)論0 收藏0
  • 算法(第4版) Chapter 4.1 無(wú)向

    摘要:邊僅由兩個(gè)頂點(diǎn)連接,并且沒有方向的圖稱為無(wú)向圖。用分隔符當(dāng)前為空格,也可以是分號(hào)等分隔。深度優(yōu)先算法最簡(jiǎn)搜索起點(diǎn)構(gòu)造函數(shù)找到與起點(diǎn)連通的其他頂點(diǎn)。路徑構(gòu)造函數(shù)接收一個(gè)頂點(diǎn),計(jì)算到與連通的每個(gè)頂點(diǎn)之間的路徑。 Algorithms Fourth EditionWritten By Robert Sedgewick & Kevin WayneTranslated By 謝路云Chapter...

    kamushin233 評(píng)論0 收藏0
  • 算法之不定期更新()(2018-04-24)

    摘要:實(shí)現(xiàn)這個(gè)想法之后就發(fā)現(xiàn),時(shí)間復(fù)雜度真的太高了。本期算法小分享就到這里咯剛做完探索里的初級(jí),還有好多已經(jīng)說爛了的題就不分享了。如果有什么意見或者想法歡迎在評(píng)論區(qū)和我交流 題目 input: n // 代表無(wú)向圖的頂點(diǎn)數(shù) // 從1開始 m // 無(wú)向圖的邊數(shù) arr1 // 各邊的情況,形如[[1, 2], [3, 4],...](代表頂點(diǎn)0和頂點(diǎn)2相連,頂點(diǎn)3和頂點(diǎn)4相連) ...

    darryrzhong 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<