花束摆放实验报告

花束摆放实验报告

ID:35235840

大小:139.36 KB

页数:7页

时间:2019-03-22

花束摆放实验报告_第1页
花束摆放实验报告_第2页
花束摆放实验报告_第3页
花束摆放实验报告_第4页
花束摆放实验报告_第5页
资源描述:

《花束摆放实验报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、算法设计与分析实验报告动态规划之花束摆放问题一.问题描述现有f束不同品种的花束(每束花用1~f的整数唯一标识)和至少为同样数量的花瓶按顺序摆成一行,其位置固定于架子上并按从1到v从左到右依次摆放。其中v为花瓶的数量,则有f<=v。标识花束的整数决定了花束在花瓶中的顺序。例如有花束i和花束j(i

2、表示。约定空置的花瓶的美学值为0。为取得最大的美学效果,必须在保持花束的顺序的前提下,使花束的摆放取得最大的美学值。现需给出一种取得最大美学值的摆放方式。二.求解思路设B【i】【j】表示第i朵花放在第j个瓶子里产生的美学值,设M【i】【j】表示总共i朵花放入j个瓶子中产生的最大美学值(其中i<=j)思路一:采用分治法的思想,当花束数量等于花瓶数量,即f=v时,问题只有一种解决方案。那么,当f

3、在第v个瓶子所产生的美学值。即:M[i][j]=max{M[f-1][k](f-2f时,根据鸽舍原理,一定有一朵花有至少两种选择放入不同的花瓶中。假设这就是第f朵花,则它不一定放入第v个瓶子中)。假如第f朵花不是放在第v个瓶子中而是在选出的方案中选择一个空置的瓶子放入,则可能破坏了花束的摆放顺序,不符合题意。那么要求得f

4、朵花放入v个花瓶中的最大美学值,就必须遍历所有花束摆放的情形,找出其最大值,也就是M[f][v]=max{M[f][f],M[f][f+1],……,M[f][v]};而且在每一次将问题细分的时候,需要找到前面所取得的最大美学值,这一过程实际上是有重复的。比如下面这个例子:1234求2朵花放在4个瓶子里产生的最大美学18349实际上和2朵花放在3个瓶子里产生的最大23712美学值相同。若采用上述的方法,需要比较31525两次2朵花放在3个瓶子里的情况。思路二:上述方法尽管有缺陷,但我们可以基于以上思想进行改进。我

5、们用M[i][j]表示i朵花放入j个花瓶中产生的最大美学值。那么当第i朵花放在第j个瓶子时,我们只需知道前i-1个瓶子放入j-1个瓶子的最大美学值M[i-1][j-1],也就M[i][j]=M[i-1][j-1]+B[i][j];若第i朵花不放在第j个瓶子中,则问题变为求解i朵花放入前j-1个瓶子的最大美学值,也就是M[i][j]=M[i][j-1];这两种情况可以囊括所有i朵花束放入j个花瓶中的情形,且对于每个M[i][j]来说,求解它的值可以化为求解它的子问题M[i-1][j-1]或M[i][j-1],不会

6、出现重复计算。因此,计算M[i][j]具有求解最优子结构的性质。其计算方式为:M[i][j]=max{M[i][j-1],(M[i-1][j-1]+B[i][j])}。值得注意的是,当i=1时,M[1][j]=max{M[1][j-1],B[1][j]}.我们可以用一个例子来说明这个算法:为了保持花束的顺序,我们可以规定第i朵花只能放在第i~v-f+1个瓶子上,也就是当jv-f+1时B[i][j]=0。据此,我们给出一组3朵花放在5个瓶子里的美学值:花瓶12341610002047030063那

7、么根据上述的求解最优子结构的动态规划算法,可以得到下面这个二维数组M[i][j]:花瓶123416(B[1][1])10(B[1][2])10(M[1][2])10(M[1][3])2010(M[1][2]+B[2][2])17(M[1][2]+B[2][3])17(M[2][3])30016(M[2][2]+B[3][3])20(M[2][3]+B[3][3])三.具体实现:实验环境:Dev-C++实验数据:本实验给出20组数据作为数据集写入data.txt中。第i朵花放在第j个瓶子产生的美值B[i][j]

8、由随机数给出(当jv-f+1时,B[i][j]=0),其中10组数据1<=f<=v<=10,另外10组数组1<=f<=v<=100.也可以自己手动输入花束数量f和花瓶数量v来查看实验结果。实验测试:本实验通过data.txt文件读入20组数据,分别对其求解,并将所求得的结果写入result.txt文件中。对每次实验,M[f][v]就是最终所需要求得的最大美学值,我们可以利用一

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

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

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