算法 - 朋友的朋友

5 algorithm graph-theory graph-algorithm

我只是在学习图论,我正在尝试将代码写入算法问题.问题涉及n群人,他们每个人与其中一个成员至少有一个相互的友谊.问题是要找到两个人之间最短的友谊关系.最短的友谊链接包含最少的人数.例如; A和B是共同的朋友,B和C是共同的朋友,如果A和C也是共同的朋友,那么AC和ABC是A和C之间的友谊链接但AC被认为更短,因为它涉及较小的个体.

我想知道哪种图理论算法适用于这种情况,我将不胜感激任何关于图论(免费维基)的免费互联网文档的建议.

ami*_*mit 7

对于两个节点的最短路径的未加权问题 - 你可以使用BFS,不需要Dijkstra的算法,这种算法更难实现并且效率较低.

请注意,BFS的主要问题是空间效率,因为它在O(|V|)空间中运行,可以通过与DFS(称为迭代深化DFS)的权衡来部分解决.它也是最佳的,但会消耗更少的空间(以额外的时间为代价).


似乎并非如此,但是如果你可以评估你与目标的接近程度 - 你可以使用A*算法,它具有良好的启发式功能可能会更快地执行.

另请注意:如果您想要所有用户之间的最短距离,您可以使用Floyd-Warshall的算法