簡體   English   中英

查找N個節點集之間的所有可能路徑

[英]Find all possible paths between N set of nodes

我在開始和結束時有N個節點,它們可以配對為N個集合( 1 to 1, .., n to n, .., N to N )。 但是,我在開始和結束之間有M階段(可以假定為並行階段),每個階段都有R個節點,其中R>=N

如果我考慮從開始n節點到結束n節點(即n to n對),則我必須經過(M+1)躍點才能到達結束節點,並且有R^M可能的路徑。 因此,所有對的所有可能路徑為N*R^M

我將每個鏈接加權為:在階段m節點i和在階段m+1節點j之間的鏈接為w_{i,j}^{m,m+1}

我想編寫一個MATLAB代碼以生成每對所有可能的路徑,即N對。 有人可以幫幫我嗎?

我僅對2個具有3個節點的階段的2個起點和終點使用窮舉搜索進行了嘗試。 但是我不知道如何用有效的方法為一般網絡編寫此代碼。 請幫我 !!!

補充:例如: N = M = 2, R = 3我有R^M=2^3=9對每對可能的路徑。 對於這兩對,我都有18 1 to 1對,可能的路徑設定為:

{1-1-1-1, 1-1-2-1,1-1-3-1
1-2-1-1, 1-2-2-1,1-2-3-1
1-3-1-1, 1-3-2-1,1-3-3-1} 

相應的權重設置為( 0代表開始):

{w_{1,1}^{0,1}-w_{1,1}^{1,2}-w_{1,1}^{2,3}; w_{1,1}^{0,1}-w_{1,2}^{1,2}-w_{2,1}^{2,3}; w_{1,1}^{0,1}-w_{1,3}^{1,2}-w_{3,1}^{2,3}, ........., w_{1,3}^{0,1}-w_{3,3}^{1,2}-w_{3,1}^{2,3}}

2 to 2對也一樣。

實際上,我的詳盡搜索將每個躍點生成為具有隨機生成的權重的矩陣。 從開始到第一跳: A=rand(2,3) ,然后從第一跳到第二跳: B=rand(3,3) ,從第二跳到結束: C=rand(3,2)

好的,因此,根據您的更新,您只想生成笛卡爾積

{i} X {1,2,...,R} ^ MX {j}

一種快速而骯臟的方法是做這樣的事情:

paths = zeros(R ^ M, M + 2); # initialize array
paths(:, 1) = i;              # start all paths at node i
paths(:, M+2) = j;            # end all paths at node j

for c = 1:M
  for r = 1:(R ^ M)
    paths(r, c+1) = mod(idivide(r-1, R ^ (c-1)), R)+1 ;
  end
end

然后,您可以遍歷paths並計算權重。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM