2012-01-08 9 views
6

私はTSP(Djikstra、Kruskal)を含むアルゴリズムをプログラミングする方法を教えているので、スタートアップのアドバイスを探しています。私はC#とSQLで作業しています。理想的には、SQLでこれを厳密に行うことができるようにしたいと思いますが、可能かどうかはわかりません(50個の頂点の後に実行時間がひどいと仮定します)。大量のグラフを扱う - 旅行者営業員

私はこれをSQLで行うことができますか?その場合、最良のアプローチは何ですか?もしそうでなければ、C#には最善のアプローチがありますか?

答えて

6

合計を計算するなど、SQLで単純な計算を行うことをお勧めします。すべてのレコードの代わりに合計のみが返されるため、SQLのほうが高速です。あなたが心に留めているもののような複雑なアルゴリズムは、C#コードで行う必要があります!まず、SQL言語はこのような問題には適していません.2番目はdbアクセスに最適化されているため、他のタイプの使用では非常に遅くなります。

データベースからSQLを使用して、SQLを使用して適切なデータ構造をC#プログラムに読み込みます。 TSPに関連するすべてのロジックをそこに実行し、必要に応じて、終了時に結果をdbに格納します。

1

SQLはこれを達成するための最良の選択肢であるかどうかはわかりませんが、入力に隣接行列を使用してみることができます。この種の入力用に公開された多くのアルゴリズムが設計されていますが、その後は擬似コードをC#に入れているという唯一の問題があります。これを見てください: http://en.wikipedia.org/wiki/Adjacency_matrix

行列を表すには2次元配列を使用します。

1

私はSQLのためにチャイムインしようとしています。実際にTSPで作業するのは私の最初の選択ではありませんが、データモデルがあなたの努力に最適であることを前提として、この種の作業は簡単に実行できます。

アルゴリズムは、必要な情報を保持しているデータモデルを定義し、サンプルデータを入力し、必要に応じて配列を取得できるクエリを作成します。

最後に、そのクエリの単純なSQLがあなたのために機能するのか、おそらくはストアドプロシージャの形式の拡張があるのか​​を判断できます。

最後に、選択した代替言語にプルダウンすることができます。

関連する問題