任何人都可以帮助我更快地实现 Dijkstra 算法的 j2ME 吗?我有两个循环,一个在另一个里面。像这样
while(for each item in Q)
{
//...do something.
//the following loop is to find the minimum
for(all un-visited nodes in Q)
{
//.. do something to get min.
}
}
我有将近 23000 个节点和 50000 条边连接它们......在下面提到的所有改进之后,内部循环平均执行 169330131 次。在我的 w910i 手机上完成这需要 5 分钟,而在我的模拟器上则需要几分钟以上。这对我来说太过分了。有什么改进的建议吗?我已经实施了以下改进。
- 使用数组代替向量。
- 确保内部循环不考虑访问节点。我所有访问过的节点都在数组的末尾,我节点知道计数。所以,我可以很容易地完全跳过它们。