一个算法问题:找到从一个城市移动到另一个城市所需的“步骤”数

时间:2021-02-10 13:54:45

标签: algorithm

我正在尝试编写程序。用例是找到从源城市移动到目标城市所需的“步”数,其中一步意味着从一个城市移动到另一个城市。所以它就像社交媒体上的朋友图应用程序之一。

我的方法是这样的:

[3, 4, 5, 6, 3, 5, 6, 7, 4, 5, 7, 8, 5, 6, 7, 9, 6, 7, 8, 9]

我正在使用 Java 执行程序服务并行运行数据库操作。

这有效,我得到了正确的结果。但是程序很慢。

可以通过算法进行哪些修改以提高性能?

1 个答案:

答案 0 :(得分:1)

根据您要处理的数据集大小,您可以考虑进行一些改进。

  • 正如@MBo 在评论中提到的,您可以使用双向 BFS 来降低查找目的地的整体复杂性。
  • 您正在使用单个线程遍历队列,对吗?如果是这样,你可以考虑在这个地方应用一个并行队列。
  • 还有另一种方法可以通过应用 Direction-Optimizing approach 来改进 BFS。您可以找到此方法的模型实现 here
相关问题