Dijkstra算法

        Dijkstra 算法是一个基于「贪心」、「广度优先搜索」、「动态规划」求一个图中一个点到其他所有点的最短路径的算法,时间复杂度 O(n2)。这里使用C++语言实现Dijkstra算法的。算法的基本思想就是,从某点(一般都是起点)开始搜索所有能到达的点,然后找到最近的点,压入到栈中去,然后找到压入栈里面的点可以到达的点里面距离最近的点,然后将这个点替换到数组中去,然后遍历数组中的最小值压入栈中,这样依次就可以实现找到起始点到其他点的最短路径。

        下面是自己代码实现的一个代码框架的思想:

Dijkstra算法_第1张图片

        起始点设置为“v1”,找到“v1”点到其所有的点的最短路径。

(1)首先创建一个与节点数量相同的数组,然后创建两个变量temp(保存数组中最小值的下表,也正是那个点),min(保存数组中最小值的距离结果),刚开始数组中的值全部设置为无穷,“v1->v1” 的值设置为0,并且给数组每个结构体元素创建一个标志变量,每次遍历时数组中的最小值的时候就将这个变量设置为true,也就找到了v1到这个点的最小值。

Dijkstra算法_第2张图片

 (2)Dijkstra算法_第3张图片

 (3)

Dijkstra算法_第4张图片

 (4)

Dijkstra算法_第5张图片

(5)

Dijkstra算法_第6张图片

(6)

Dijkstra算法_第7张图片

 (7)

Dijkstra算法_第8张图片

 

 

 

你可能感兴趣的:(算法)