[英]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.