Dijkstra算法应用举例.doc

Dijkstra算法应用举例.doc

ID:57631475

大小:116.00 KB

页数:9页

时间:2020-08-29

Dijkstra算法应用举例.doc_第1页
Dijkstra算法应用举例.doc_第2页
Dijkstra算法应用举例.doc_第3页
Dijkstra算法应用举例.doc_第4页
Dijkstra算法应用举例.doc_第5页
资源描述:

《Dijkstra算法应用举例.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Dijkstra算法应用举例20061002516张昕12306216某城市部分街道如下图所示求到其他点的最短距离。源程序如下#include#include#defineTRUE1#defineFALSE0#defineMAXV100#defineMAXDEGREE50#defineMAXINT100007intparent[MAXV];typedefstruct{intv;intweight;}edge;typedefstruct{edgeedges[MAXV+1][MAXDEGREE];intdegree[MAXV+1];intnvertices;i

2、ntnedges;}graph;initialize_graph(graph*g){inti;g->nvertices=0;g->nedges=0;for(i=1;i<=MAXV;i++)g->degree[i]=0;}insert_edge(graph*g,intx,inty,intdirected,intw){if(g->degree[x]>MAXDEGREE)printf("Warning:insertion(%d,%d)exceedsdegreebound",x,y);g->edges[x][g->degree[x]].v=y;g->edges[x][g->degree[x]].w

3、eight=w;g->degree[x]++;if(directed==FALSE)insert_edge(g,y,x,TRUE,w);elseg->nedges++;}read_graph(graph*g,intdirected){inti;intm;intx,y,w;initialize_graph(g);char*m_n="812";//eg314---v3节点与v1节点互连权值是4char*s[]={"122","135","143","234","256","344","365","474","563","584","675","684","786"};sscanf(m_n,"%d%

4、d",&(g->nvertices),&m);for(i=1;i<=m;i++){sscanf(s[i-1],"%d%d%d",&x,&y,&w);insert_edge(g,x,y,directed,w);}}find_path(intstart,intend,intparents[]){if((start==end)

5、

6、(end==-1))printf("%d",start);else{find_path(start,parents[end],parents);printf("%d",end);}}voiddijkstra(graph*g,intstart){inti,j;bool

7、intree[MAXV];intdistance[MAXV];intv;intw;intweight;intdist;for(i=1;i<=g->nvertices;i++){intree[i]=FALSE;distance[i]=MAXINT;parent[i]=-1;}distance[start]=0;v=start;while(intree[v]==FALSE){intree[v]=TRUE;for(i=0;idegree[v];i++){w=g->edges[v][i].v;weight=g->edges[v][i].weight;if(distance[w]>(distan

8、ce[v]+weight)){distance[w]=distance[v]+weight;parent[w]=v;}}v=1;dist=MAXINT;for(i=1;i<=g->nvertices;i++)if((intree[i]==FALSE)&&(dist>distance[i])){dist=distance[i];v=i;}}for(i=1;i<=g->nvertices;i++)printf("%d%d",i,distance[i]);}intmain(intargc,char**argv){graphg;inti,j;read_graph(&g,FALSE);for(j=1

9、;j<=8;j++){printf("");printf("输出到各点的最短路径长度");dijkstra(&g,j);printf("输出到各点的最短路径");for(i=1;i<=g.nvertices;i++)find_path(j,i,parent);printf("");}system("PAUSE");return0;}运行结果1到各点的最短路经及长度2到各点的最短路经

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。