查找有向图中是否连接了两个节点

时间:2017-06-15 19:23:36

标签: java algorithm graph

给定使用HashMap<String, String>实现的有向图,找出是否连接了两个节点。

例如:

"b"--->"a"<---"c"

Map<String, String> graph = new HashMap<>();
map.put("b", "a");
map.put("c", "a");

"b""c"已关联。

我找到了一个post,其中图是一个有向图,但解决方法是找出两个节点之间是否有路径。我的问题有所不同,因为即使"b""c"之间没有路径,上述示例中的"b""c"也会被视为已连接。

1 个答案:

答案 0 :(得分:0)

您的代表与您提供的链接中使用的代表之间没有真正的区别。他们使用了一个LinkedList<Integer>数组,它映射到所有相邻节点的每个节点。 您还拥有此信息,地图的每个键都链接到所有相邻节点。

但请注意,您的陈述非常有限。您将节点限制为只有一个neighboor。您可以通过将value类的类型更改为Set<String>而不是String来更改此设置。

只需使用您的结构重新实现BFS或DFS,或者将您的版本转换为他们的版本并直接使用他们的代码。但是,第一个解决方案会更快,但需要您了解这些搜索的工作原理。 但是不要害怕,它们很容易,并且有很好的在线文章,例如维基百科: