Threading, sockets, punteros y estructuras de datos en Python

jordi torrents jtorrents en milnou.net
Mar Jun 17 19:08:59 CEST 2008


2008/6/16 Joan Puigcerver <joapuipe en gmail.com>:
> Soy nuevo en la lista de correo y se podría decir que nuevo en Python
> también (he trasteado un poco con él, nada más). Me surgen algunas dudas
> respecto al lenguaje, pero creo que voy a tener que "enrrollarme" un poco
> para explicarlas, así que allá va:

Benvingut ;)

> Realicé un programa en C que te permitia calcular El Número de Bacon entre
> de un actor (el grado de separación entre éste y Kevin Bacon). Para calcular
> el grado de separación primero construía un grafo donde relacionaba a todos
> los actores (los datos los conseguí de www.imdb.com) y después aplicaba el
> algoritmo de Dijsktra para calcular el camino más corto entre dos vértices
> del grafo (cada vértice era un actor).
>

> Pero bueno, antes de todo eso, primero hay que crear las estructuras de
> datos necesarias y cargar los datos. ¿Que estructuras necesito?
> - Tablas Hash (Python lleva los "diccionarios").
> - Montículos.
> - Grafos.

Yo te recomendaria que usaras alguna de las bibliotecas que hay
disponibles para manejar grafos en python, almenos para trastear un
poco.

Networkx [1] està implementada enteramente en python. Es muy versátil
y fácil de modificar y ampliar. Tinen un desarrollo muy activo y una
lista de correo donde los desarrolladores responden muy amablemente.
Además tiene implementados multitud de algoritmos (entre ellos el de
Dijsktra) con referencias útiles a los papers y trabajos científicos
en los que se basan. El lado negativo es el rendimiento y el uso de
RAM; necessitarás una máquina muy potente y mucha RAM para calcular
los caminos mas cortos entre actores en un grafo de estas
características en un tiempo razonable.

La otra opción es igraph [2] que está programado en C pero tiene
bindings para python y para R. El rendimiento es mucho mejor pero es
menos versátil. Cabe decir que tiene implementdos un importante número
de algoritmos para detectar comunidades (uno de los ámbitos en los que
mas se trabaja actualmente en el campo de redes complejas).

Por cierto, las dos bibliotecas són libres.

Salut

[1] https://networkx.lanl.gov/wiki
[2] http://cneurocvs.rmki.kfki.hu/igraph/
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes





Más información sobre la lista de distribución Python-es