Martín Gaitán
2007-06-17 06:15:52 UTC
hola gente:
tengo que implementar un programita 'simulador de trafico de redes'
(ejercicio teorico) que basicamente trabaja con grafos dirigidos que
representan un red de routers con el 'costo' de transferencias de
paquetes entre ellos.
luego usa el algoritmo de dijkstra para encontrar el camino menos
costoso para enviar los paquetes de un punto a otro.
la cuestion es: cual es la forma mas conveniente de implementar una
estructura de grafos con aristas con peso no simétrico ? incluye
python algo ya implementado ?
en este ejemplo
http://www.ece.uci.edu/~chou/py02/python.html#Fig-3
proponen una estructura de diccionarios que contienen diccionarios
por ejemplo
L = {'A': {'C':2, 'D':6}, 'B': {'D':8, 'A':3},
'C': {'D':7, 'E':5}, 'D': {'E':-2}, 'E': {}}
que representa que el nodo A esta conectado al C con costo 2 y al D con 6, etc.
les parece optima?
en wikipedia hay un ejemplo de implementacion de dijkstra que usa otra
estructura en la que intervienen tuplas para definir la arista (nodo,
peso).
[1] http://es.wikipedia.org/wiki/Algoritmo_de_Dijkstra#Python
saludos.
tin
tengo que implementar un programita 'simulador de trafico de redes'
(ejercicio teorico) que basicamente trabaja con grafos dirigidos que
representan un red de routers con el 'costo' de transferencias de
paquetes entre ellos.
luego usa el algoritmo de dijkstra para encontrar el camino menos
costoso para enviar los paquetes de un punto a otro.
la cuestion es: cual es la forma mas conveniente de implementar una
estructura de grafos con aristas con peso no simétrico ? incluye
python algo ya implementado ?
en este ejemplo
http://www.ece.uci.edu/~chou/py02/python.html#Fig-3
proponen una estructura de diccionarios que contienen diccionarios
por ejemplo
L = {'A': {'C':2, 'D':6}, 'B': {'D':8, 'A':3},
'C': {'D':7, 'E':5}, 'D': {'E':-2}, 'E': {}}
que representa que el nodo A esta conectado al C con costo 2 y al D con 6, etc.
les parece optima?
en wikipedia hay un ejemplo de implementacion de dijkstra que usa otra
estructura en la que intervienen tuplas para definir la arista (nodo,
peso).
[1] http://es.wikipedia.org/wiki/Algoritmo_de_Dijkstra#Python
saludos.
tin