- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
算法设计与理论
大 作 业
班级: 三班
学号: 104972071127
姓名: 闫春香
第一题:
令则,则
代入g(n)=O(1)和f(n)=O(n):
代入g(n)=O(1)和f(n)=O(1):
第二题:
(1)该题的算法用的是多段图的向后处理算法,存储方式是用二维数组,a个资源投资n个项目,动态规划方程描绘如下:
在时:;
当时
,其中;
当时
为j个资源分配i-1个项目时所产生的最大效益,它表示的是一种状态;为项目i投资资源j时所产生的效益。
(2)算法设计思想如下:
首先画出多段图,用n+1段图来表示,每一段有a+1个节点,表示把j个资源分配1,2,…i-1个项目,边具有的形式,。
算法详细描述:
Procedure BGraph( int resource, int projectNum, int *g[])
//以下数组可以动态申请;projectNum+1 ×resource+1
int v[i][j];//v存放前 i-1个项目投资了j个资源时所产生的效益;
int p[i][j];//p存放结果,初始为0,如果g[i][j]选定则p[i][j]为1;同时表示第i个项目//应投资j个资源;
int d[i][j];//是存放路径;i表示第i+1段,j是第i+1段的某个节点,s=d[i][j]是i段的某个节点,该节点能使(i+1,j)产生最大值;
for i=2 to projectNum do
for j=0 to resource do
if i=2 do //要为第二段单独赋值
v[i][j]=g[i-1][j];
if(resource == 1)//资源共一个时单独处理
cost=max{v[i][j]}//cost 保存最大值;
p[1][j]=1;//此时的投资决策也确定
endif
endif
else
for k=0 to j do//这步确定到达(i,j)使v[i][j]产生最大值的节点
cost=max{v[i-1][k] + g[i-1][j-k]}
t=k;//t 用来记录前一个节点
repeat//for k
d[i-1][j] = t;//记录节点,到第i,j节点的最大值是i-1,t;
v[i][j] = cost;//保存了当前状态的最大值
repeat//for j
repeat//for i
//下面单独处理最后一段
for i=0 to projectNum do
for j=0 to resource-i do
sum=max{v[projectNum][u] + g[projectNum][w] }
p[i][j]=1//在最后一段可以确定
repeat//for j
repeat// for i
//回溯寻找路径!
for i=projectNum-1 to i=2 by -1 do
s = d[i][a];//a是第n段所选的节点,据此能找到前面的;
p[i][a-s] = 1;//确定结果
a = s;
repeat//
//打印输出
end BGRAPH
(3)在c语言下实现,代码如下:
// ResourcePlanning.cpp : 定义控制台应用程序的入口点。
//
#include stdafx.h
#include stdio.h
void BGraph(int resource, int projectNum, int *g[])
{
int **v, **p, **d;
int s = 0,t = 0;//保存记录
int cost = 0; // 记录节点状态效益值
/////////////////////////////////////////////////////////////////////
v = new int *[projectNum+1];//保存每段的状态
p = new int *[projectNum+1];//记录gnet效益值分配
d = new int *[projectNum+1];//记录路径;
for(int i = 0; i = projectNum; i++)//动态申请!
{
v[i] = new int[resource + 1]; //资
您可能关注的文档
- 工程机械装配流水线.ppt
- 工程概况样本含各专业.doc
- 工程比价招标管理制度完整版完整版完整版.doc
- 工程流体力学习题解析石油工业出版社杨树人.doc
- 工程流体力学习题解析石油工业出版社杨树人副本.doc
- 工程流体力学教学课件作者闻建龙工程流体力学习题+答案部分.doc
- 工程测量专业培养.doc
- 工程测量学复习资料完整版.doc
- 工程热力学教案.doc
- 工程热力学第四版课后思考.doc
- 四川省德阳市罗江中学2025届高三考前热身化学试卷含解析.doc
- 山东省枣庄现代实验学校2025届高三下学期第五次调研考试化学试题含解析.doc
- 吉林省长春市十一高中等九校教育联盟2025届高三一诊考试生物试卷含解析.doc
- 2025届江苏省盐城市伍佑中学高考仿真模拟化学试卷含解析.doc
- 2025届广西贺州中学高考冲刺押题(最后一卷)生物试卷含解析.doc
- 安徽省池州市贵池区2025届高三第一次模拟考试生物试卷含解析.doc
- 宁夏银川一中2025届高三(最后冲刺)化学试卷含解析.doc
- 广东省广州市增城区四校联考2025届高考压轴卷化学试卷含解析.doc
- 2025届邯郸市第一中学高考生物必刷试卷含解析.doc
- 2025届安徽省安庆市石化第一中学高考仿真卷化学试卷含解析.doc
文档评论(0)