文档库 最新最全的文档下载
当前位置:文档库 › 动态环境感知的多目标室内路径规划方法

动态环境感知的多目标室内路径规划方法

动态环境感知的多目标室内路径规划方法
动态环境感知的多目标室内路径规划方法

用动态规划法实现有向图的最短路径问题。

动态规划法实现有向图的最短路径实验 实验题目: 设计一个求解有向图,单源最短路径的算法 实验目的: 1)了解,并掌握分支限界算法思想 2)会编写常见算法。 实验要求: 1.编写实验代码 2.分析算法时间和空间复杂度 实验主要步骤: 1 算法代码 package suanfa; publicclass ShortPath{ privatestatic Integer M = Integer.MAX_VALUE; publicstaticvoid main(String[]args){ int[][]c={{M,4,2,3,M,M,M,M,M,M}, {M,M,M,M,9,8,M,M,M,M}, {M,M,M,M,6,7,8,M,M,M}, {M,M,M,M,M,4,7,M,M,M}, {M,M,M,M,M,M,M,5,6,M}, {M,M,M,M,M,M,M,8,6,M}, {M,M,M,M,M,M,M,6,5,M}, {M,M,M,M,M,M,M,M,M,7}, {M,M,M,M,M,M,M,M,M,3}, {M,M,M,M,M,M,M,M,M,M}}; shortPath(10,c); } publicstaticvoid shortPath(int n,int[][]c){ int[] cost=newint[n];//cost[i]存储i到n-1的子问题的最短路径值 int[] path=newint[n];//path[i]存储状态,使cij+cost[i]最小的j值 //对数组cost[n]和path[n]进行初始化 for(int i=0;i=0;i--){

运用动态规划模型解决最短路径问题

运用动态规划模型解决物流配送中的最短路径问题 王嘉俊 (盐城师范学院数学科学学院09(1)班) 摘要:随着现代社会的高速发展,物流配送成为了连接各个生产基地的枢纽,运输的成本问题也成为了企业发展的关键。运费不但与运量有关,而且与运输行走的线路相关。传统的运输问题没有考虑交通网络,在已知运价的条件下仅求出最优调运方案,没有求出最优行走路径。文中提出“网络上的物流配送问题“,在未知运价,运量确定的情况下,将运输过程在每阶段中选取最优策略,最后找到整个过程的总体最优目标,节省企业开支。 关键词:动态规划,数学模型,物流配送,最优路径 1 引言 物流配送是现代化物流系统的一个重要环节。它是指按用户的订货要求, 在配送中心进行分货、配货, 并将配好的货物及时送交收货人的活动。在物流配送业务中, 合理选择配送径路, 对加快配送速度、提高服务质量、降低配送成本及增加经济效益都有较大影响。物流配送最短径路是指物品由供给地向需求地的移动过程中, 所经过的距离最短(或运输的时间最少, 或运输费用最低) , 因此, 选定最短径路是提高物品时空价值的重要环节。[1] 经典的Dijkstra 算法和Floyd 算法思路清楚,方法简便,但随着配送点数的增加,计算的复杂性以配送点数的平方增加,并具有一定的主观性。我国学者用模糊偏好解试图改善经典方法[]5,取得了较好的效果。遗憾的是,模糊偏好解本身就不完全是客观的。文献[]6详细分析了经典方法的利弊之后,提出将邻接矩阵上三角和下三角复制从而使每条边成为双通路径,既适用于有向图也适用于无向图, 但复杂性增加了。为了避免上述方法存在的不足,本文以动态规划为理论,选择合理的最优值函数,用于解决物流配送最短路径问题。 动态规划是解决多阶段决策过程最优化问题的一种数学方法。1951年美国数学家Bellman(贝尔曼)等人根据一类多阶段决策问题的特性,提出了解决这类问题的“最优性原理”,并研究了许多实际问题,从而创建了最优化问题的一种新方法——动态规划。 动态规划在工程技术、管理、经济、工业生产、军事及现代控制工程等方面都有广泛的应用,而且由于动态规划方法有其独特之处,在解决某些实际问题时,显得更加方便有效。由于决策过程的时间参数有离散的和连续的情况,故决

例:动态规划解最短路径问题:

● 例:动态规划解最短路径问题: 步骤(1)、(2)已实现。 最优子结构:从起点到终点的最短路径包含了该路径 上各点到终点的最短路径。 递归公式:设v 为图中一个顶点,v 1, v 2,…, v m 为v 的 直接后继,cost(v)表示v 到终点的最短路径 长度,c[u, w]表示边上的权,t 为终点, 则cost 满足如下递归公式: ??? ????≠∞=≠+=≤≤无后继且有后继且v t v , t v , 0v t v , )}cost(v ] v {c[v,min cost(v)i i m i 1 步骤(3) 计算最优值(求最短路径长度):

设有向网G含n个顶点,用邻接矩阵c[1..n, 1..n]表示,起点为s,终点为t 。 有关信息的保存: 数组cost[1..n]: 存储子问题的解。 (cost[i]表示从顶点i到终点t的最短路径长 度。) 数组succ[1..n]: 存储最短路径的有关信息。 (succ[i]表示顶点i到终点t的最短路径上顶 点i的直接后继。) 原问题的最优值为cost[s]。 (1) 自底向上的迭代算法 关键:根据递归公式确定迭代顺序(即子问题的求解顺序)。 原则:计算cost[i]时,顶点i的所有后继的cost值应先计算。 计算顺序:按图G的逆拓扑排序顺序。 算法SHORTEST_ROUTE_LEN1 输入:有向网G的顶点数n, 邻接矩阵c[1..n, 1..n], 起点s和终点t , 1<=s, t<=n。

输出:G的从起点s到终点t的最短路径长度cost[s]和最短路径有关信息的数组succ[1..n]。 //对图G拓扑排序,结果存于数组a[1..n] 中。 toposort(c, n, a) j=n while a[j]< >t j=j-1 //找出j使得a[j]=t 。 for i=j+1 to n cost[a[j]]=∞//排除无关的顶 点。 cost[t]=0 //从终点开始迭代。 while a[j]< >s j=j-1; k=a[j]; i0=0 ; min=∞ for i=1 to n if c[k, i]+cost[i]

贪心、分支限界、动态规划解决最短路径问题

算法综合实验报告 学号: 1004111107 姓名:黄琼莹 一、实验内容: 分别用动态规划、贪心及分支限界法实现对TSP问题(无向图)的求解,并至少用两个测试用例对所完成的代码进行正确性及效率关系上的验证。 二、程序设计的基本思想、原理和算法描述: (包括程序的数据结构、函数组成、输入/输出设计、符号名说明等) 1、动态规划法 (1)数据结构: 利用二进制来表示集合,则集合S可由一个十进制数x相对应,此x所 对应的二进制数为y,如果y的第k位为1,则表示k存在集合S中。 例如: 集合S={0,1}(其子集合为{}{0}{1}{01}),我们用二进制数11(所对应 十进制数为3)表示S,11中右手边第1个数为1表示0在集合S中, 右手边第二个数为1表示1在集合S中,其他位为0表示其它数字不在 集合S中;同理, 集合S={0,2}(其子集合为{}{0}{2}{02}可用二进制数101(所对应十进制 数为5)表示(右手边第1个数为1表示0在集合S中,右手边第二个 数为0表示1不在集合S中,右手边第3个数为1表示2在集合S中, 则说明0,2在集合中,1不在集合中。 (2)函数组成 getmin():获得该数组的最小值; getJ():根据2进制j和j中1的个数找下一个j getnextj():返回下一个j的十进制数 (3)输入/输出设计 本题通过键盘进行输入,通过屏幕进行输出

由于题目的输入要求是:第一行输入一个整数n(2<=n<=10),接下来的n行,每行输入n-1个整数,表示i与除了自己之外的所有点之间的距离,按点的编号从小到大顺序输入 可以设计两个for循环来实现数据的输入,外层for循环实现一行一行地输入,内层for循环实现某一行中数据的输入 5 3 1 5 8 3 6 7 9 1 6 4 2 5 7 4 3 8 9 2 3 (4)符号名说明 N:节点数,即城市的数目 matr[20][20]:存邻接矩阵 d[20][40000]={0}:存动态填表数据 min:花费的最小值,即答案 jlist[20]:存放j的二进制数组 V[20]:标记节点是不是被访问过 tmpres[20]:存放结果的数组 (5)算法描述 假设从顶点i出发,令d(i,V’)表示从顶点i出发经过V’中各个顶点一次且仅一次,最后回到出发点i的最短路径的长度,开始时,V’=V-{i},于是,旅行商问题的动态规划函数为: d(i,V’) = min{c ik + d(k,V’-{k})} (k∈V’) 1) d(k,{}) = c ki (k ≠ i) 2) 简单来说,就是用递归表达:从出发点0到1号点,假设1是第一个,则剩下的路程就是从1经过剩下的点最后回到0点的最短路径. 所以当V’为空的时候, d(k,{}) = c ki (k ≠ i), 找的是最后一个点到0点的距离.递归求解1之后,再继续求V’之中剩下的点,最后找出min. 如果按照这个思想直接做,对于每一个i都要递归剩下的V中所有的点,所以这样的时间复杂度就近似于N!,其中有很多重复的工作. 可以从小的集合到大的集合算,并存入一个二维数组,这样当加入一个节点时,就可以用到之前的结果,如四个点的情况: 邻接矩阵: node 0 1 2 3 0 5 3 2

动态规划算法实现多段图的最短路径问题算法设计与分析实验报告

动态规划算法实现多段图的最短路径问题算法设计与分析实验报告

算法设计与分析实验报告 实验名称 动态规划算法实现多段图的最短路径问题 评分 实验日期 年 月 日 指导教师 姓名 专业班级 学号 一.实验要求 1. 理解最优子结构的问题。 有一类问题的活动过程可以分成若干个阶段,而且在任一阶段后的行为依赖于该阶段的状态,与该阶段之前的过程如何达到这种状态的方式无关。这类问题的解决是多阶段的决策过程。在50年代,贝尔曼(Richard Bellman )等人提出了解决这类问题的“最优化原理”,从而创建了最优化问题的一种新的算法设计方法-动态规划。 对于一个多阶段过程问题,是否可以分段实现最优决策,依赖于该问题是否有最优子结构性质,能否采用动态规划的方法,还要看该问题的子问题是否具有重叠性质。 最优子结构性质:原问题的最优解包含了其子问题的最优解。 子问题重叠性质:每次产生的子问题并不总是新问题,有些子问题被反复计算多次。问题的最优子结构性质和子问题重叠性质是采用动态规划算法的两个基本要素。 2.理解分段决策Bellman 方程。 每一点最优都是上一点最优加上这段长度。即当前最优只与上一步有关。 U s 初始值,u j 第j 段的最优值。 ? ????+==≠}.{min , 0ij i j i j s w u u u

3.一般方法 1)找出最优解的性质,并刻画其结构特征;2)递归地定义最优值(写出动态规划方程);3)以自底向上的方式计算出最优值; 4)根据计算最优值时得到的信息,构造一个 最优解。 步骤1-3是动态规划算法的基本步骤。在只需要求出最优值的情形,步骤4可以省略,步骤3中记录的信息也较少;若需要求出问题的一个最优解,则必须执行步骤4,步骤3中记录的信息必须足够多以便构造最优解。 二.实验内容 1.编程实现多段图的最短路径问题的动态规 划算法。 2.图的数据结构采用邻接表。 3.要求用文件装入5个多段图数据,编写从文件到邻接表的函数。 4.验证算法的时间复杂性。 三.程序算法 多段图算法: Procedure FGRAPH(E,k,n,P) //输入是按段的顺序给结点编号的,有n个结点的k段图。E是边集,c(i,j)是边的成本。P(1:k)是最小成本路径。// real COST(n),integer(n-1),P(k),r,j,k,n COST(n)<-0 for j<-n-1 to 1 by -1 do //计算COST(j)// 设r是一个这样的结点,(j,r) E且使c(j,

