14
Practica #2 Análisis de Redes Complejas Laboratorio de Sistemas Adaptativos Martes – M4.M5 Angel Rodolfo Reyna Acevedo 1459652 Lucía Guadalupe Moyeda Cornejo 1145154 Adrian Vega Magaña 1497896 Lucero Itzel Ramos García 1491994

Practica #2

Embed Size (px)

Citation preview

Practica #2Análisis de Redes Complejas

Laboratorio de Sistemas AdaptativosMartes – M4.M5

Angel Rodolfo Reyna Acevedo 1459652Lucía Guadalupe Moyeda Cornejo 1145154

Adrian Vega Magaña 1497896Lucero Itzel Ramos García 1491994

En esta practica de laboratorio , tuvimos que elegir uno de los temas vistos en la Unidad 2 de Sistemas Adaptativos y decidimos realizar el Análisis de Redes Complejas.

Primero definiremos unos conceptos básicos Una red es un conjunto de vértices unidos por un conjunto de

aristas Un grafo es un conjunto de objetos

llamados vértices o nodos unidos por enlaces llamados aristas o arcos, que permiten representar relaciones binarias entre elementos de un conjunto.

Una red compleja se refiere a una red (grafo) que posee ciertas características topológicas no triviales que no ocurren en redes simples(una cola pesada en la distribución de grado, un alto coeficiente de agrupamiento, una estructura comunitaria a muchas escalas, y evidencias de una estructura jerarquizada).

Introducción

El objetivo de esta practica, es poner en practica el análisis de las métricas en redes complejas

Aprender a utilizar nuevas tecnologías para su creación y análisis

Objetivo

Uno de los motivos que nos llevo a seleccionar este tema, es que no fue tan hablado entre los compañeros como los AG, decidimos que queríamos hacer algo diferente, ver como podrían aplicarse los otros temas en X lenguaje

Lo que confirmo el tema, es que las redes se viven a diario en muchos ámbitos, sociales, tecnológicos, etc. Y quisimos adentrarnos un poco mas, para poder entender todo lo que nos rodea cada día

Justificación

Para desarrollar esta practica, utilizamos Python y tres librerías especializadas en el tema de redes complejas:

Numpy: extensión de Python que agrega mayor soporte para vectores y matrices

Networkx: es una librería de Python para el estudio de graficas y redes.

Matplotlib:  librería para la generación de gráficos a partir de datos contenidos en listas o array

Desarrollo

El propósito del programa es el de crear un grafo con un numero aleatorio de vértices y un numero aleatorio de aristas para su posterior análisis.

Una vez obtenido el grafo, se analizan las métricas básicas , vistas en clase.

Proposito

Densidad Geodésica Diámetro Centralidad de grado Matriz de adyacencia

Metricas

def __init__(self):self.G = nx.Graph();self.nodos = randint(11,25);print 'La cantidad de nodos es: ',

self.nodos;for n in range(0,self.nodos):

self.G.add_node(n);print(self.G.nodes());

#Generar las aristasdef Aristas(self):

aristas = randint(10,25);print 'La cantidad de aristas es: ',

aristas;for a in range(0,aristas):

nd1 = randint(0,self.nodos);#nd2 = randint(0,self.nodos);print '[',a,'--',nd1,']';self.G.add_edge(a,nd1);

print (self.G.edges());

Código

#Mostrar la reddef Mostrar(self):

nx.draw(self.G);plt.show();

def Diametro(self):c = nx.eccentricity(self.G);print 'Diametro: 'print c;

def Centralidad(self):cen = nx.degree_centrality(self.G);print 'Grado de centralidad de los nodos: 'print cen;

def MatrizAdyacencia(self):#M = adjacency_matrix(self.G);print 'Matriz de adyacencia --> 'print nx.adjacency_matrix(self.G);

Código

def Densidad(self):print 'La densidad del

grafo es: 'print nx.density(self.G);

def Geodecica(self):#c = radius(self.G);#print 'Center: ', c;p =

nx.shortest_path(self.G);print 'Shortest: ' print p;

Resultados

•Aquí se muestran dos nodos enlazados, de manera vertical y a manera de coordenada•También se muestra la densidad del grafo generado

Matriz de adyacenciaDado que el grafo era algo grande, todos los datos arrojados siempre rebasaban el tamaño de la pantalla y la forma de matriz se ve un poco afectada por ello

Los nodos enlazados en un inicio, son los nodos conectados. Tenemos dos ejemplos, los nodos encerrados en la primera pantalla con rojo, son estos mismo, también encerrados con rojo

En esta practica primero que todo, nos adentramos mas a Python, nos dimos cuenta que es una tecnología muy versátil gracias a las librerías que podemos encontrar en internet, esto hace que podamos utilizarlo con cualquier objetivo (investigación, entretenimiento, etc.).

Practicamos mas lo visto en clase y ahora sabemos, que hay métricas que se dan solo en ciertas condiciones, como el Diametro, que tienen que estar todos los vértices enlazados entre si

Conclusiones