Vendedor ambulante en scipy

¿Cómo resuelvo un problema de vendedor ambulante en Python? No encontré ninguna biblioteca, debería haber una manera de usar funciones scipy para la optimización u otras bibliotecas.

Mi solución de fuerza bruta hacky-extremelly-lazy-pythonic es:

tsp_solution = min( (sum( Dist[i] for i in izip(per, per[1:])), n, per) for n, per in enumerate(i for i in permutations(xrange(Dist.shape[0]), Dist.shape[0])) )[2]

donde Dist (numpy.array) es la matriz de distancia. Si Dist es demasiado grande, esto tomará una eternidad.

Sugerencias?

Respuestas a la pregunta(1)

Su respuesta a la pregunta