最短路径Floyd算法动态规划问题及其程序设计样本

最短路径动态规划问题及其程序设计 林旭东 (深圳大学管理学院,广东深圳518060) [摘要]本文以最短路径问题为例,在给出佛洛伊德算法的基础上,设计了求解该算法的计算程序,这样可大大提高最短路径计算的效率。 [关键词]最短路径; 动态规划; 程序设计 1 佛洛伊德算法 已知有n个顶点的有向图,佛洛伊德算法能够求解出每一对顶点之间的最短路径。假设使用邻接矩阵d ( i, j)来对图进行存储, d ( i, j)表示υi 到υj 之间的距离,可是该距离不一定是最短距离。佛洛伊德算法的基本思想是:为求顶点υi→υj 之间的最短距离,需要进行n次试探。首先将υ0 加入路[收稿日期] - 12 - 22[作者简介]林旭东(1972 - ) ,男, 湖北武汉人,深圳大学管理学院副教授,博士后,主要研究方向:数量模型与决策分析。径,考虑路径υi →υ0 →υj 是否存在,如果存在,则比较υi →υj和υi →υ0 →υj 的路径长度,取长度短的路径作为υi →υj 的路径,记作(υi ,υj ) 。接着在路径上再增加一个顶点υ1 ,比较υi→υ1 →υj 和(υi ,υj )的路径长度, 取长度短的路径作为(υi ,υj) 。不断将顶点υ2 ,υ3 , .,υn - 1加入进行试探, 最后得到的(υi ,υj )必定为υi →υj 的最短路径。若使用数组dk ( i, j)表示加入顶点k后,最短路径长度的变化情况,使用数组pk ( i, j)表示加入顶点k后,最短路径上顶点的变化情况,这样佛洛伊德算法就会产生一组d 0 ( i, j) ,d1 ( i, j) , ., dn - 1 ( i, j)和一组p0 ( i, j) , p1 ( i, j) , ., pn - 1 ( i, j) 。 R2 = 01314 014 01286 0 01197 01263 01394 01146

