动态规划1(老师的讲义,我拷下来的呵呵)

转载 2006年06月04日 17:38:00

多阶段决策过程最优化问题

——动态规划的基本模型

在现实生活中,有一类活动的过程,由于它的特殊性,可将过程分成若干个互相联系的阶段,在它的每一阶段都需要作出决策,从而使整个过程达到最好的活动效果。因此各个阶段决策的选取不能任意确定,它依赖于当前面临的状态,又影响以后的发展。当各个阶段决策确定后,就组成一个决策序列,因而也就确定了整个过程的一条活动路线。这种把一个问题看做是一个前后关联具有链状结构的多阶段过程就称为多阶段决策过程,这种问题称为多阶段决策最优化问题。
    【例题1】最短路径问题。图中给出了一个地图,地图中每个顶点代表一个城市,两个城市间的连线代表道路,连线上的数值代表道路的长度。现在,想从城市A到达城市E,怎样走路程最短,最短路程的长度是多少?

【分析】把从A到E的全过程分成四个阶段,用k表示阶段变量,第1阶段有一个初始状态A,两条可供选择的支路ABl、AB2;第2阶段有两个初始状态B1、 B2,B1有三条可供选择的支路,B2有两条可供选择的支路……。用dk(xk,xk+1)表示在第k阶段由初始状态xk到下阶段的初始状态xk+1的路径距离,Fk(xk)表示从第k阶段的xk到终点E的最短距离,利用倒推方法求解A到E的最短距离。具体计算过程如下:

    S1:K=4,有:F4(D1)=3,F4(D2)=4,F4(D3)=3
    S2: K=3,有:F3(C1)=min{d3(C1,D1)+F4(D1),d3(C1,D2)+F4(d2)}=min{8,10}=8
                 F3(C2)=d3(C2,D1)+f4(D1)=5+3=8
                 F3(C3)=d3(C3,D3)+f4(D3)=8+3=11
                 F3(C4)=d3(C4,D3)+f4(D3)=3+3=6
    S2: K=2,有:F2(B1)=min{d2(B1,C1)+F3(C1),d2(B1,C2)+f3(C2),d2(B1,C3)+F3(C3)}=min{9,12,14}=9
                 F2(m)=min{d2(B2,c2)+f3(C2),d2(B2,C4)+F3(C4)}=min{16,10}=10
    S4:k=1,有:F1(A)=min{d1(A,B1)+F2(B1),d1(A,B2)+F2(B2)}=min{13,13}=13
    因此由A点到E点的全过程的最短路径为A—>B2一>C4—>D3—>E。最短路程长度为13。
    从以上过程可以看出,每个阶段中,都求出本阶段的各个初始状态到过程终点E的最短路径和最短距离,当逆序倒推到过程起点A时,便得到了全过程的最短路径及最短距离,同时附带得到了一组最优结果(即各阶段的各状态到终点E的最优结果)。

在上例的多阶段决策问题中,各个阶段采取的决策,一般来说是与时间有关的,决策依赖于当前状态,又随即引起状态的转移,一个决策序列就是在变化的状态中产生出来的,故有“动态”的含义,称这种解决多阶段决策最优化问题的方法为动态规划方法。

根据上例分析和动态规划的基本概念,可以得到动态规划的基本模型如下:
    (1)确定问题的决策对象。
    (2)对决策过程划分阶段。
    (3)对各阶段确定状态变量。
    (4)根据状态变量确定费用函数和目标函数。
    (5)建立各阶段状态变量的转移过程,确定状态转移方程。

动态规划解决0/1背包问题

之前总结了利用穷举法,贪婪法解决0/1背包的方法,同时也通过Fibnacci介绍了动态规划,那么该如何来利用动态规划来解决0/1背包问题呢? 首先动态规划有两个条件; 如果可以把局部子问题的解结合...
  • changyuanchn
  • changyuanchn
  • 2016年05月18日 20:12
  • 2091

0/1背包问题 - 动态规划(C++实现)

0 / 1背包问题 - 动态规划(C++实现)flyfish以下代码在VC++2013下编译通过#include "stdafx.h" #include #include #include st...
  • flyfish1986
  • flyfish1986
  • 2017年06月20日 11:09
  • 359

navicat for mysql ,从远程数据库中到数据到本地数据库(笨办法)

启动远程的数据库服务器,打开想要导出的数据库中的某表。 有两种简单粗暴的方法: 方法一: 如图,假如想导出表grade,那么选择“导出向导”,选择表类型: 下一步,将表grade导出到指定...
  • xidianliutingting
  • xidianliutingting
  • 2016年12月10日 20:27
  • 1791

子集和(动态规划)

对于由从1到N (1 例如,N=3时,可以将集合{1, 2, 3} 分为{1,2}和{3}。此时称有一种方式(即与顺序无关)。 N=7时,共有四种方式可以将集合{1, 2, 3, ..., 7} 分...
  • hushhw
  • hushhw
  • 2017年10月31日 21:43
  • 199

动态规划(1):基本思路以及步骤

基本思想动态规划是针对一类求最优解的问题的算法, 其核心是将一个问题分解成为若干个子问题(这里对应下文的子问题使用条件), 部分类似于分治的思想(不懂得可以参考归并排序), 通过求每一次的最优决策, ...
  • sun897949163
  • sun897949163
  • 2016年07月31日 11:05
  • 4270

动态规划—0-1背包问题(最易理解的讲解)

0-1背包问题是最广为人知的动态规划问题之一,拥有很多变形。尽管在理解之后并不难写出程序,但初学者往往需要较多的时间才能掌握它。小编写这篇文章力争做到用通俗易懂的语言,最少的公式把0-1背包问题讲解透...
  • u010293698
  • u010293698
  • 2015年10月08日 22:50
  • 2635

动态规划之0-1背包问题

首先介绍一下动态规划... 设计一个动态规划算法,通常可按照以下几个步骤进行: (1) 找出最优解的性质,并刻画其结构特征。 (2) 递归地定义最优解的值 (3) 以自底而上的方式计算出最优值...
  • yeepom
  • yeepom
  • 2013年03月24日 11:31
  • 35328

动态规划 解 青蛙跳石过河

题目描述: A frog is crossing a river. The river is divided into x units and at each unit there may or ...
  • LiuPeiP_VIPL
  • LiuPeiP_VIPL
  • 2017年01月18日 13:01
  • 345

动态规划之详细分析0-1背包问题

题目:   有 N 件物品和一个容量为 V 的背包。第 i 件物品的费用是 w[i],价值是 p[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。   本文按照动态规...
  • Hearthougan
  • Hearthougan
  • 2016年12月26日 01:50
  • 967

zjnu(1183)——括号序列【基础算法・动态规划】——高级

首先,我只想声明一点,这道题有毒。。。我用char读入就错了,然而换成string读入就对了或者可以把定义char的数组开的大一点,原先1A的一题硬是纠结了老半天。 传送门:zjnu 题意: 就是对于...
  • ACMer_hades
  • ACMer_hades
  • 2015年08月27日 23:36
  • 1433
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:动态规划1(老师的讲义,我拷下来的呵呵)
举报原因:
原因补充:

(最多只允许输入30个字)