- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(花束摆放实验报告
算法设计与分析实验报告 动态规划之花束摆放问题问题描述现有f束不同品种的花束(每束花用1~f的整数唯一标识)和至少为同样数量的花瓶按顺序摆成一行,其位置固定于架子上并按从1到v从左到右依次摆放。其中v为花瓶的数量,则有f=v。标识花束的整数决定了花束在花瓶中的顺序。例如有花束i和花束j(ij)则花束j不能放在花束i的前面。每个花瓶只能放一种花束,若花瓶的个数多于花束的数量,则多出来的花瓶空置。假设每个花瓶都具有各自的特点,那么当不同的花束放入不同的花瓶的时候便会产生不同的美学效果,并用一个美学值来(整数)表示。约定空置的花瓶的美学值为0。为取得最大的美学效果,必须在保持花束的顺序的前提下,使花束的摆放取得最大的美学值。现需给出一种取得最大美学值的摆放方式。求解思路设B【i】【j】表示第i朵花放在第j个瓶子里产生的美学值,设M【i】【j】表示总共i朵花放入j个瓶子中产生的最大美学值(其中i=j)思路一:采用分治法的思想,当花束数量等于花瓶数量,即f=v时,问题只有一种解决方案。那么,当fv时,求解f朵花放入v个瓶子的最大美学值可以转化为求解f-1朵花放入k(f-2kj)个瓶子的最大美学值加上第f朵花放在第v个瓶子所产生的美学值。即:M[i][j] = max{M[f-1][k](f-2kj)}+B[i][j]; 但上述思路是有缺陷的,因为以上思路是假设第f朵花放在了第v个瓶子中,而实际情况下,求解f朵花束放入v个瓶子中的最大美学值时第i朵花束并不一定放在第v个瓶子中(当vf时,根据鸽舍原理,一定有一朵花有至少两种选择放入不同的花瓶中。假设这就是第f朵花,则它不一定放入第v个瓶子中)。假如第f朵花不是放在第v个瓶子中而是在选出的方案中选择一个空置的瓶子放入,则可能破坏了花束的摆放顺序,不符合题意。那么要求得f朵花放入v个花瓶中的最大美学值,就必须遍历所有花束摆放的情形,找出其最大值,也就是M[f][v]=max{M[f][f],M[f][f+1],……,M[f][v]}; 而且在每一次将问题细分的时候,需要找到前面所取得的最大美学值,这一过程实际上是有重复的。比如下面这个例子: 1 2 3 4 求2朵花放在4个瓶子里产生的最大美学1 8 3 4 9 实际上和2朵花放在3个瓶子里产生的最大2 371 2 美学值相同。若采用上述的方法,需要比较3 1 5 2 5 两次2朵花放在3个瓶子里的情况。思路二:上述方法尽管有缺陷,但我们可以基于以上思想进行改进。我们用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],不会出现重复计算。因此,计算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个瓶子上,也就是当ji或者当jv-f+1时B[i][j]=0。据此,我们给出一组3朵花放在5个瓶子里的美学值:花\瓶12341610002047030063那么根据上述的求解最优子结构的动态规划算法,可以得到下面这个二维数组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]由随机数给出(当ji或jv-f+1时,B[i][j]=0),其中10组数据1=f=v=10,另外10组数组1=f=v=100. 也可以自己手动输入花束数量f和花瓶数量v来查看实验结果。 实验测试:本实验通过data.txt文件读入20组数据,分别对其求解,并将所求得的结果写入result.txt
您可能关注的文档
- (常识超级题库及答11.doc
- (艺术单选.doc
- (资源与运营管理模拟试卷.doc
- (艺术发展与社会联系.doc
- (资源与运营管理模拟题.doc
- (艺术在社会发展中的作用.doc
- (资源与运营管理考试参考答案.doc
- (艺术培训学校推广.doc
- (资源与运营管理考试试题.doc
- (艺术学概作业3.doc
- (赤峰市高三统一考试语文试题.doc
- (花样年华茶餐厅创业计划书.doc
- (花瓣飘香资料.doc
- (广东省湛江市普通高中2011届高三教学质量检测一语文.doc
- (走向高考2014届高三数学二轮专题复习:专题综合检测一Word有详解答案.doc
- (走向高考2016届高三物理人教版一轮复习习题第4章第1讲曲线运动运动的合成与分解.doc
- (广东省肇庆市2015届高中毕业班第二次模拟检测政治试题.doc
- (走向高考2016届高三物理人教版一轮复习习题综合测试题5.doc
- (广东省金山中学等三校2011届高三3月联考语文试题.doc
- (走向高考2016届高三物理人教版一轮复习习题选修3-5综合测试题.doc
文档评论(0)