动态规划-最短路径问题

最短路径问题 下图给出了一个地图,地图中每个顶点代表一个城市,两个城市间的连线代表道路,连线上的数值代表道路长度。 现在,我们想从城市a到达城市E。怎样走才能使得路径最短,最短路径的长度是多少?设DiS[x]为城市x到城市E的最短路径长度(x表示任意一个城市); map[i,j]表示i,j两个城市间的距离,若map[i,j]=0,则两个城市不通; 我们可以使用回溯法来计算DiS[x]: var S:未访问的城市集合; function search(who{x}):integer; {求城市who与城市E的最短距离} begin if Who=E Then Search←0 {找到目标城市} Else begin min←maxint;{初始化最短路径为最大} for i 取遍所有城市 Do if(map[Who,i]>0{有路})and(i S{未访问}) then begin S←S-[i];{置访问标志} j←map[Who,i]+ search(i); {累加城市E至城市Who的路径长度} S←S+[i]; {回溯后,恢复城市i未访问状态} if j<min Then min←j; {如果最短则记下} end;{then} search←min;{返回最短路径长度} End;{else} End;{search} begin S←除E外的所有城市; Dis[a]←search(a);{计算最短路径长度} 输出Dis[a]; end.{main} 这个程序的效率如何呢?我们可以看到,每次除了已经访问过的城市外,其他城市都要访问,所以时间复杂度为O(n!),这是一个“指数级”的算法。那么,还有没有效率更高的解题方法呢?

