Python y Grafos en la Vida Real


Python + Networkx Resolución de Grafos en Gnu Linux

Aplicación para Grafos en Debian Gnu/Linux, Python y Networkx este mundillo de los Grafos cada vez me parece que da para mas, y ayudara mucho a la ciencia y tecnología tanto en la resolución de problemas específicos de fácil o manejable acceso, hasta aquellos problemas donde las maquinas hasta ahora no han podido calcular o sortear… por ejemplo ahora que estoy haciendo una especialización en Coursera aquí el enlace https://www.coursera.org/specializations/python podría pensar que luego de pasar el curso 3 que es en el que estoy actualmente podre meterle mano como se debe a la web ;D y sacar conclusiones mas exactas con información y números de diferentes paginas y con estos datos crear grafos que sigan un esquema condicionado como si de un humano se tratara 😀

Ahora a lo que iba…. hace poco me llego un comentario de un lector que necesita hacer una aplicación de unos grafos para unas estaciones eléctricas, solo ponderar las cargas de un nodo a otro sin hacer cálculos complejos o calcular las mejores rutas solo eso, también me escribió una buena amiga para hacer algo parecido por lo que matare 2 pájaros de un tiro :D….  no espero solucionar específicamente alguno de los 2 problemas pero por lo mínimo arrojar un poco de luz y de ser necesario crear otra entrada para seguir ayudando a quien necesite de mi ayuda… ojo si quieren algo muy especifico, recuerden que soy de Venezuela y mis horas de asesoría o programación son muy baratas 😀 jeje es enserio….

Primero hay que instalar networkx y pylab, ojo use pylab por lo sencillo pero si tuviera tiempo y fuera para un proyecto muy interesante usaría octave jeje :D, eso es lo que me gusta del SL el limite lo pones tu…

Yo lo instale en LinuxMint también probado en Debian y Knoppix 😀

apt-get install python-networkx

 

Al instalar esto se instalaran.

python-matplotlib python-matplotlib-data

Si no es así  a instalarlo a mano 😀

El ejercicio corre con 2 Archivos al primero lo llamaremos ejemp1.gml y al segundo grafo_python.py y quedarian asi:

Este es ejemp1.gml:

graph

[directed 1

node [ id 1

label "Estacion 1" ]

node [ id 2

label "Estacion 2" ]

node [ id 3

label "Estacion 3" ]

node [ id 4

label "Estacion 4" ]

]

]

No quise agregar nada en este archivo en realidad si quieres trabajar con este archivo ver la documentación que dejo al final

Este es el otro archivo grafo_python.py:

# -*- coding: latin-1 -*-

import os, sys

#Grafo ponderado con GML



import networkx as nx

import pylab

#creamos el grafo y leemos de una ves el archivo gml,

#ojo debes crear este archivo en la misma carpeta

G = nx.read_gml('ejemp1.gml',relabel=True)

#Agregamos mas conexiones

G.add_edge("Estacion 4", "Estacion 1", V = 0)
G.add_edge("Estacion 4", "Estacion 3", V = 93.4)
G.add_edge("Estacion 4", "Estacion 2", V = 53.5)
G.add_edge("Estacion 2", "Estacion 1", V = 43.2)
G.add_edge("Estacion 3", "Estacion 1", V = 33.5)
G.add_edge("Estacion 1", "Estacion 5", V = 13.4)
G.add_edge("Estacion 5", "Estacion 6", V= 78.5)
G.add_edge("Estacion 6", "Estacion 7", V= 48.5)
G.add_edge("Estacion 5", "Estacion 7", V= 18.5)
G.add_edge("Estacion 0", "Estacion 4", V= 18.5)

pos=nx.spring_layout(G)

# Cargamos el grafo con todos los periquitos

# Nombre del Grafo

pylab.figure("Mi Grafo")

nx.draw(G,pos)
nx.draw_networkx_edges(G,pos, width=1.2, font_color="b")

nx.draw_networkx_edge_labels(G,pos)

# ver el grafo llamado figure1

pylab.show()

El ejercicio no necesita mucha explicación, solo usar

python grafo_python.py 

 

Al correr  el comando como usuario sin poderes de supervaca, obtendremos esto:

 

mi_grafo

Espero haya sido un poco de ayuda… aquí ay un poco mas de networkx en el blog, si necesitan otra cosa comentenlo 😀

https://stickybitshell.wordpress.com/2013/04/29/networkx-y-python-grafos-en-python/

https://stickybitshell.wordpress.com/2013/05/02/grafos-con-networkx-python-ii/

https://stickybitshell.wordpress.com/2013/05/06/gml-lenguaje-de-marcado-para-grafos-networkxpython-iii/

 

Y aqui les dejo un documento que me ha sido de mucha ayuda

http://www.cl.cam.ac.uk/~cm542/teaching/2011/stna-pdfs/stna-lecture11

Saludos y que Dios los Bendiga

 

 

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s