【发布时间】:2021-10-23 03:57:47
【问题描述】:
我试图弄清楚如何制作一种方法来找到两个节点之间的最短路径,但似乎无法弄清楚。我得到了两个文件,一个包含演员(将是节点)的文件,另一个包含电影(将是边缘)。
我将图表示为 HashMap,其中键是演员,值是 ArrayList,其中包含演员出演过的电影:
HashMap<Actor, ArrayList[Movie]> graph;
现在我想找到两个演员之间的最短路径,但我不知道该怎么做。我在考虑 DFS 或 BFS,但我不太确定如何使用这个 hashmap 来做到这一点..
【问题讨论】:
-
如果您在使用此 HashMap 时遇到问题,您是否考虑过使用不同的数据结构?
-
不确定要使用什么其他数据结构...
-
如果您创建另一个地图,其中包含作为键的演员和与任一演员的距离,您将能够找到距离。我知道这不是您正在寻找的确切答案,但它应该给您一个开始。在这个image中,我计算了每个节点到节点B的距离
-
请提供足够的代码,以便其他人更好地理解或重现问题。
-
我真的不明白你为什么要这样建模你的图表。对于基本的图问题,我们有两种建模方法:邻接列表和邻接矩阵。如果你希望它是邻接列表,它应该是
Map<Actor, Set<Actor>> graph;(我猜到了,因为你说电影是边缘)。 dijkstra 是一种著名的寻找最短路径的算法。 google上的实现很多,你可以试试。
标签: java