动态规划之最短路径源代码

动态规划之最短路径问题源代码 #include "stdio.h" #include "conio.h" #define n 16 /*图的顶点数*/ #define k 7 /*图的段数*/ #define l 30 #define MAX 100 typedef int NodeNumber;/*节点编号*/ typedef int CostType;/*成本值类型*/ CostType cost[n][n]; NodeNumber path[k]; NodeNumber cur=-1; void creategraph(CostType *cost[n][n]) /*创建图的成本矩阵*/ { int i,j,x,y,value; for(i=0;i=0;i--) { leng=MAX; for(j=i+1;j<=n-1;j++) if(cost[i][j]>0 && (cost[i][j]+v[j])

动态规划及其在求最短路径问题中的应用

计算机算法设计与分析 论文名:动态规划及其在求最短路径问题中的应用 班级:12医软一班 学号:12714040 姓名:张健 日期:2015年6月

动态规划及其在求最短路径问题中的应用 摘要:在概述动态规划原理的基础上,提出了动态规划数学模型建模主要步骤,并运用动态规划思想对最短路径进行求解,最后总结出动态规划在此类问题中的优越性。 关键字:动态规划;最短路径;多阶段决策。 在实践中有许多决策问题与时间有关系,决策过程分成若干阶段,各阶段的决策相互关联,共同决定最终的目标,这样的问题称之为多阶段决策问题。动态规划方法是解决多阶段决策过程最优化的一种方法。这一方法最初是由美国数学家R.Bellman等人在20世纪50年代提出的,实践证明许多问题用动态规划建模求解比用线性规划或非线性规划更加有效,特别是对离散性问题,运用解析数学无法解决,而动态规划就成为得力的工具。动态规划方法把一个比较复杂的问题分析为一系列同一类型的更容易求解的子问题先按照整体最优思想逆序求出各个可能状态的最优策略,然后顺序求出整个问题的最优策略和最优路径。由于将动态规划思想应用到求解运输问题的最短路径中,计算过程单一化便于应用于计算机,求解结果清晰明了,在实践应用中获得显著效果。

