第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

找到兩個(gè)圖節(jié)點(diǎn)之間的所有路徑

找到兩個(gè)圖節(jié)點(diǎn)之間的所有路徑

慕運(yùn)維8079593 2019-08-02 14:31:09
找到兩個(gè)圖節(jié)點(diǎn)之間的所有路徑我正在研究Dijkstras算法的實(shí)現(xiàn),以檢索路由網(wǎng)絡(luò)上的互連節(jié)點(diǎn)之間的最短路徑。我有實(shí)施工作。當(dāng)我將起始節(jié)點(diǎn)傳遞給算法時(shí),它返回所有節(jié)點(diǎn)的所有最短路徑。我的問題:如何檢索從節(jié)點(diǎn)A到節(jié)點(diǎn)G的所有可能路徑,甚至是從節(jié)點(diǎn)A返回到節(jié)點(diǎn)A的所有可能路徑
查看完整描述

3 回答

?
天涯盡頭無女友

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超9個(gè)贊

找到所有可能的路徑是一個(gè)難題,因?yàn)榇嬖谥笖?shù)的簡(jiǎn)單路徑。即使找到第k個(gè)最短路徑[或最長(zhǎng)路徑]也是NP-Hard

一個(gè)可能的解決方案,從找到的所有路徑[或所有路徑達(dá)到一定長(zhǎng)度] stBFS,沒有保持visited一套,或加權(quán)版本-你可能想使用統(tǒng)一的搜索成本

注意,同樣在具有周期每圖表[它不是一個(gè)DAG ]可能存在的路徑之間無限多st。


查看完整回答
反對(duì) 回復(fù) 2019-08-02
?
慕妹3242003

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超6個(gè)贊

我已經(jīng)實(shí)現(xiàn)了一個(gè)版本,它基本上找到了從一個(gè)節(jié)點(diǎn)到另一個(gè)節(jié)點(diǎn)的所有可能路徑,但它沒有計(jì)算任何可能的“周期”(我正在使用的圖形是循環(huán)的)。所以基本上,沒有一個(gè)節(jié)點(diǎn)會(huì)在同一路徑中出現(xiàn)兩次。如果圖是非周期性的,那么我想你可以說它似乎找到了兩個(gè)節(jié)點(diǎn)之間的所有可能路徑。它似乎工作得很好,并且對(duì)于我的圖形大小~150,它幾乎立即在我的機(jī)器上運(yùn)行,雖然我確定運(yùn)行時(shí)間必須是指數(shù)的,所以它會(huì)開始變得很慢,因?yàn)閳D變大了。

這是一些Java代碼,演示了我實(shí)現(xiàn)的內(nèi)容。我確信必須有更高效或更優(yōu)雅的方式來做到這一點(diǎn)。

Stack connectionPath = new Stack();List<Stack> connectionPaths = new ArrayList<>();// Push to connectionsPath the object that would be passed as the parameter 'node' into the method belowvoid findAllPaths(Object node, Object targetNode) {
    for (Object nextNode : nextNodes(node)) {
       if (nextNode.equals(targetNode)) {
           Stack temp = new Stack();
           for (Object node1 : connectionPath)
               temp.add(node1);
           connectionPaths.add(temp);
       } else if (!connectionPath.contains(nextNode)) {
           connectionPath.push(nextNode);
           findAllPaths(nextNode, targetNode);
           connectionPath.pop();
        }
    }}


查看完整回答
反對(duì) 回復(fù) 2019-08-02
?
精慕HU

TA貢獻(xiàn)1845條經(jīng)驗(yàn) 獲得超8個(gè)贊

我會(huì)給你一個(gè)(有點(diǎn)小)的版本(盡管可以理解,但我認(rèn)為)是一個(gè)科學(xué)的證明,你不能在可行的時(shí)間內(nèi)做到這一點(diǎn)。

我要證明的是,在任意圖中枚舉兩個(gè)選定節(jié)點(diǎn)和不同節(jié)點(diǎn)(例如st)之間的所有簡(jiǎn)單路徑的時(shí)間復(fù)雜度G不是多項(xiàng)式的。請(qǐng)注意,由于我們只關(guān)心這些節(jié)點(diǎn)之間的路徑數(shù)量,因此邊緣成本并不重要。

當(dāng)然,如果圖表具有一些選擇良好的屬性,這可能很容易。我考慮的是一般情況。


假設(shè)我們有一個(gè)多項(xiàng)式算法,列出s和之間的所有簡(jiǎn)單路徑t。

如果G已連接,則列表為非空。如果G不是和s并且t在不同的組件中,列出它們之間的所有路徑真的很容易,因?yàn)闆]有!如果它們?cè)谕粋€(gè)組件中,我們可以假裝整個(gè)圖形僅包含該組件。所以我們假設(shè)G確實(shí)是連通的。

所列出的路徑數(shù)必須是多項(xiàng)式的,否則算法不能全部返回。如果它列舉了所有這些,它必須給我最長(zhǎng)的一個(gè),所以它就在那里。擁有路徑列表,可以應(yīng)用一個(gè)簡(jiǎn)單的過程指向我這是最長(zhǎng)的路徑。

我們可以證明(盡管我不能想出一種有說服力的方式來表達(dá)它),這條最長(zhǎng)的路徑必須遍歷所有的頂點(diǎn)G。因此,我們剛剛找到了一個(gè)帶有多項(xiàng)式過程的哈密頓路徑!但這是一個(gè)眾所周知的NP難題。

然后我們可以得出結(jié)論,我們認(rèn)為我們所擁有的這種多項(xiàng)式算法不太可能存在,除非P = NP。


查看完整回答
反對(duì) 回復(fù) 2019-08-02
  • 3 回答
  • 0 關(guān)注
  • 2165 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)