进行类的设计与实现,解决最短路径问题。具体要求如下:
(1) 采用图的邻接矩阵或邻接表实现最短路径问题中图的存储;
(2) 采用Dijkstra算法求从某个源点到其余各顶点的最短路径;
(3) 将上述功能作为类的成员函数实现,编写主函数测试上述功能。
(4) 用C++编写
现在分就这么多了,如果能帮上忙,以后有分肯定补上,现在只有这些了,有分肯定补上,多多的补,保证,一定,帮帮忙吧,着急啊。能运行的。
谢谢谢谢,好人做到底,你能不能再改一下,把它整运行了啊,这题对于你来说也许很简单,也花费不了你多少时间,可我不会改啊,分肯定给你,而且多多的给你,如果你能帮忙整好了,以后一定赚更多得分给你,真的真的,再次感谢,希望尽快收到你的回复,帮个忙吧,马上就要交作业了,我的邮箱642205377@qq.com,谢谢谢谢。而且能不能用c++编写啊,在线等你的好消息,敬候佳音,真希望你能帮个忙,谢谢谢谢。
追答好的,我是用C++编译器写的啊,用的是VS2008,可是运行不了,我看看是什么原因
// 最短路.cpp : 定义控制台应用程序的入口点。
//
//#include "stdafx.h"
#include
const int MAX=1000;
const int INF=1000000000;
class SPFA
{
public: int n;//表示图里面的点数
public: int path[MAX][MAX];//定义链接矩阵最多是1000个点
public: int dis[MAX];//定义源点到其他点的距离
public: int src;//定义源点
public:void Cal()
{
int i,j,k;
bool used[MAX]={false};//定义点是否访问过了,初始化为未访问
for(i=0;imin_+path[k][j])//如果从k点走到j点的路很比原来的要短,那么更新
{
dis[j]=min_+path[k][j];
}
}
}
}
};
//int _tmain(int argc, _TCHAR* argv[])
int main()
{
//按照下面的数据格式输入,-1表示没有路,自己到自己是0
/*
3
0 -1 -1
3 0 -1
3 4 0
3
0 100 1
3 0 -1
3 4 0
3
0 1 2
3 0 -1
3 4 0
*/
SPFA* a=new SPFA();
printf("请输入点数");
scanf("%d", &a->n);
int i,j;
for(i=0;in;i++)
{
for(j=0;jn;j++)
{
scanf("%d",&a->path[i][j]);
if(a->path[i][j]==-1)
{
a->path[i][j]=INF;
}
}
}
a->src=0;//源点暂时定为0,你自己改吧
a->Cal();
for(i=0;in;i++)
{
printf("dis[%d]=%d\n",i,a->dis[i]);
}
return 0;
}
好了,现在OK了,刚才算法里面有一个小BUG改正了
不是,我说的是编译语言用c++,这个不是c么,我们是c++课设,真心的希望,麻烦您再帮我改一下吧,分已经给你了,好人做到底,希望你能帮一下忙,改完了,发我邮箱就可以了,希望你在帮一下下,我们马上就要交作业了,拜托,谢谢谢谢,谢谢谢谢。
最短路径算法(Dijkstra)
Dijkstra算法是解决带有非负权值的最短路径问题的一种著名算法,它基于深度优先搜索和贪心策略。以下是应用Dijkstra算法解决一个有权图中的单源最短路径问题的情况。1. 初始化:从起点A开始,对所有其他节点,假设它们到A的距离为无穷大,只有A到自身的距离为0。将A点标记为已访问,并进行颜色标记,结果...
怎样用DIJKSTRA算法设计最短路径
:设G=(V,E)是一个带权有向图,把图中顶点集合V分成两组,第一组为已求出最短路径的顶点集合(用S表示,初始时S中只有一个源点,以后每求得一条最短路径 , 就将加入到集合S中,直到全部顶点都加入到S中,算法就结束了),第二组为其余未确定最短路径的顶点集合(用U表示),按最短路径长...
用dijkstra算法计算源点到个结点的最短路径...谢谢亲爱的朋友~ 详细...
基本步骤:1、把所有结点分成两组:第一组:包括已经确定最短路径的结点;第二组:包括尚未确定最短路径的结点。2、开始时,第一组只包含起点,第二组包含剩余的点;3、用贪心的策略,按最短路径长度递增的顺序把第二组的结点加到第一组去,直到v0可达的所有结点都包含于第一组中。在这个过程中,...
带条件的dijkstra最短路径问题
带条件的Dijkstra算法是在经典Dijkstra算法基础上,解决在保证经过节点最少前提下的最短路径问题。它在传统算法流程中增加了判断环节,以满足特定条件,如最小城市数到达、召集救援队最多等。以下是算法的直观描述:带条件的Dijkstra算法处理的是在图中找到两点之间最短路径,但同时需要考虑额外的约束。例如,...
用Dijkstra算法求图中从顶点a到其他各顶点间的最短路径,并写出执行算 ...
迪克斯加(Dijkstra)算法(最短路径算法)是由荷兰计算机科学家艾兹格·迪科斯彻发现的。算法解决的是有向图中任意两个顶点之间的最短路径问题。举例来说,如果图中的顶点表示城市,而边上的权重表示著城市间开车行经的距离。 迪科斯彻算法可以用来找到两个城市之间的最短路径。迪科斯彻算法的输入包含了一...
运筹学用dijkstra算法求最短路径
1-2 = 4 1-3 = 5 1-4 = 2 全部遍历完后我在从下面的第一个子节点开始遍历,1(-2)-5 = 11 1(-2)-3 = 10 和1-3 = 5 对比 5<10 那么 1-3 = 5 1(-3)-2 = 11 和1-2 = 4进行对比 4<11 那么1-2 = 4 1(-3)-6 = 14 1(-3)-4 = 6 和 1-4 = 2进行对比...
最短路径算法(Dijkstra)
Dijkstra( 迪科斯特拉 )算法是用来解决单源最短路径的算法,要求路径权值非负数。该算法利用了深度优先搜索和贪心的算法。下面是一个有权图,求从A到各个节点的最短路径。第1步:从A点出发,判断每个点到A点的路径(如果该点不能直连A点则距离值为无穷大,如果该点能和A直连则是当前的权值),...
利用Dijkstra算法求下图中从顶点1到其它各顶点间的最短路径,按下面表格...
v1v4v6v7=8+5+30=42;v1v4v6v5v7=35;35为最短路径 Dijkstra:求单源、无负权的最短路。时效性较好,时间复杂度为O(V*V+E)。源点可达的话,O(V*lgV+E*lgV)=>O(E*lgV)。当是稀疏图的情况时,此时E=V*V\/lgV,所以算法的时间复杂度可为O(V^2)。若是斐波那契堆作优先队列...
谁能举一个Pascal中Dijkstra算法求单源最短路径问题的例子并作一些说明...
[问题分析]对于一个含有n个顶点和e条边的图来说,从某一个顶点Vi到其余任一顶点Vj的最短路径,可能是它们之间的边(Vi,Vj),也可能是经过k个中间顶点和k+1条边所形成的路径(1≤k≤n-2)。下面给出解决这个问题的Dijkstra算法思想。设图G用邻接矩阵的方式存储在GA中,GA[i,j]=maxint表示Vi...
求最短路径的dijkstra算法
最短路径dijkstra算法如下: Dijkstra迪杰斯特拉是一种处理单源点的最短路径算法,就是说求从某一个节点到其他所有节点的最短路径就是Dijkstra。 资料拓展: 迪杰斯特拉算法(Dijkstra)是由荷兰数腔计算机科学家狄克斯特拉于1959年提出的,因此又叫狄克斯特拉算法。是从一个顶点到其薯纳衫余各顶点的最短路径算法,解决的...