1 动态规划原理概述 动态规划最优化原理可以这样阐述:一个最优化策略不论过去状态和决策如何,对前面的决策所形成的状态而言,余下的诸多策略必须构成最优策略,即其子策略总是最优的。任何思想方法都有一定的局限性,动态规划也有其适应的条件。如果某阶段的状态给定后,则在这阶段以后过程的发展不受这阶段以前各段状态的影响,这个性质称为无后效性,适用动态规划的问题必须满足这个性质;其次还须满足上述最优化原理。动态规划基本思想一是正确的写出基本的递推关系式和恰当的边界条件;二是在多阶段决策过程中,动态规划方法是即把当前一段和后来各阶段分开,又把当前效益和未来效益结合起来考虑的一种多阶段决策的最优化方法,每阶段决策和选取是从全局来考虑,与该段的最优选择的答案一般是不同的;三是在求整个问题的最优策略时,由于初始状态是已知的,儿每阶段的决策又都是该阶段状态的函数,因而最优策略所经过的各阶段状态便可逐次变换得到,从而确定最优路线。简而言之动态规划的基本思想就是把全局的问题化为局部的问题,为了全局最优必须局部最优。 2 动态规划建模主要步骤 用动态规划求解实际问题,首先要建立动态规划模型,需

动态规划求最短路径的两种方法

