1. 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
2. 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).
3. 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
4. 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
5. 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
6. 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.
7. Densidad
Geodésica
Diámetro
Centralidad de grado
Matriz de adyacencia
8. 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 aristas
def Aristas(self):
aristas = randint(10,25);
print 'La cantidad de aristas es: ', aristas;
#Mostrar la red
for a in range(0,aristas):
def Mostrar(self):
nd1 = randint(0,self.nodos);
nx.draw(self.G);
#nd2 = randint(0,self.nodos);
plt.show();
print '[',a,'--',nd1,']';
self.G.add_edge(a,nd1);
print (self.G.edges());
10. •Aquí se muestran dos nodos
enlazados, de manera vertical y
a manera de coordenada
•También se muestra la
densidad del grafo generado
11.
12. Matriz de adyacencia
Dado 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
13. 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
14. 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