背包问题和棋盘覆盖课程设计报告 - 范文中心

背包问题和棋盘覆盖课程设计报告

11/21

课 程 设 计 报 告

课程设计名称: 算法设计与分析

系 别: 三 系

学生姓名: 孙 磊

班 级: 09软件(1)班

学 号: [1**********]

成 绩:

指导教师: 秦 川

开课时间: 2011-2012 学年 第一学期

目 录

一、问题描述„„„„„„„„„„„„„„„„„„„„„„„3

1.普通背包问题„„„„„„„„„„„„„„„„„„„„„„3

2.棋盘覆盖问题„„„„„„„„„„„„„„„„„„„„„„3

二、问题分析„„„„„„„„„„„„„„„„„„„„„„„3

1.普通背包„„„„„„„„„„„„„„„„„„„„„„„„3

2.棋盘覆盖„„„„„„„„„„„„„„„„„„„„„„„„4

三、建立数学模型„„„„„„„„„„„„„„„„„„„„„4

1.普通背包„„„„„„„„„„„„„„„„„„„„„„„„4

2.棋盘覆盖„„„„„„„„„„„„„„„„„„„„„„„„5

四、算法设计„„„„„„„„„„„„„„„„„„„„„„„5

1.普通背包„„„„„„„„„„„„„„„„„„„„„„„„5

2.棋盘覆盖„„„„„„„„„„„„„„„„„„„„„„„„6

五、算法实现(源程序)„„„„„„„„„„„„„„„„„„7

1.普通背包„„„„„„„„„„„„„„„„„„„„„„„„7

2.棋盘覆盖„„„„„„„„„„„„„„„„„„„„„„„„9

六、测试分析„„„„„„„„„„„„„„„„„„„„„„„11

1.普通背包„„„„„„„„„„„„„„„„„„„„„„„11

2.棋盘覆盖„„„„„„„„„„„„„„„„„„„„„„„14

七、结论„„„„„„„„„„„„„„„„„„„„„„„„16

八、参考文献„„„„„„„„„„„„„„„„„„„„„„„17

一、问题描述

1.普通背包问题 :

给定n种物品和一个背包。物品i的重量是wi,其价值是vi,背包的容量是C。应如何选择装入背包的物品,是得装入背包中的物品的总价值最大?在选择装入背包的物品是,对每种物品i的选择可以是物品的的一部分(即可以不是整数),而不一定要全部装入背包,1

2.棋盘覆盖问题:

在一个(2^k) × (2^k) 个 方格组成的棋盘中,恰有一个方格与其他方格不同,称该方格为特殊方格。显然,特殊方格在棋盘中出现的位置有4^k情形,因而有4^k种不同的棋盘。图a所示是k=2时16种棋盘中的一个。棋盘覆盖问题要求用图b所示的4种不同形状的L型骨牌覆盖给定棋盘上除特殊棋盘方格以外的所有方格,且任何两个L型骨牌不得重叠覆盖。

二、问题分析

1.普通背包:

贪心算法的基本思路:

从问题的某一个初始解出发逐步逼近给定的目标,每一步都作一个不可回溯的决策,尽可能地求得最好的解。当达到某算法中的某一步不需要再继续前进时,算法停止。 这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。用子问题定义状态:即f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。则其状态转移方程便是:

f[i][v]=max{f[i-1][v],f[i-1][v-c[i]]+w[i]}

“将前i件物品放入容量为v的背包中”这个子问题,若只考虑第i件物品的策略(放或不放),那么就可以转化为一个只牵扯前i-1件物品的问题。如果不放第i件物品,那么问题就转化为“前i-1件物品放入容量为v的背包中”,价值为f[i-1][v];如果放第i件物品,那么问题就转化为“前i-1件物品放入剩下的容量为v-c[i]的背包中”,此时能获得的最大价值就是f[i-1][v-c[i]]再加上通过放入第i件物品获得的价值w[i]。

2.棋盘覆盖:

分析方法:

分治的技巧在于如何划分棋盘,使划分后的子棋盘的大小相同,并且每个子棋盘均包含一个特殊方格(这句话很重要),从而将原问题分解为规模较小的棋盘覆盖问题。先把原始棋盘划分成4个相等的棋盘,由于棋盘只有一个特殊棋盘,所以这4个子棋盘中只有一个子棋盘包含该特殊棋盘,以便采用递归的方法求解,可以用1一个L型骨牌覆盖这3个较小棋盘的汇合处(要理解这句话),如图(c)所示。从而将原问题转换为4个较小规模的棋盘覆盖问题。递归使用这种划分策略,直至将棋盘分割为1*1的子棋盘。

三、建立数学模型

1.普通背包:

//=========确定背包新的剩余容量============

left=left-goods[i].w;

//=========该物品所要放的量=========

goods[i].X=left/goods[i].w;

2.棋盘覆盖:

数据结构设计:

(1)棋盘:可以一个二维数组board[size][size]表示一个棋盘,其中,size = 2^k。为了在递归处理的过程中使用同一个棋盘,将数组board设置为全局变量

(2)子棋盘:子棋盘由原始棋盘数组board的行下标tr,列下标tc表示。

(3)特殊方格:用board[dr][dc]表示特殊方格,dr和dc表示该特殊方格的在二维数组board中的下标

(4)L型骨牌:一个(2^k)*(2^k)的棋盘中有一个特殊方格,所以用到L型骨牌的个数为(4^k - 1)/3,将所有L型骨牌从1开始连续编号,同一个骨牌有3个方格组成,这3个方格用同一个编号。

四、算法设计

1.普通背包:

// 先按物品效益,重量比值做升序排列

================================

void Insertionsort(Good goods[],int n)

{

int i,j;

for(j=2;j

{

goods[0]=goods[j];

i=j-1;

while (goods[0].p>goods[i].p)

{

goods[i+1]=goods[i];

i--;

}

goods[i+1]=goods[0];

}

}

// 然后再将物品放入背包

=======================

void bag(Good goods[],float M,int n)

{ 。。。

left=M; //========背包剩余容量

{ 。。。 //========当该物品重量大与剩余容量跳出 。。。 //=========确定背包新的剩余容量 }

if(i

goods[i].X=left/goods[i].w;//=========该物品所要放的量

for(j=2;j

}

。。。

}

}

2.棋盘覆盖:

void chessBoard(int tr, int tc, int dr, int dc, int size)

{

。。。

if(dr


相关内容

  • 数据结构课程设计 马踏棋盘
    学习数据结构的最终目的是解决实际的应用问题,特别是非数值计算类型的应用问题,数据结构课程设计就是为此目的一次实际训练.要求我们在对题目进行独立分析的基础上,完成设计和开发,并最终接受严格的测试考核.以深化对数据结构课程中基本概念.理论和方法 ...
  • 河北省易县历史文化古迹调查报告
    河北省易县历史文化古迹调查报告 易县古称易州,始建于开皇十六年,历经一千多年的沿革变迁,易州大地胜迹叠出,可谓物华天宝,人杰地灵.易州因易水之"易"得名,史载商代有易氏部落在此居住,隋开皇16年(公元596年)置易县,时 ...
  • [大学计算机基础]课程实验指导书
    信息工程学院(部) <大学计算机基础>课程实验指导书 适用专业: 非计算机专业本科一年级 贵州理工学院 2015 年 2 月 前言 本课程是公共必修课程,是为非计算机专业学生开设的第一门计算机基础课程,是当代大学生的公共基础课. ...
  • 地方课程教学反思
    地方课教学反思 反思一:在备每节课之前应该想的问题是什么? 我的回答是:首先就应该想到采取什么样的授课方式才能起学生的学习兴趣.俗话说兴趣是最好的老师,只有让学生对所学内容感兴趣,才能有效提高课堂教学效果. 反思二:充分开发和利用书本以外的 ...
  • 广州大学生旅游现状看法 完稿
    广州大学生旅游现状调查研究浅析 调查小组组长:覃晓君 学号:[1**********]1 调查小组成员:刘敏莹 学号:[1**********]8 调查小组成员:洪娴 学号:[1**********]7 调查小组成员:陈柳兰 学号:[1** ...
  • 风景区规划实习报告
    风景区规划实习报告 学院:林学院 班级:2012级城市规划一本班 姓名:王舒煜 学号:120310467 指导老师:赵红霞 一.实习目的 <风景区规划>既是园林又是城规专业重要的课程之一.该课程以园林设计.景观生态学.园林史等为 ...
  • 统计学课程设计-大学生生活费调查报告
    大学生生活费调查问卷分析报告 一.问卷调查背景 大学生作为当今社会上的一个特殊的消费群体,一直受到社会的广泛关注.由于大学生年龄较轻,群体较特别,有着不同于社会其他消费群体的消费心理.行为和理念,并有着旺盛的消费需求,另一方面,大学生又尚未 ...
  • 敦煌网分享20XX年跨境出口电商卖家开店知识
    敦煌网分享2017年跨境出口电商卖家开店知识 目录 一. 跨境电商TOP卖家的产品定价策略 .......................................................................... ...
  • 六年级,提高学生作文能力方法的研究
    如何提高小学高段学生作文水平的研究已取得的研究成果 大部分的写作成功的学生都有类似的经历:读一篇好文章,他们咀嚼的好词的语录摘录下来,熟悉的圣歌.小心使用时的老师写的结果是大加赞赏,成功的让他们读,在不知不觉中积累水平的写作众所周知,读帖式 ...
  • 学院信息化建设十一五总结及十二五工作思路
    学院信息化工作 "十一五"总结和"十二五"建设思路 一."十一五"信息化建设总结 "十一五" 期间是学院信息化建设快速发展的时期.学院在厅党组正确领导.大力支持 ...