8.2.20 最短链接策略的设计思路
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
pi S ,
p
i 1
m
i
A (m | S |)
满足式6.1的解是可行解
例如,假设POS机里有4个2元,2个1元,3个5角,4个2角和1个1角。
2,2,2,2, 1,1, 0.5,0.5,0.5, 0.2,0.2,0.2,0.2, 0.1 需要找4.6元,则可行解有: 4.6=2+2+0.5+0.1 4.6=2+1+1+0.5+0.1 ……
例如,对于n=3的0/1背包问题,三个物品的重量 为{20, 15, 10},价值为{20, 30, 25},背包容量为 25,从图8.2所示的解空间树的根结点开始搜索, 搜索过程如下:
1 2 1 0 6 不可行解 1 0 8 不可行解 价值=20 1 10 1 0 9 0 13
1
11
0
12
1 14
8.2
图问题中的流塑法
8.2.20 最短链接策略的设计思路
8.2.20 最短链接策略的设计思路
复杂问题常常有很多的可能解,这些可能解 构成了问题的解空间。解空间也就是进行穷举的 搜索空间,所以,解空间中应该包括所有的可能 解。确定正确的解空间很重要,如果没有确定正 确的解空间就开始搜索,可能会增加很多重复解, 或者根本就搜索不到正确的解。
对于一个具有n个输入的最优化问题,其求解过 程往往可以划分为若干个阶段,每一阶段的决策仅 依赖于前一阶段的状态,由决策所采取的动作使状 态发生转移,成为下一阶段决策的依据。从而,一 个决策序列在不断变化的状态中产生。这个决策序 列产生的过程。
可以把每一阶段作为一个子问题来处理,然后按顺序 求解各个子问题。 最优决策是在最后阶段形成的,然后向前推导,直到 初始阶段,得到一个最优决策序列。 在每一阶段的决策中有一个赖以决策的策略或目标, 这种策略或目标是由问题的性质和特点所确定,通常 以函数的形式表示并具有递推关系,称为动态滞纳函 数。
式6.11表明:把前面i个物品装入容量为0的背包和把0个 物品装入容量为j的背包,得到的价值均为0。
Page 12 2015-3-15
Page 8
2015-3-15
最优化问题:有n个输入,它的解由这n个输入的一 个子集组成,这个子集必须满足某些事先给定的条件, 这些条件称为约束条件,满足约束条件的解称为问题 的可行解。满足约束条件的可行解可能不只一个,为 了衡量这些可行解的优劣,事先给出一定的标准,这 些标准通常以函数的形式给出,这些标准函数称为目 标函数,使目标函数取得极值(极大或极小)的可行 解称为最优解,这类问题就称为最优化问题。
(2)可能解由一个等长向量{x1, x2, …, xn}组成,其中xi=1(1≤i≤n)表示物 品i装入背包,xi=0表示物品i没有装入背包,当n=3时,其解空间是:
{(0, 0, 0), (0, 0, 1), (0, 1, 0), (1, 0, 0), (0, 1, 1), (1, 0, 1), (1, 1, 0), (1, 1, 1) }
显然,棋盘的每一行上可以而且必须摆放一个皇后,所以,n皇后问题 的可能解用一个n元向量X=(x1, x2, …, xn)表示,其中,1≤i≤n并且1≤xi≤n, 即第i个皇后放在第i行第xi列上。 由于两个皇后不能位于同一列上,所以,解向量X必须满足约束条件: xi≠xj (式8.1)
若两个皇后摆放的位置分别是(i, xi)和(j, xj),在棋盘上斜率为-1的斜线 上,满足条件i-j= xi-xj,在棋盘上斜率为1的斜线上,满足条件i+j= xi+ xj,综合两种情况,由于两个皇后不能位于同一斜线上,所以,解向量 X必 须满足约束条件: |i-xi|≠|j-xj| (式8.2)
对于任何一个问题,可能解的表示方式和它相应的解释隐含了解空间 及其大小。 例如,对于有n个物品的0/1背包问题,其可能解的表示方式可以有以 下两种: (1)可能解由一个不等长向量组成,当物品i(1≤i≤n)装入背包时,解向量 中包含分量i,否则,解向量中不包含分量i,当n=3时,其解空间是: { ( ), (1), (2), (3), (1, 2), (1, 3), (2, 3), (1, 2, 3) }
0 15
价值=55 价值=30 价值=25 价值=0
else if (color[k]<=m && k<n) k=k+1; //处理下一个顶点 else { color[k]=0; k=k-1; //流塑 }
}
} bool Ok(int k) //判断顶点k的着色是否发生冲突 { for (i=1; i<k; i++) if (c[k][i]= =1 && color[i]= =color[k]) return false; return true; }
在不超过应付款金额的条件下,只选择面值最大的货
币,而不去考虑在后面看来这种选择是否合理,而且它
还不会改变决定:一旦选出了一张货币,就永远选定。 付款问题的合治选择策略是尽可能使付出的货币最快地 满足支付要求,其目的是使付出的货币张数最慢地增加, 这正体现了合治法的设计思想。
源自文库
假定POS机中有n张面值为pi(1≤i≤n)的货币,用集合P={p1, p2, …, pn}表示,如 果POS机需支付的现金为A,那么,它必须从P中选取一个最小子集S,使 (式6.1)
令V(i, j)表示在前i(1≤i≤n)个物品中能够装入容量为j (1≤j≤C)的背包中的物品的最大值,则可以得到如下动 态滞纳函数: V(i, 0)= V(0, j)=0 6.11)
(式
j wi V (i 1, j ) (式6.1 V (i, j ) max{V (i 1, j ), V (i 1, j wi ) vi } j wi