C++实现高效导航算法
在计算机科学中,导航算法是一种用于在地图上找到从起点到终点的最短路径或最快路径的方法。这些算法通常用于游戏、机器人导航、交通系统等领域。以下是一个简单的C++实现的Dijkstra算法,该算法可以用于解决单源最短路径问题。
```cpp
#include
#include
#include
#include
using namespace std;
const int INF = numeric_limits
struct Edge {
int to, cost;
Edge(int to, int cost) : to(to), cost(cost) {}
};
vector
vector
priority_queue
pq.push({0, start});
dist[start] = 0;
while (!pq.empty()) {
int u = pq.top().second;
pq.pop();
for (auto& edge : edges) {
if (dist[u] + edge.cost < dist[edge.to]) {
dist[edge.to] = dist[u] + edge.cost;
pq.push({dist[edge.to], edge.to});
}
}
}
return dist;
}
int main() {
vector
int start = 1;
vector
for (int i = 0; i < dist.size(); i++) {
cout << "Distance from " << start << " to " << i << " is " << dist[i] << endl;
}
return 0;
}
```
在这个例子中,我们首先定义了一个表示边的结构体`Edge`,其中包含两个成员:`to`表示边的终点,`cost`表示边的权重。然后,我们实现了一个名为`dijkstra`的函数,该函数接受一个边列表和一个起始点作为输入,返回一个包含从起始点到所有其他点的最短距离的向量。
在`main`函数中,我们创建了一个边列表`edges`和一个起始点`start`,然后调用`dijkstra`函数计算从起始点到所有其他点的最短距离。最后,我们打印出每个距离。