我眼中 迪杰斯特拉(Dijkstra)与 普雷姆 (prim)的 区别

直接上代码:
void dijistra()
{
	memset(vis,0,sizeof(vis));
	for(int i=0;imap[u][j]+dist[u])   //从出发点(先到u的距离最短距离)到j的距离可以缩短; 
			dist[j]=map[u][j]+dist[u];
		} 
	}
}
void prim()
{
	memset(vis,0,sizeof(vis));
	for(int i=0;imap[u][j])   //从u点到j的距离可以缩短; 
			dist[j]=map[u][j];
		} 
	}
}
从上两图中可以知道,不同点及解释就在我做标记的地方。
迪杰斯特拉:
求的是一点到另一点的最短距离。属于单源点问题。
普雷姆:
求最小生成树,求的是一堆的点,就是任意两点的距离的总和。

因此最小生成树中从一点到另一点的距离不一定是最短的。

你可能感兴趣的:(我眼中 迪杰斯特拉(Dijkstra)与 普雷姆 (prim)的 区别)