Python 算法设计与分析 投资问题
Python 算法设计与分析 投资问题
投资问题
题目:设有m元钱,n项投资,函数fi(x)表示将x元投入第i项项目所产生的效益,i=1,2,3,…,n。问:如何分配这m元钱,使得投资的总效益最高?
实例:5万元钱,4个项目
x | f1(X) | f2(X) | f3(X) | f4(X) |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
1 | 11 | 0 | 2 | 20 |
2 | 12 | 5 | 10 | 21 |
3 | 13 | 10 | 30 | 22 |
4 | 14 | 15 | 32 | 23 |
5 | 15 | 20 | 40 | 24 |
需要生成一个二维数组F,F[i] [j]表示前i个项目投资j元钱的最大效益,使用动态规划,要将此问题划分为子问题,从一个项目,第二个项目,…,直到第u个项目时,为u分配x元钱,n-x元钱的最大效益为F[]
子问题界定:由参数k和x界定
K:考虑对项目1,2,…,k的投资 x: 投资总钱数不超过x
当K =1 时
F1(1) = 11, F1(2) = 12, F1(3) = 13 , F1(4) = 14, F1(5) = 15
当K =2 时
(0,1) (1,0) F2(1) = max {f2(1), f1(1)} = 11
(0,2) (1,1) (2,0) F2(2) = max{f2(2), F1(1)+f2(1), F1(2)} =12
(0,3) (1,2) (2,1) (3,0) F2(3) = max{f2(3),F1(1)+f2(2), F1(2)+f2(1), F1(3)} = 16
类似的 F2(4) = 21
F2(5) = 26
代码实现
import numpy as npm = 5 # 投资总额
n = 6
k = 4 # 项目数
# m元钱,n项投资 k个项目
dp = np.zeros((m, n)) # dp[i][j] 从1-i号项目中选择,投资j万元,所取得的最大收益
mark = np.zeros((m, n)) # 从1-i号项目中选择,投资j万元,获得最大收益时,在第i号项目中投资了多少钱
f = np.array([[0, 0, 0, 0, 0, 0],[0, 11, 12, 13, 14, 15],[0, 0, 5, 10, 15, 20],[0, 2, 10, 30, 32, 40],[0, 20, 21, 22, 23, 24]])# 初始化第一行
for j in range(m + 1):dp[1][j] = f[1][j]mark[1][j] = j
for i in range(1, k + 1):for j in range(1, m + 1):for k in range(j):if dp[i][j] < f[i][k] + dp[i - 1][j - k]:dp[i][j] = f[i][k] + dp[i - 1][j - k] # 更新当前最优解mark[i][j] = k # 更新标记函数print("最大收益", dp[4][5])for i in range(1, k + 1):for j in range(m + 1):print("(%d, %d)" % (dp[i][j], mark[i][j]), end="\t")print("\n")for i in range(k, 0, -1):print(f"第{i}个项目投资{mark[i][m]}元")m = m - int(mark[i][m])
运行结果:
算法复杂度
Python 算法设计与分析 投资问题相关推荐
- python 算法设计与分析_算法设计与分析(黄建军)
spContent=本课基于主讲教师在北京大学讲授数据结构与算法课(Python版)的多年教学实践经验,面向具有Python语言程序设计基础的大学生和社会公众,介绍常见的基本数据结构以及相关经典算法, ...
- 算法设计与分析(python版)-作业一
参考教材:算法设计与分析(Python版) 作者:王秋芬 1 . 容易 (4分)2 n=O(100n ^2) 错误 2 . 容易 (3分)10=θ(log10) 正确 3 . 容易 ( ...
- 算法设计与分析(python版)-作业三
参考教材:算法设计与分析(Python版) 作者:王秋芬 1 . 普通 (5分)以下问题中,哪些问题的分治算法消耗的时间与输入序列无关.() A. 二分查找 B. 合并排序 C. 快速 ...
- 太原理工大学linux与python编程r实验报告_太原理工大学算法设计与分析实验报告...
<太原理工大学算法设计与分析实验报告>由会员分享,可在线阅读,更多相关<太原理工大学算法设计与分析实验报告(12页珍藏版)>请在人人文库网上搜索. 1.本科实验报告课程名称: ...
- 线性时间选择 python实现 计算机算法设计与分析
最近算法老师布置了很多作业啊,其中一项就是要求实现书上<计算机算法设计与分析>28页的算法,实现过程如下:
- 哈工大威海算法设计与分析_计算机算法设计与分析第一章 算法概述
晓强Deep Learning的读书分享会,先从这里开始,从大学开始.大家好,我是晓强,计算机科学与技术专业研究生在读.我会不定时的更新我的文章,内容可能包括深度学习入门知识,具体包括CV,NLP方向 ...
- 【算法设计与分析】06 几类重要的函数
本篇文章中会用到上一篇文章的定理:[算法设计与分析]05 有关函数的渐进的界的定理 主要学习常见的一些函数的阶 1. 基本函数类 以下按阶的高低排序: 至少指数级: 2n, 3n, n!, - 多项式 ...
- 程振波 算法设计与分析_算法设计与分析
本书按照教育部*制定的计算机科学与技术专业规范的教学大纲编写,努力与国际计算机学科的教学要求接轨.强调 算法 与 数据结构 之间密不可分的联系,因而强调融数据类型与定义在该类型上的运算于一体的抽象数据 ...
- 算法设计与分析复习笔记(上)
简介:本文是博主在复习算法设计与分析的笔记,参考了北大算法设计与分析以及王晓东编著的<计算机算法设计与分析>第四版相关内容,如有错误,欢迎指正. 文章目录 设计技术 分治 动态规划 设计技 ...
最新文章
- Retrofit的动态代理
- 长春成人计算机学校有哪些专业学校,长春成人高考学校有哪些
- JVM 调优系列之监控工具
- python以垂直方式输出hello world_python3提问:垂直输出Hello World,全部代码不超过2行....
- web前端 到底怎么学?掌握什么可以拿到高薪?
- vue的实例属性$options
- 生成一定数量的不重复随机数
- PyTorch学习—2.张量的创建与张量的操作
- 移动光猫固件备份、刷机、改sn和mac等
- 如何写工作说明书(sow)
- 产品经理的职业规划及绩效评估
- wait和notify,sleep
- 和刘备相关的人(九 )
- forEach,$.each()以及$().each()的比较
- 如何根据文献末尾的参考文献找到被引用的文献
- char *str1 和 char str2[]的详解
- 华为 1+X《网络系统建设与运维(中级)》认 证实验模拟上机试题
- 编程练习 P124 6.2 java国际标准书号ISBN是由13位数字组成,分为5段,如978-7-111-50690-4是一个合法的书号。编写程序,用户输入一个字符串书号,检查该书号是否合法。
- Android开发黑白灰模式和夜间模式设置
- 盘点一个批量提取pdf文件目标信息的实用案例
热门文章
- 奢侈品典当价格以及流程又是如何的?现今哪些品牌的奢侈品押呗可以典当!
- google v8 实战 -- 构建v8
- 随笔记录——numpy4(伪随机数生成)
- 计算机专业试讲10分钟教案,10分钟试讲教案模板.doc
- sendgrid html text,当我保存时,SendGrid通过更改我的html模板“帮助”我?
- Mysql进阶优化篇02——索引失效的10种情况及原理
- 移动端VIN码识别应用范围
- 红米4android版本怎么升级,红米4MIUI稳定版安卓9.0刷机包(完整固件升级包MIUI11 稳定版)...
- 蓝牙BQB认证RF射频测试
- 堪称神器的Chrome插件