2012-01-08 20 views
6

Me estoy enseñando cómo programar algoritmos que involucren TSP (Djikstra, Kruskal) y estoy buscando algunos consejos de puesta en marcha. Estoy trabajando con C# y SQL. Idealmente, me gustaría poder hacer esto estrictamente en SQL, pero no estoy seguro si eso es posible (supongo que el tiempo de ejecución sería horrible después de 50 vértices).Tratando con gráficos masivos - Vendedor ambulante

Así que supongo que la pregunta es, puedo hacer esto sólo es SQL y si es así cuál es el mejor enfoque? Si no, y tengo que involucrar a C#, ¿cuál sería el mejor enfoque allí?

Respuesta

6

Sólo es recomendable hacer cálculos simples en SQL, como el cálculo de sumas. Las sumas son más rápidas en SQL, porque solo se devuelven las sumas en lugar de todos los registros. ¡Algoritmos complicados como los que tienes en mente deben hacerse en tu código C#! Primero, el lenguaje SQL no es adecuado para tales problemas, en segundo lugar está optimizado para accesos db, lo que lo hace muy lento para otros tipos de usos.

Leer los datos de su base de datos con SQL en una estructura de datos adecuada en su programa de C#. Haga allí toda la lógica relacionada con TSP y, si lo desea, almacene el resultado en la base de datos, cuando termine.

1

Bueno, no estoy seguro de si SQL es la mejor opción para lograr esto, pero se podría tratar de usar una matriz de adyacencia para la entrada. Muchos algoritmos publicados están diseñados para este tipo de entrada, y después de eso, el único problema es poner el pseudocódigo en C#. Eche un vistazo que esto: http://en.wikipedia.org/wiki/Adjacency_matrix.

Utilizaría una matriz bidimensional para representar la matriz.

1

voy a entrar en SQL. Si bien no sería mi primera opción trabajar en TSP, todavía puede hacer este tipo de cosas fácilmente, suponiendo, por supuesto, que el modelo de datos es óptimo para sus esfuerzos.

La primera tarea consistirá en definir un modelo de datos que contenga la información que necesita su algoritmo, completar con algunos datos de muestra y luego encontrar una consulta que pueda recuperar los arreglos según sea necesario.

finalmente puede decidir si algunos de SQL simple en esa consulta podría funcionar para usted, o tal vez una extensión en forma de un procedimiento almacenado.

por último, tiene la opción de tirar de él hacia fuera a su idioma alternativo de elección.

Cuestiones relacionadas