2 つの無向グラフがあります。
require (igraph)
gsmall <- graph(c(1,3,5,8,3,5), directed = F)
gbig <- graph(c(3, 5, 3, 10, 4, 5, 4, 10, 5, 7, 5, 8, 5, 9, 7, 10, 8, 10, 9, 10), directed = F)
gbig
に同形のサブグラフが含まれているかどうかを知りたいですgsmall
。または、正確に言えば、特定のマッピングが 1 つ必要です (存在する場合)。
igraph
R パッケージでは、関数を使用してこれを行うことができますsubgraph_isomorphisms
。問題は、この関数は、この小さな例ではすでに高価なすべての同型を提供することです。
だから私graph.subisomorphic.lad(gsmall, gbig, all.maps =F)
は私を与えるしようとしました
$iso
[1] TRUE
$map
[1] 3 1 10 6 9 8 4 5
$maps
NULL
結果として。$map
必要な情報が含まれていると思われます。gsmall
しかし、これらの番号を使用して、 の名前が変更されたバージョンgsmall
が実際に のサブグラフになるようにノードの名前を変更する方法がわかりませんgbig
。subgraph_isomorphisms
ヘルプによると、「最初のグラフから2番目のグラフへのすべてのマッピングに対応する頂点シーケンスのリスト」を返す出力に同じ変換の問題がありますが、これは理解できません。
誰かが私が望む名前を変更する方法を教えてもらえますか? $map
の結果のエントリに必要なものが含まれているという仮定が正しければgraph.subisomorphic.lad(gsmall, gbig, all.maps =F)
、その時点からその名前を変更するにはどうすればよいですか? そうでない場合、別の方法でそれを達成する方法は?
前もって感謝します。