c++ - Dijkstra算法-顶点作为坐标

标签 c++ algorithm dijkstra shortest-path

我通过Dijkstra最短路径算法,在练习时我遇到了一个问题,其中顶点不是单个数字(例如1,2,3。 ..等等)但它是一对更具体地给出的(x,y)坐标。我从来没有做过此类问题,也没有见过它们。你能帮我看看如何此类问题的方法。O(V^2) 衷心欢迎

最佳答案

使用 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++);    
    }
}

关于c++ - Dijkstra算法-顶点作为坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29901291/

相关文章:

c++ - 将模板定义为变量的宏

c++ - xgettext - 提取可翻译字符串并更新 .pot

c++ - 获取 .tiff map 中的最短路径

c++ - 如何制作节点图以与 Dijkstra 的最短路径一起使用?

java - 使用 Dijkstra 检测多条最短路径

c++ - 维护当前选定的对象是否很好地使用状态模式?

c++ - 为什么 Strassen 矩阵乘法比标准矩阵乘法慢得多?

java - 置换一个字符串

java - 单调对 - Codility

NQUEENS问题的C++递归解决方案无法正常工作