Manipulación de datos
1. Introducción
2. Creación de los grafos
2.1. Grafos no dirigidos y dirigidos
Formalmente, un grafo $G=(V,E)$
En igraph hay una clase "igraph" para grafos, a continuación, veremos:
- Formas de crear un objeto de la clase igraph en R.
- Formas de extraer y resumir la información en ese objeto.
- library(igraph)
- g<-graph.formula("1-2,1-3,2-3,2-4,3-5,4-5,4-6,4-7,5-6,6-7")
- $V(G)$, ver los vértices del grafo $G$.
- $E(G)$, ver las aristas del grafo $G$.
- str(G), ver los vértices y reconocer con que vértices está conectado.
- plot(G), representación visual del grafo.
- dg <- graph.formula("1-+2,1-+3,2++3" )
- dg <- graph.formula("Sam-+Mary,Sam-+Tom,Mary++Tom")
- V(dg)$name <- c("Sam","Mary","Tom"")
2.2. Representaciones para Grafos
- read.graph, leer datos almacenados en un archivo.
- write.graph, se puede guardar grafos en varios formatos.
2.3. Operaciones sobre Grafos
- Extracción de parte de un grafo.
- Eliminación de vértices.
- Adición de aristas.
- Combinación de varios grafos.
- h <- induced.subgraph("g,1:5")
- h <- g - vertices("c(6,7)")
- h <-h+ vertices("c(6,7)")
- g <- h + edges("c(4,6),c(4,7),c(5,6),c(6,7)")
- h1<-h
- h2<-graph.formula("4-6,4-7,5-6,6-7")
- g<x-graph.union("h1,h2")
3. Decoración de grafos
3.1. Atributos de vértice, arista y grafo
En el corazón de una representación basada en la red de datos de un sistema complejo habrá un grafo, también se pueden obtener otros datos relevantes, estos se pueden considerar como atributos: valores asociados con el grafo correspondiente y equipar un grafo con estos atributos se denomina decoración del grafo, los vértices o las aristas de un grafo están decorados con atributos, aunque el grafo en su conjunto también puede estar decorado.
En igraph, los elementos de los objetos grafos pueden equiparse con atributos solo usando el operador "$".
Los atributos de vértice son variables indexadas por vértices y pueden ser de tipo discreto o continuo. Por ejemplo, los nombres de los tres actores en el grafo $dg$ son:
- V(dg)$name
- [1] "Sam" "Mary" "Tom"
- V(dg)$gender <- c("M","F","M")
- V(g)$color <− "red"
- is.weighted(g) [1] FALSE, Se retorna falso por no hallar una ponderación en el grafo.
- wg <- g
- E(wg)$weight<_runif(ecount(wg))
- is.weighted(wg) [1] TRUE Como se le dio un valor al atributo $𝑤𝑒𝑖𝑔ℎ𝑡 ya existe una ponderación, por eso da como resultado verdadero.
- g$name<-Toy Graph"
- Marco de datos de vértice
- La primera columna contiene los nombres de los vértices.
- El resto contienen los valores de un atributo de vértice dado.
- Marco de datos de arista
- Las 2 primeras columnas contienen una lista de aristas que definen el grafo.
- Cada una de las otras columnas contiene los valores de un atributo de arista dado.
- library(sand)
- g.lazega<-graph.data.frame(elist.lazega,directed="FALSE", vertices=v.attr.lazega)
- g.lazega$<-Lazega Lawyers
- vcount(g.lazega)
- 136
- list.vertex.attributes(g.lazega)
- [1] "name" "Seniority" "Status" "Gender"
- [5] "Office" "Years" "Age" "Practice"
- [9] "School"
4. Hablando acerca de grafos
- is.simple(g)
- [1] TRUE, Retorna verdadero si el grafo es simple, sino será falso.
- mg<-g+edge(2,3), en $G$ ya existía una arista entre los vértices 2 y 3
- is.simple(mg) [1] FALSE
- E(mg)$weight <- 1, al grafo mg se le da una ponderación de 1.
- wg2 <- simplify(mg, Elimina posibles bucles.
- is.simple(wg2) [1] TRUE
- Después de asignarse con otro nombre se confirma que un multígrafo puede convertirse en un grafo simple.
- neighbors(g,5)
- degree(g)
- degree(dg,mode="in")
- degree(dg,mode="out")
- is.connected(g)
- clusters(g)
- $membership [1] 1 1 1 1 1 1 1
- $csize [1] 7
- $no [1] 1
- is.connected(dg,mode="weak")
- is.connected(dg,mode="strong")
- diameter(g, weights=NA)
- La unión disjunta de tales grafos se llama bosque.
- Los árboles son de fundamental importancia en el análisis de redes.
- Sirven como una estructura de datos clave en el diseño eficiente de muchos algoritmos computacionales.
- Un dígrafo cuyo grafo subyacente es un árbol se llama árbol dirigido.
- Estos árboles tienen asociado un vértice especial llamado raíz.
- Un vértice que precede a otro en un camino desde la raíz se llama antepasado, mientras que un vértice que sigue a otro se llama descendiente.
- Los antepasados inmediatos se denominan padres y los descendientes inmediatos hijos.
- Un vértice sin hijos se le llama hoja.
- La distancia desde la raíz hasta la hoja más lejana se llama profundidad del árbol.
- Esta representación de un árbol se muestra en la figura 3
- Son útiles para conceptualizar un vértice y sus vecinos inmediatos, en la figura 4 se muestra un ejemplo de una estrella de 6.
- is.dag(dg)
- g.bip<-graph.formula(actor1:actor2:actor3,movie1:movie2,
- actor1:actor2 - movie1, Primero se definen los grupos.
- actor2:actor3 - movie2), Después se definen las relaciones entre ambos grupos.
- proj <- bipartite.projection(g.bip)
- str(proj[[1]]) [1] actor1--actor2 actor2--actor3
- str(proj[[2]]) [1] movie1--movie2
- Actor 2 es adyacente tanto a actor1 como a actor3.
- El primer actor estaba en películas con cada uno de los últimos actores,
- Estos últimos no estaban juntos en ninguna película, por lo tanto, no comparten una ventaja.
- Consiste en una sola arista definida entre movie1 y movie2.
- Ambas películas tenían actores en común.
Comentarios
Publicar un comentario