让我们说他有给定的值(起源,命运,距离):
A ~ B = 5
B ~ C = 10
A ~ C = 20
我想找到从A到C的最短路径(在这种情况下为A-> B,B-> C)。
存储/搜索这些值的最佳数据结构是什么?
答案 0 :(得分:1)
您可以使用networkx来表示加权图,然后使用
dijkstra_path
找到最短的路径。
示例:
Context con = getActivity();
Button myButton = (Button) view.findViewById(R.id.buttonSP);
myButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//Move to Lista_Smartphone from Current fragment
startActivity(new Intent(con, Lista_Smartphone.class));
finish();
}
});
这将作为输出:
#!/usr/bin/env python
import networkx as nx
G=nx.Graph()
G.add_edge('a','b',weight=5)
G.add_edge('b','c',weight=10)
G.add_edge('a','c',weight=20)
print(nx.dijkstra_path(G,'a','c'))
我认为['a', 'b', 'c']
算法是从一个顶点到所有其他顶点的最短路径问题的最佳方法,对于复杂度项,它是O(nlogn),其中n是数字顶点。
当然,最短路径算法只有在没有负圆的情况下才能工作(最短路径问题没有意义......)。