2012-01-08 11 views
6

Mi sto insegnando come programmare gli algoritmi che coinvolgono TSP (Djikstra, Kruskal) e sto cercando qualche consiglio di avvio. Sto lavorando con C# e SQL. Idealmente mi piacerebbe essere in grado di farlo rigorosamente in SQL, ma non sono sicuro che sia possibile (presumo che il runtime sarebbe terribile dopo 50 vertici).Gestire i grafici massivi - Addetto alle vendite

Quindi credo che la domanda è, posso fare questo è solo SQL e se sì qual è l'approccio migliore? Se no, e devo coinvolgere C# quale sarebbe l'approccio migliore lì?

risposta

6

È consigliabile eseguire semplici calcoli in SQL, come il calcolo delle somme. Le somme sono più veloci in SQL, perché vengono restituite solo somme invece di tutti i record. Algoritmi complicati come quelli che hai in mente devono essere fatti nel tuo codice C#! Innanzitutto, il linguaggio SQL non è adatto a tali problemi, in secondo luogo è ottimizzato per gli accessi db, il che rende molto lento per altri tipi di utilizzo.

Leggi i dati dal tuo DB con SQL in una struttura dati appropriata nel tuo programma C#. Esegui tutta la logica relativa al TSP e, se lo desideri, memorizza il risultato nel db, una volta terminato.

1

Bene, non sono sicuro che SQL sia l'opzione migliore per eseguire questa operazione, ma è possibile provare a utilizzare una matrice di adiacenza per l'input. Molti algoritmi pubblicati sono progettati per questo tipo di input e, successivamente, l'unico problema è inserire lo pseudocodice in C#. Guarda questo: http://en.wikipedia.org/wiki/Adjacency_matrix.

Si utilizzerà una matrice bidimensionale per rappresentare la matrice.

1

sto andando a suonare in SQL. Anche se non sarebbe la mia prima scelta per lavorare su TSP - può ancora fare facilmente questo genere di cose - presupponendo naturalmente che il modello di dati sia ottimale per i tuoi sforzi.

Il primo compito sarà quello di definire un modello di dati che contiene le informazioni richieste dall'algoritmo, quindi compilare alcuni dati di esempio, quindi elaborare una query che può recuperare gli array in base alle esigenze.

infine è possibile decidere se un semplice SQL in quella query potrebbe funzionare per voi, o forse un'estensione sotto forma di una stored procedure.

Infine, è possibile scegliere di estrarlo nella lingua di scelta alternativa.

Problemi correlati