2016-08-19 5 views
1

r Ich habe diese 3 IGRAPH Objekte:Identifizieren Anzahl von gleichen/verschiedenen Kanten zwischen zwei Objekten IGRAPH

g1 <- graph(edges=c(1, 2, 2, 3, 3, 1), n=3, directed=T) 
g2 <- graph(edges=c(1, 2, 2, 3, 1, 3), n=3, directed=T) 
g3 <- graph(edges=c(1, 2, 2, 3, 1, 3, 3, 4), n=4, directed=T) 


IGRAPH D--- 3 3 -- 
+ edges: 
[1] 1->2 2->3 3->1 

IGRAPH D--- 3 3 -- 
+ edges: 
[1] 1->2 2->3 1->3 

IGRAPH D--- 4 4 -- 
+ edges: 
[1] 1->2 2->3 1->3 3->4 

Ich mag die Kanten von g1 zu g2 vergleichen und von g2 bis g3. Ich möchte die Anzahl der Kanten, die genau gleich sind, die Anzahl der Kanten, die umgekehrt werden (z. B. 1 -> 3 ändert sich zu 3 -> 1) und die Anzahl der zusätzlichen Kanten zählen.

Gibt es eine einfache Funktion für diese Art von Kantenvergleich?

Wie ich es derzeit tun, ist die Kantenliste zu bekommen und dann eine Reihe Matching-Verfahren tun zu vergleichen, was existiert und was nicht:

igraph::get.edgelist(g1) 
igraph::get.edgelist(g2) 
igraph::get.edgelist(g3) 



> igraph::get.edgelist(g1) 
    [,1] [,2] 
[1,] 1 2 
[2,] 2 3 
[3,] 3 1 
> igraph::get.edgelist(g2) 
    [,1] [,2] 
[1,] 1 2 
[2,] 2 3 
[3,] 1 3 
> igraph::get.edgelist(g3) 
    [,1] [,2] 
[1,] 1 2 
[2,] 2 3 
[3,] 1 3 
[4,] 3 4 

Dies scheint jedoch langatmig. Gibt es eine einfachere Möglichkeit, zwei Objekte in der gigraph zu vergleichen?

Der Ausgang für g1 g2 wäre:

same reverse addition 
    2  1   0 

und g2 bis g3 wäre:

same reverse addition 
    3  0   1 

Antwort

1

Ich bin nicht sicher, ob es nicht weniger gewunden ist, aber Sie die verwenden könnte Kreuzungs- und Differenzoperatoren in der folgenden Art und Weise

u1 <- as.undirected(g1) 
u2 <- as.undirected(g2) 
u3 <- as.undirected(g3) 

same=length(E(intersection(g2,g1))) 
reverse=length(E(difference(g2,g1)))-length(E(difference(u2,u1))) 
addition=length(E(difference(g2,g1)))-reverse 

Dies funktioniert nur, wenn g2 ein Subgraphen ist h von g1, aber es scheint, dass das das Problem ist, das Sie in der Frage gestellt haben, da Sie nicht an der Anzahl der Kantenlöschungen interessiert sind.

Verwandte Themen