慕尼黑8549860
2019-12-18 12:13:36
求任意兩個(gè)頂點(diǎn)之間所有聯(lián)系的圖算法我試圖確定完成以下任務(wù)的最佳時(shí)間效率算法。我有一套記錄。對于這組記錄,我有連接數(shù)據(jù),它指示來自這個(gè)集合的記錄對如何彼此連接。這基本上代表了一個(gè)無向圖,記錄是頂點(diǎn),連接數(shù)據(jù)是邊。集合中的所有記錄都有連接信息(即不存在孤立記錄;集合中的每個(gè)記錄連接到集合中的一個(gè)或多個(gè)其他記錄)。我希望從集合中選擇任意兩個(gè)記錄,并且能夠顯示所選記錄之間的所有簡單路徑。所謂“簡單路徑”是指路徑中沒有重復(fù)記錄的路徑(即僅有限路徑)。注意:兩個(gè)選擇的記錄總是不同的(即起始點(diǎn)和結(jié)束頂點(diǎn)永遠(yuǎn)不會相同;沒有循環(huán))。例如: If I have the following records:
A, B, C, D, E
and the following represents the connections:
(A,B),(A,C),(B,A),(B,D),(B,E),(B,F),(C,A),(C,E),
(C,F),(D,B),(E,C),(E,F),(F,B),(F,C),(F,E)
[where (A,B) means record A connects to record B]如果我選擇B作為我的起始記錄,選擇E作為我的結(jié)束記錄,我會希望通過記錄連接找到所有簡單的路徑來連接記錄B以記錄E。 All paths connecting B to E:
B->E
B->F->E
B->F->C->E
B->A->C->E
B->A->C->F->E這是一個(gè)例子,在實(shí)踐中,我可能有包含數(shù)十萬條記錄的集合。
3 回答

千萬里不及你
TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超9個(gè)贊

楊__羊羊
TA貢獻(xiàn)1943條經(jīng)驗(yàn) 獲得超7個(gè)贊
[P]是表示當(dāng)前路徑的頂點(diǎn)列表。 [X]是滿足條件的路徑列表 [s]是源頂點(diǎn)。 [d]是目標(biāo)頂點(diǎn)。 [C]是當(dāng)前頂點(diǎn)(路徑查找例程的參數(shù))。
1 PathList [p] 2 ListOfPathLists [x] 3 Vertex [s], [d] 4 PathFind ( Vertex [c] ) 5 Add [c] to tail end of list [p] 6 For each Vertex [v] adjacent to [c] 7 If [v] is equal to [d] then 8 Save list [p] in [x] 9 Else If [v] is not in list [p] 10 PathFind([v]) 11 Next For 12 Remove tail from [p] 13 Return
添加回答
舉報(bào)
0/150
提交
取消