Foros del Web » Programando para Internet » Python »

Implementacion grafos en python

Estas en el tema de Implementacion grafos en python en el foro de Python en Foros del Web. Hola, Quería saber si alguien conocía alguna implementacion del TAD Grafos, en python. Obviamente, con clases. O a lo sumo, alguna ayuda de cómo hacerlo. ...
  #1 (permalink)  
Antiguo 21/11/2009, 12:36
 
Fecha de Ingreso: septiembre-2008
Ubicación: Nuñez, Capital Federal
Mensajes: 423
Antigüedad: 15 años, 7 meses
Puntos: 1
Implementacion grafos en python

Hola,

Quería saber si alguien conocía alguna implementacion del TAD Grafos, en python. Obviamente, con clases. O a lo sumo, alguna ayuda de cómo hacerlo.

Desde ya, muchas gracias por su ayuda, un saludo!

Pablo.
  #2 (permalink)  
Antiguo 23/11/2009, 09:04
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Implementacion grafos en python

No conozco una implementación completa de un grafo, pero se me ocurre cómo implementarlo de forma relativamente sencilla.

Creo que deberías crear una clase 'vertice' y representar las aristas como una lista de otros vértices. La lista es necesaria en tanto que no sabes cuántas aristas pueden salir de un vértice.
Así, si la lista de vértices del vértice "a" contiene a "b", significa que existe una arista (a,b)
Si luego la lista de "b" contiene a "a", quiere decir que existe (b,a) y por lo tanto existe {a,b}

Si se tratase de un árbol binario podrías tener una clase "nodo" tal que cada objeto de esa clase tenga dos atributos (también de tipo "nodo") que sean los subnodos izquierdo y derecho.

Sin más detalles es difícil ayudar más.


Saludos.
  #3 (permalink)  
Antiguo 23/11/2009, 19:40
 
Fecha de Ingreso: septiembre-2008
Ubicación: Nuñez, Capital Federal
Mensajes: 423
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Implementacion grafos en python

Bueno, viendo que has respondido (desde ya, gracias por eso), te comento un poco más lo que ando ncesitando.

Según lo que entendí, existen varias formas de implementar una GRAFO, y la mas conocidas son mediante una matriz de adyacencia, y una lista de adyacencia. En mi caso particular, me interesa la implementación que utiliza la lista de adyacencia, ya que ocupa menos espacio en memoria.

Este tipo de implementacion se basa en una lista de todos los vertices, donde cada uno tenga a su vez otra lista con los vertices a los que está relacionado (digamos, el vertice A se relaciona con los vertices B,G y H, entonce en esa segunda lista, apareceria B,G y H).

Ahora, lo que no se me ocurre, es como modelar el TDA en si. Me conviene crear una clase 'vertice', otra 'arista' y otra 'grafo', y dentro de la clase grafo crear metodos que representen las primitivas del TDA? O de que otra forma se te ocurre que sería factible realizarlo?

Con respecto a lo del arbol binario, en principio, tendría que ser un grafo genérico. Luego, más adelante y mediante el algortimo de ¿Prim?, la idea sería convertirla en un arbol minimo. Pero por el momento, solo necesito el Grafo en sí.

Es más, si se te ocurre cualquier otra cosa a la hora de implementarlo, completamente distinta a lo que he planteado, desde ya, que es más que bienvenido tu aporte/ayuda!

Un saludo, y nuevamente, gracias!

Pablo
  #4 (permalink)  
Antiguo 23/11/2009, 20:32
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Implementacion grafos en python

Recientemente tuve que modelar árboles y listas en Modula-2, así que tengo el tema de los TDA bastante fresco
Yo lo haría simplemente con una clase vértice que contenga una lista (llámala "aristas" si quieres) de otros vértices. De esta forma un grafo sería un conjunto de vértices, creo que haciendo una clase Grafo cuyos objetos contengan una lista de vértices sería suficiente

Saludos.
  #5 (permalink)  
Antiguo 24/11/2009, 09:28
 
Fecha de Ingreso: septiembre-2008
Ubicación: Nuñez, Capital Federal
Mensajes: 423
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Implementacion grafos en python

Claro, la clase arista está de más. Y las primitivas (digamos, insertar_vertice, obtener_vertice, etc), sería métodos de la clase Grafo, no es cierto?

Creo que con esto termino de cerrar mi idea. Desde ya, muchas gracias!

Pablo
  #6 (permalink)  
Antiguo 24/11/2009, 09:36
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Implementacion grafos en python

Pues sí, según lo veo deberían ser métodos de Grafo.
  #7 (permalink)  
Antiguo 09/12/2009, 21:37
 
Fecha de Ingreso: septiembre-2008
Ubicación: Nuñez, Capital Federal
Mensajes: 423
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Implementacion grafos en python

Bueno, vuelvo aca y me doy cuenta que.. me había olvidado de agradecer tu post, Alvaro!

Desde ya, comento que lo he hecho asi, asique.. muchas gracias!

Un saludo,

Pablo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:20.