动态规划 1.最短路线问题 解(1):将上图该画成下图: 记a (1,2)=4,a(1,3)=5,依次类推,表示每个点和值的关系。 逆序递推方程: ???? ?==+++=0)6 (61,2,3,4,5)}1(1),({min )(s f k k s k f k u k s k d k u k s k f A B 1 B 2 C 1 C 2 C 3 C 4 D 1 D 2 D 3 E 1 E 2 F 4 5 2 3 6 8 7 7 5 8 4 5 3 4 8 4 3 5 6 2 3 1 4 3 1 2 3 4 5 6 7 8 9 10 11 12 13 4 5 2 3 6 8 7 7 5 8 4 5 3 4 8 4 3 5 6 2 3 1 4 3

如图各状态: 逆序递推,找出上一个状态到下一阶段的最小路径值。 例如,当K=4时,状态 它们到F 点需经过中途 点E ,需一一分析从E 到 F 的最短路:先说从D1到F 的最短路 有两种选择:经过 E1, E2, 比较最短。 这说明由 D1 到F 的最短距离为7,其路径为 A B 1 B 2 C 1 C 2 C 3 C 4 D 1 D 2 D 3 E 1 E 2 F 4 5 2 3 6 8 7 7 5 8 4 5 3 4 8 4 3 5 6 2 3 1 4 3 第1阶段 第2阶段 第3阶段 第4阶段 第5阶段 状态 1 状 态 2 状 态 3 状态 4 状态 5 状态 6 )} (),(),(),(min{)(252141511414E f E D d E f E D d D f ++=. 7}35,43min{=++=.11F E D →→},,{3214D D D S =

动态规划及其在求最短路径问题中的应用

论文名:动态规划及其在求最短路径问题中的应用 班级:12医软一班 学号: 姓名:张健 日期:2015年6月 动态规划及其在求最短路径问题中的应用 摘要:在概述动态规划原理的基础上,提出了动态规划数学模型建模主要步骤,并运用动态规划思想对最短路径进行

求解,最后总结出动态规划在此类问题中的优越性。 关键字:动态规划;最短路径;多阶段决策。 在实践中有许多决策问题与时间有关系,决策过程分成若干阶段,各阶段的决策相互关联,共同决定最终的目标,这样的问题称之为多阶段决策问题。动态规划方法是解决多阶段决策过程最优化的一种方法。这一方法最初是由美国数学家等人在20世纪50年代提出的,实践证明许多问题用动态规划建模求解比用线性规划或非线性规划更加有效,特别是对离散性问题,运用解析数学无法解决,而动态规划就成为得力的工具。动态规划方法把一个比较复杂的问题分析为一系列同一类型的更容易求解的子问题先按照整体最优思想逆序求出各个可能状态的最优策略,然后顺序求出整个问题的最优策略和最优路径。由于将动态规划思想应用到求解运输问题的最短路径中,计算过程单一化便于应用于计算机,求解结果清晰明了,在实践应用中获得显著效果。 1 动态规划原理概述 动态规划最优化原理可以这样阐述:一个最优化策略不论过去状态和决策如何,对前面的决策所形成的状态而言,余下的诸多策略必须构成最优策略,即其子策略总是最优的。任何思想方法都有一定的局限性,动态规划也有其适应的条

件。如果某阶段的状态给定后,则在这阶段以后过程的发展不受这阶段以前各段状态的影响,这个性质称为无后效性,适用动态规划的问题必须满足这个性质;其次还须满足上述最优化原理。动态规划基本思想一是正确的写出基本的递推关系式和恰当的边界条件;二是在多阶段决策过程中,动态规划方法是即把当前一段和后来各阶段分开,又把当前效益和未来效益结合起来考虑的一种多阶段决策的最优化方法,每阶段决策和选取是从全局来考虑,与该段的最优选择的答案一般是不同的;三是在求整个问题的最优策略时,由于初始状态是已知的,儿每阶段的决策又都是该阶段状态的函数,因而最优策略所经过的各阶段状态便可逐次变换得到,从而确定最优路线。简而言之动态规划的基本思想就是把全局的问题化为局部的问题,为了全局最优必须局部最优。 2 动态规划建模主要步骤 用动态规划求解实际问题,首先要建立动态规划模型,需要进行以下的基本步骤: 第一步:正确划分阶段,确定阶段变量,将多阶段决策问题的实际过程,恰当的划分为若干个相互独立又相互联系的是需要做出一个决策的子问题。阶段通常是按决策进行的时间或空间上的先后顺序划分的,阶段变量用K表示。

多种方法求多段图的最短路径问题算法设计与分析课程设计

学号: 《算法设计与分析B》 大作业 题目多种方法解决多段图的最短 路径问题 学院计算机科学与技术学院专业软件工程 班级 姓名 指导教师 2014 年12 月26 日

多种方法解决多段图的最短路径问题 摘要 多段图的最短路径问题是求从源点到终点的最小代价路径。本文主要描述的是分别用动态规划法、贪心法和分支限界法来解决多段图最短路径问题时的情况。文章首先阐述了各个方法的原理,主要的思路是通过输入一组数据,比较三者的输出结果的准确性以及运行时间,以之为基础来分析、讨论三者的性能区别。文章最后讲述了若这几种方法运行到有向图中的情况,几种方法的对比和它们比较适应的使用情况的讨论,并给出了自己的建议。 关键字:多段图最短路径问题;动态规划法;分支限界法;贪心法

目录 摘要................................................................. II 1 引言 (1) 2 问题描述 (1) 3 贪心法求解 (2) 3.1 贪心法介绍 (2) 3.2 问题分析 (3) 4 动态规划法求解 (3) 4.1 动态规划法介绍 (3) 4.2 问题分析 (4) 5 分支限界法求解 (5) 5.1 分支限界法介绍 (5) 5.2 问题分析 (5) 6 程序清单 (6) 6.1 源代码 (6) 6.2 结果截图 (9) 7 结果分析 (9) 8 课程体会 (10) 9 参考文献 (10)

1引言 当前社会,关于最短路径的问题屡屡出现。例如在开车自驾游的一个过程中,排除其它影响因素,从一个地点到另一点,这个时候必然是希望有一条距离最短的路程来尽量减少消耗的时间以及花费的(它们在模型中被称为代价),市场上对该问题的解决有很大的需求,因此,这里我将讨论多段图的最短路径的问题。 大二开设的《数据结构》课程中就包括最短路径这方面问题的讨论。当时老师介绍了分别面向单源(Dijkstra算法)与非单源(Floyd算法)两种问题的算法——这是我们最早的对最短路径方面的理解,也是我们接触的比较早的关于图的问题。 在这学期的《算法设计与分析》课程中,我们学习了很多基本的算法设计技术,蛮力法、分治法、减治法、动态规划法、贪心法、回溯法、分支限界法等,它们把以前学习的诸多方法都命名并归纳分类起来,其中有多种算法都可以用来解决最短路径问题,并且该问题作为一个图的问题,对该问题的继续探讨优化的需求很大、本文将就不同算法在解决该最短路径问题时的不同方法进行对比并给出该问题在不同基础上不同的最终解决方案。由于时间的限制,本文将重点分析动态规划法下的情况,并会对图的情况加以简化、限制,最后会对其它的图做一些拓展。 2问题描述 设图G=(V, E)是一个带权有向连通图,如果把顶点集合V划分成k个互不相交的子集Vi(2≤k≤n, 1≤i≤k),使得E中的任何一条边(u, v),必有u∈Vi,v∈Vi+m(1≤i<k, 1<i+m≤k),则称图G为多段图,称s∈V1为源点,t∈Vk为终点。多段图的最短路径问题是求从源点到终点的最小代价路径。多段图的最短路径问题是求从源点到终点的最小代价路径。 由于多段图将顶点划分为k个互不相交的子集,所以,可以将多段图划分为k段,每一段包含顶点的一个子集。不失一般性,将多段图的顶点按照段的顺序进行编号,同一段内顶点的相互顺序无关紧要。假设图中的顶点个数为n,则源点s的编号为0,终点t的编号为n-1,并且,对图中的任何一条边(u, v),顶点u的编号小于顶点v的编号。 这里我们讨论的多段图是可以分段的,各段之间的关系最好是单向的,即对该有向图来说,图中是没有环的存在的。

相关文档
相关文档 最新文档