我有两个数组,一个是节点 - 节点 - 成本数组[a_node,b_node,cost],它有8000个条目,另一个是节点与坐标[node,x,y]的关联,大约有8000个条目也是如此。拥有这两者的静态数组或者将它们存储在数据库中是否更好?从性能问题创建数组更好?
这两个数组将用于运行最短路径算法。
答案 0 :(得分:0)
听起来您可能想要使用动态编程解决方案,在每次迭代中计算问题的一小部分并存储中间结果,这样您就可以在完成所有迭代后计算最短路径中间计算。
我建议将所有信息存储在数据库中并选择一个记录子集(可能一次只有100个?)。计算每个节点的中间信息并将其存储回数据库。如果要重复使用此路径信息数千或数百万次,则不希望不断重新计算它。您只想在图表更改时重新计算。
我首选的最短路径算法是http://en.wikipedia.org/wiki/Dijkstra's_algorithm,它适用于高效的动态编程解决方案。
答案 1 :(得分:0)
如果你测试了它,你会找到自己的答案 - 很大程度上取决于你如何填充数组以及你从现有数组中取消引用元素的频率。当使用数据库存储/操作数据时,前者速度更快。后者更像是一个灰色区域 - 但在大多数情况下,数据库仍可以证明更快。
(除非这是你的作业,并且考虑到节点的数量,我建议考虑使用非确定性方法 - 遗传算法是一个明显的候选者)