处理大量图表 - 旅行销售人员

时间:2012-01-08 15:32:44

标签: c# sql graph graph-algorithm traveling-salesman

我在教自己如何编写涉及TSP的算法(Djikstra,Kruskal),我正在寻找一些启动建议。我正在使用C#和SQL。理想情况下,我希望能够在SQL中严格执行此操作但是我不确定这是否可行(我假设在50个顶点之后运行时会很糟糕)。

所以我想问题是,我能做到这只是SQL,如果是这样,最好的方法是什么?如果没有,我必须让C#参与其中最好的方法吗?

3 个答案:

答案 0 :(得分:6)

建议在SQL中进行简单计算,例如计算总和。 SQL中的和更快,因为只返回总和而不是所有记录。您想到的复杂算法必须在您的c#代码中完成!首先,SQL语言不适用于此类问题,其次是针对数据库访问进行了优化,使其对其他类型的使用非常缓慢。

使用SQL将数据从数据库读入适当的数据结构到c#程序中。在那里执行所有与TSP相关的逻辑,如果需要,在结束时将结果存储在数据库中。

答案 1 :(得分:1)

好吧,我不确定SQL是否是实现此目的的最佳选择,但您可以尝试使用邻接矩阵进行输入。许多已发布的算法都是针对这种输入而设计的,之后唯一的问题就是将伪代码放入C#中。看看这个: http://en.wikipedia.org/wiki/Adjacency_matrix

您将使用二维数组来表示矩阵。

答案 2 :(得分:1)

我要为SQL写信。虽然它不是我在TSP上工作的第一选择 - 它仍然可以很容易地做到这一点 - 当然假设数据模型对您的工作是最佳的。

第一项任务是定义一个数据模型,该模型保存您的算法所需的信息,然后填充一些示例数据,然后计算出可以根据需要检索数组的查询。

最后,您可以决定该查询中的某个简单SQL是否适合您,或者可能是存储过程形式的扩展。

最后,您可以选择将其拉出为您选择的替代语言。