python贪心算法最短路径_贪心算法求最短路径问题讲解

#include 

#include 

const int size=5;

//

返回最短路径的长度

//edge[size][size]

,输入参数图信息

//nstart,ndest

,起点和终点

//path[size]

返回路径

int dijkstra(int edge[size][size],int nstart,int ndest,int path[size])

{

int mindis[size];//

起点到终点的最短路径产度

bool ins2[size];//

标志各点是否在

s2

//

初始化

int i;

for(i=0;i

{

ins2[i]=true;

}

ins2[nstart]=false;//

初始条件只有

nstart

s1

中,其余在

s2

for(i=0;i

{

mindis[i]=edge[nstart][i];//

初始各点的最短距离

if(edge[nstart][i]

path[i]=nstart;//

最短路径的前一点

else

path[i]=-1;//

前一点点不存在

}

//

进行计算

while(ins2[ndest])//

ndest

还在

s2

中进行计算

{

//

查找

s2

中最短路径的最小值的点

int nminlen=INT_MAX;//

最短路径长度的最小值

int npoint=-1;//

拥有最小值的点

for(i=0;i

查找

{

if((ins2[i])&&(mindis[i]

{

nminlen=mindis[i];

npoint=i;

}

}

if(nminlen==INT_MAX)

break;

//

更新

s2

mindis

ins2[npoint]=false;//

该点从

s2

移入

s1

你可能感兴趣的:(python贪心算法最短路径)