私はいくつかの木のような構造の画像からグラフを抽出しました。グラフは、たとえその点が分岐または端ではない(すなわち、ノード順序が2である)場合でも、各関節点の頂点を有する。これらの2次頂点を削除したいが、これらの中間体を介して接続されていた分岐点または終了頂点が1つのエッジで接続されるように接続性を維持したい。小さなグラフでは、頂点を削除してエッジを1つずつ接続することでこれを行うことができますが、10,000+エッジで作業する場合はこれが遅いです。igraph in R:接続を維持しながら、非分岐点の頂点を削除するにはどうしたらいいですか?
これは開始グラフの例です。 I 9と同様に4を接続するエッジを挿入している間、私はエッジを挿入しながら、頂点5を削除したい、8および6頂点(例えば)削除したい7〜4
edge_matrix = cbind(
c(1,2,3,4,4,5,6,8,9,9,10,11),
c(2,3,4,5,6,7,8,9,10,11,12,13))
example_graph = graph.data.frame(edge_matrix, directed=F)
structure(list(13, FALSE, c(1, 2, 3, 4, 5, 10, 6, 7, 8, 9, 11,
12), c(0, 1, 2, 3, 3, 4, 5, 6, 7, 7, 8, 9), c(0, 1, 2, 3, 4,
6, 7, 8, 9, 5, 10, 11), c(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
), c(0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12), c(0, 1, 2,
3, 5, 6, 7, 8, 10, 11, 12, 12, 12, 12), list(c(1, 0, 1), structure(list(), .Names = character(0)),
structure(list(name = c("1", "2", "3", "4", "5", "6", "8",
"9", "10", "11", "7", "12", "13")), .Names = "name"), list()),
<environment>), class = "igraph")
うわーで動作している、それは素晴らしいことです!これは、妥当な時間内に大きなグラフを処理しました。これを将来使用する人にとって:このメソッドは頂点1に隣接するdegree-2ノードを捕捉しません。 – Alizaybak