我有一個有向循環矩陣,需要提取任何i和j之間的所有簡單路徑。從igraph檢索路徑名列表all_simple_paths
以下是我的前任。矩陣:
>M2<-matrix(c(1,1,0,0,0,1,1,1,1,0,0,1,1,1,0,0,1,0,1,1,0,0,0,1,1), 5, byrow=T)
>colnames(M2)<-c("A", "B", "C", "D", "E")
>row.names(M2)=colnames(M2)
>M2
A B C D E
A 1 1 0 0 0
B 1 1 1 1 0
C 0 1 1 1 0
D 0 1 0 1 1
E 0 0 0 1 1
我使用igraph
到矩陣轉換爲使用graph_from_adjency_matrix
函數的曲線圖的對象。
>graph<-graph_from_adjacency_matrix(M2, mode=c("directed"), weighted=NULL, diag=F, add.colnames=NULL, add.rownames=NA)
>graph
IGRAPH DN-- 5 9 --
+ attr: name (v/c)
+ edges (vertex names):
[1] A->B B->A B->C B->D C->B C->D D->B D->E E->D
從那裏我使用all_simple_paths
函數來獲取i和j之間的所有簡單路徑。這裏開始我的問題。
1)我可以指定j(參數to
有to=V(graph)
)是所有可能的結束頂點。但我無法指定from
參數來計算查找所有頂點的路徑有可能的起點。我必須一次性指定每個變量。任何解決方案
2)all_simple_path
函數運行良好,給我所有簡單的路徑之間我和j,例如開始在A
,在任何可能的Ĵ結束的簡單路徑:
>Simple_path_list<-all_simple_paths(graph, from ="A", to=V(graph), mode = c("out"))
>Simple_path_list
[[1]]
+ 2/5 vertices, named:
[1] A B
[[2]]
+ 3/5 vertices, named:
[1] A B C
[[3]]
+ 4/5 vertices, named:
[1] A B C D
[[4]]
+ 5/5 vertices, named:
[1] A B C D E
[[5]]
+ 3/5 vertices, named:
[1] A B D
[[6]]
+ 4/5 vertices, named:
[1] A B D E
我的問題是,我需要收集所有這些路徑,並把名單上,如:
Paths
A B
A B C
A B C D
A B C D E
A B D
A B D E
我試圖創建一個列表並使用正常的list<-Simple_path_list[1]
左右調用路徑名稱,但我總是會檢索與路徑相關的頂點數量信息(例如,+ 4/5 vertices, named
)。關於如何僅檢索路徑名稱而不檢索其他信息的任何想法?
確定,通過使用 '> lapply(V(圖形),函數(X)all_simple_paths(圖中,從= X)中發現的答案的點1) )' 它給出了每個開始變量的所有可能的簡單路徑的列表。 –