前言
最近项目需要有关路径规划方面的东西,因此学习了一下有关迪杰特斯拉算法的相关知识。在学习的过程中也看了其他博客的例子。主要参考了最短路径问题—Dijkstra算法详解这篇技术博客中的思路与代码,我在其基础上进行了修改。
功能
在已知图中输入起点与终点,通过迪杰斯特拉算法找到该起点到终点的最短路径。
实例与代码
(1)实例(此处采用的图仍然是最短路径问题—Dijkstra算法详解)中的图例。
(2)代码:
dijkstra.h
#pragma once
#include<iostream>
#include<string>
using namespace std;
//记录起点到每个顶点的最短路径的信息
struct Dis {
string path; //当前路径
int value;
bool visit;
Dis() {
visit = false;
value = 0;
path = "";
}
};
class Graph_DG {
private:
int vexnum; //图的顶点个数
int edge; //图的边数
int **arc; //邻接矩阵
//Dis * dis; //记录各个顶点最短路径的信息
public:
//构造函数
Graph_DG(int vexnum, int edge);
//析构函数
~Graph_DG();
// 判断我们每次输入的的边的信息是否合法
//顶点从1开始编号
bool check_edge_value(int start, int end, int weight);
//创建图
void createGraph();
//点对点的迪杰特斯拉算法
Dis PointToPointDijkstra(int begin,int end);
};
dijkstra.cpp