Dijkstra算法' algorithm-vertex as coordinate

时间:2015-04-27 16:33:34

标签: c++ algorithm dijkstra shortest-path

我经历了 Dijkstra的最短路径算法,而我在练习时遇到了一个问题,其中顶点不是单个数字(比如1,2,3。 ..所以)但它是一对更具体地给出了(x,y)坐标。我从来没有做过这样的问题,也没有见过它们。你能帮我解决一下这种问题的方法。 O(V ^ 2)非常欢迎

2 个答案:

答案 0 :(得分:3)

使用hashmap将坐标映射到整数顶点。现在您有一个图表,其中节点为单个数字。应用dijkstra算法。

时间复杂度:O(V)用于转换为整数顶点。
O(V^2)用于运行dijkstra算法。
因此O(V^2)完全复杂。

伪代码:

int cntr = 0; 
for(Edge e : graph){
    int from = e.from;
    int to= e.to;
    if(!map.contains(from)){
        map.put(from, cntr++);    
    }

    if(!map.contains(to)){
        map.put(to, cntr++);    
    }
}

答案 1 :(得分:0)

每个顶点仍然有一个id(如果没有给出,你可以分配)。笛卡尔坐标只是顶点的附加属性,可用于计算连接顶点之间的距离。 (sqrt(delta_x ^ 2 + delta_y ^ 2))