1

igraph function を使用して、グラフ内のスパニング ツリーを見つけたいと思いますgraph.bfs。方法を教えていただけますか?

PS:$fatherから返された値の情報を使用しようとしましgraph.bfsたが、結果が混乱します。次に例を示します。

g <- graph(c(1,2,2,6,1,4,4,6,5,6,1,5,5,3,3,4), directed=FALSE)
plot(g)

tmp <- graph.bfs(g, root=1, neimode='all', order=TRUE, father=TRUE,callback=f)

スパニングツリーを見つける

結果は次のとおりです tmp$order = 1 2 4 5 6 3tmp$father=0 1 4 1 1 2

この情報を使用して、$fatherすべてのスパニング ツリーを見つけることはできますか?

4

4 に答える 4

3

ベクトルはノードによってインデックス付けされます。fatherつまり、 と同じ順序ではありませんorder

library(igraph)
g <- graph(c(1,2,2,6,1,4,4,6,5,6,1,5,5,3,3,4), directed=FALSE)
r <- graph.bfs(g, root=1, neimode='all', order=TRUE, father=TRUE)
h <- graph( rbind(r$order, r$father[r$order])[,-1], directed=FALSE )
plot(h)

この例では、次のものがあります。

order:  1 2 4 5 6 3
father: 0 1 4 1 1 2.

ith 要素は、走査前の順序での th ノードorderの名前 (またはインデックス) です。i

i番目の要素は、 の 番目の要素ではなく、fatherインデックスを持つノードの親の名前 (またはインデックス)です。の番目の要素の親は です。これは、エッジを定義するために必要なものです。iiorderiorderparent[order[i]]

したがって、ツリーのエッジは次のようになります。

order:  1 2 4 5 6 3
        | | | | | |
father: 0 1 1 1 2 4.
于 2013-08-01T10:04:35.460 に答える
1

次のようなエラーを回避するには: simple_vs_index(x, ii, na_ok) のエラー: 不明な頂点が選択されました。コード ステートメントの 1 つを次のように変更する必要があります。

h <- graph( rbind(r$order, r$father[r$order, na_ok = TRUE])[,-1], directed=FALSE )

これにより、インデックスに NA を含めることができます。

于 2016-10-08T17:17:39.740 に答える