以下是我在JSON中存储的数据结构示例:
{ "alpha": { "node1": "echo", "node2": "bravo" }, "bravo": { "node1": "alpha", "node2": "bravo", "node3": "charlie" }, "charlie": { "node1": "bravo", "node2": "foxtrot" }, "delta": { "node1": "alpha", "node2": "hotel" }, "echo": { "node1": "golf", "node2": "delta" }, "foxtrot": { "node1": "echo", "node2": "india", "node3": "delta" }, "golf": { "node1": "hotel", "node2": "charlie" }, "hotel": { "node1": "foxtrot", "node2": "india" }, "india": { "node1": "charlie", "node2": "hotel" } }
我希望找到任意两个节点之间的最短路径。例如,从echo
到hotel
的最短路径是:echo
- > golf
- > hotel
正如您所看到的,这些节点正在循环,并且可以无限地遍历它们。我还应该注意,节点路径都是单向的。因此,使用上面的相同示例,从hotel
返回echo
的最短路径是:hotel
- > foxtrot
- > echo
这样的数据结构有名称吗?我知道循环打破了“树”的规则。这会是图遍历吗?
答案 0 :(得分:1)
你拥有的是adjacency list。虽然这样的东西更清晰(删除node1,node2使其成为一个简单的数组):
{
"alpha": [
"echo",
"bravo"
],
"bravo": [
"alpha",
"bravo",
"charlie"
],
...
"india": [
"charlie",
"hotel"
]
}
没有给出权重/距离,因此您可以找到BFS的最短路径。 Here是一种实现。
答案 1 :(得分:0)
您正在寻找的是通过图表的最短路径。看看这个:
http://networkx.github.io/documentation/latest/reference/algorithms.shortest_paths.html