动态规划求有向无环图的最短路径
问题描述如下:
具体代码实现:
1 #include<stdlib.h> 2 #include<stdio.h> 3 #define x 9999 4 #define max 9999 5 int data[10][10]; 6 int dist[10];//记录最短路径为多少 7 int path[10];//记录最短路径 8 int kmin(int,int); 9 void fpath(int a[][10]); 10 int froute(int a[][10]); 11 void main() 12 { 13 int i,m; 14 int a[10][10]={ 15 {x,4,2,3,x,x,x,x,x,x}, 16 {x,x,x,x,10,9,x,x,x,x}, 17 {x,x,x,x,6,7,10,x,x,x}, 18 {x,x,x,x,x,3,8,x,x,x}, 19 {x,x,x,x,x,x,x,4,8,x}, 20 {x,x,x,x,x,x,x,9,6,x}, 21 {x,x,x,x,x,x,x,5,4,x}, 22 {x,x,x,x,x,x,x,x,x,8}, 23 {x,x,x,x,x,x,x,x,x,4}, 24 {x,x,x,x,x,x,x,x,x,x}}; 25 26 /*for (i=0;i<10;i++) 27 { 28 for(j=0;j<10;j++) 29 printf("%d ",a[i][j]); 30 printf("\n"); 31 }*/ 32 fpath(a); 33 printf("最短路径大小为: %d\n",dist[9]); 34 35 m=froute(a); 36 for(i=m-1;i>=0;i--) 37 printf("最短路径经过: %d\n",path[i]); 38 } 39 void fpath(int a[][10]) 40 { 41 int i,j,k; 42 dist[0]=0; 43 for(i=1;i<10;i++) 44 { 45 k=max; 46 for(j=0;j<i;j++) 47 { 48 if(a[j][i]!=x) 49 if((dist[j]+a[j][i])<k) 50 k=dist[j]+a[j][i]; 51 } 52 dist[i]=k; 53 } 54 } 55 int froute(int a[][10]) 56 { 57 int j,b,k=1,i=9; 58 path[0]=10; 59 while(i>0) 60 { 61 for(j=i-1;j>=0;j--) 62 { 63 if(a[j][i]!=x) 64 { 65 b=dist[i]-a[j][i]; 66 if(b==dist[j]) 67 { 68 path[k++]=j+1; 69 i=j; 70 break; 71 } 72 } 73 74 } 75 } 76 return k; 77 } 78 79 80
相关推荐
关于动态规划最短路径求解的matlab学习例子
JAVA版动态规划解决最短路径问题 啊
java 最短路径 问题 动态规划java 最短路径 问题 动态规划
迪杰斯特拉动态规划最短路径,用C++实现的代码。可以解决疏散问题
使用动态规划求解最短路径问题,是最优化原理里较为经典的一种方法,通过逐层迭代已达到最优目标值。
用动态规划实现最短路径问题 请大家指教
c语言实现的动态规划求最短路径长度,注意看代码中的注释。
算法设计与分析课内实验——动态规划求单源最短路径。文档很齐全,包括算法分析过程和源代码(java语言eclipse环境)
最短路径算法最短路径算法最短路径算法最短路径算法
首先在m脚本文件canshuo.m中输入节点个数和路径权重 在命令窗口中输入canshu 用s=12,e=10的格式输入要求的起止点,再输入main即可得到两点之间的路径和长度。
动态规划 最短路径 循环赛日程安排 算法分析与设计的课件 还有一些自己做实验时找的资料
本文以最短路径问题为例,在给出佛洛伊德算法的基础上,设计了求解该算法的计算程序,这样可大大提 高最短路径计算的效率。 [关键词]最短路径;动态规划;程序设计
重点掌握:动态规划法求解每对结点之间的最短路径、0/1背包问题。 如果求任意两点之间的最短路径,两点之间可以直接到达但却不是最短的路径,要让任意两点(例如从顶点a点到顶点b)之间的路程变短,只能引入第三个点...
该最短路径算法主要以南京市的道路交通为模板(具体见附录图1) 简单实现任意两个地点之间最短路径查询(例如三牌楼 新街口) 该最短路径剔除了那些由于某些原因堵塞不通的路径 有很好的图形界面便于人机交互 路径...
本设计以VC++6.0作为程序开发环境,C语言作为程序开发语言,详细介绍了最短路径的求解算法及其C语言实现过程。系统主要实现了图的创建、单源点最短路径的计算功能。依照本系统可以解决实际生活中许多路径选择问题,...
#include //#define LEN sizeof(struct NODE) #define N 10 #define MAX_TYPE 10000 #define ZERO_TYPE 0 /*定义图的邻接链表*/ struct NODE /*邻接表.../*在阶段决策中,各个顶点到收点的最短路径上的前方顶点编号*/
该程序是matlab编写的,已知起点和终端,找到在指定的步数下,能到达的最短路径
在有障碍的环境下,机器人通过A*算法能够规划出最短路径。
最短路径算法dijkstra的matlab实现