1

私はRのigraphで有向グラフに取り組んでいます。それを、前者の逆数のエッジだけが持続する無向グラフに変換しようとしています。簡単なはずですが、奇妙な結果が出ています。

最初はそのようにしました

    library(igraph)
    load("dmNet.Rdata")
    #http://www.unet.univie.ac.at/~a0406222/dmNet.Rdata

    recNet <- as.undirected(net, mode = "mutual",edge.attr.comb="sum")

E(recNet)$ weightをチェックすると、重みが1のエッジがたくさんありますが、2つの相反するエッジの合計は少なくとも2でなければならないため、これは不可能です。

    recNet <- as.undirected(net, mode = "mutual",edge.attr.comb="c")

これで、実際には1つの値だけを含むエッジがいくつかあることがわかります。私の新しいグラフrecNetには、ネットの非相反的なエッジが含まれているようです。私は何を間違っているのですか、それとも「相互オプション」を誤解していますか?

4

1 に答える 1

3

これは、一部のエッジがグラフの自己ループであるために発生します。重みが1になるすべてのエッジは、自己ループです。

all(which(E(recNet)$weight == 1) %in% which(is.loop(recNet)))
# [1] TRUE

明らかに、自己ループは有向グラフの相互エッジと見なされます。自己ループを非相互ループと見なしたい場合は、グラフからそれらを削除するだけです。ただし、一部の頂点には複数の自己ループがあり、これらを削除したくない場合があるため、注意してください。

于 2012-10-22T14:18:53.837 に答える