算法分析与设计作业--动态规划

算法分析与设计实践-作业7-动态规划投资问题 动态规划:投资问题 1.问题 设m元钱,n项投资,函数f[i][x]表示将x元投入第i项项目所产生的效益,i=1,2,…,n.问:如何分配这m元钱,使得投资的总效益最高。 2.解析 设F[k][x]表示x万元投给前k个项目的最大效益,k=1,2,…,n,x=1,2,…,m。 递推方程:F[k][x]=max{f[k][j]+F[k-1][x-j]}, 0<=j<=x , k=1,2,…... 阅读详情

自己学校的作业,删了觉得太可惜了,不如发出来

动态规划

动态规划就是一个优化版的暴力法, 优化了遍历的顺序和数量, 使得将一个问题降低到一个时间可观的复杂度以内


最长公共子序列

给定两个长度分别为 NNN 和 MMM 的字符串 AAA 和 BBB,求既是 AAA 的子序列又是 BBB 的子序列的字符串长度最长是多少, 并输出该字串。

输入格式

第一行包含两个整数 NNN 和 MMM。

第二行包含一个长度为 NNN 的字符串,表示字符串 AAA。

第三行包含一个长度为 MMM 的字符串,表示字符串 BBB。

字符串均由小写字母构成。

输出格式

第一行输出一个整数,表示最大长度。

第二行输出一个字符串,表示该字串

数据范围

1≤N,M≤10001≤N,M≤10001≤N,M≤1000

输入样例:
4 5
acbd
abedc
输出样例:
3
abd

C++代码

#include <iostream>
#include <algorithm>

using namespace std;

const int N = 1010;

int n, m;
char a[N], b[N], c[N];
int dp[N][N];

int main() {
    cin >> n >> m;                      // 读取两个序列的长度
    scanf("%s", a + 1);                 // 读取a的值
    scanf("%s", b + 1);                 // 读取b的值

    for (int i = 1; i <= n; i++) {      // dp求解
        for (int j = 1; j <= m; j++) {
            if (a[i] == b[j]) {
                dp[i][j] = max(dp[i - 1][j - 1] + 1, dp[i][j]);
            } else {
                dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);
            }
        }
    }
    cout << "最长的子序列的长度: " << dp[n][m] << endl;

    int len = 0;    // 子序列的长度
    for (int i = n, j = m; i >= 1 && j >= 1;) {
        if (a[i] == b[j]){
            c[len ++] = a[i];
            i --, j --;
        } else {
            if (dp[i - 1][j] > dp[i][j - 1])i --;
            else j --;
        }
    }
    reverse(c, c + len);
    cout << "子序列为: " << c << endl;
    return 0;
}
运行截图
image-20220518200332822

算法分析

集合表示:f[i][j]f[i][j]f[i][j] 表示 aaa 的前 iii 个字母,和 bbb 的前 jjj 个字母的最长公共子序列长度

集合划分:以 a[i],b[j]a[i],b[j]a[i],b[j] 是否包含在子序列当中为依据,因此可以分成四类:

  1. a[i]a[i]a[i] 不在,b[j]b[j]b[j] 不在

    f[i][j]=f[i−1][j−1]f[i][j] = f[i - 1][j - 1]f[i][j]=f[i−1][j−1]

  2. a[i]a[i]a[i] 在, b[j]b[j]b[j] 不在

    f[i][j]=max(f[i][j],f[i][j−1])f[i][j] = max(f[i][j],f[i][j - 1])f[i][j]=max(f[i][j],f[i][j−1])

  3. a[i]a[i]a[i] 不在, b[j]b[j]b[j] 在

    f[i][j]=max(f[i][j],f[i−1][j])f[i][j] = max(f[i][j],f[i - 1][j])f[i][j]=max(f[i][j],f[i−1][j])

  4. a[i]a[i]a[i] 在, b[j]b[j]b[j] 在

    f[i][j]=max(f[i][j],f[i][j]+1)f[i][j] = max(f[i][j],f[i][j] + 1)f[i][j]=max(f[i][j],f[i][j]+1)

复杂度分析:

aaa 串和 bbb 串均会被遍历一次, 所以时间复杂度为 O(N∗M)=O(n2)O(N*M)=O(n^{2})O(N∗M)=O(n2) , NNN 为 aaa 的长度, MMM 为 bbb 的长度


01背包

有 NNN 件物品和一个容量是 VVV 的背包。每件物品只能使用一次。

第 iii 件物品的体积是 viv_{i}vi​,价值是 wiw_{i}wi​。

求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。
输出最大价值。

输入格式

第一行两个整数,N,VN,VN,V,用空格隔开,分别表示物品数量和背包容积。

接下来有 NNN 行,每行两个整数 vi,wiv_{i},w_{i}vi​,wi​,用空格隔开,分别表示第 iii 件物品的体积和价值。

输出格式

输出一个整数,表示最大价值。

数据范围

0<N,V≤10000<N,V≤10000<N,V≤1000
0<vi,wi≤10000<v_{i},w_{i}≤10000<vi​,wi​≤1000

输入样例
4 5
1 2
2 4
3 4
4 5
输出样例:
8

C++代码

#include <iostream>
#include <algorithm>
#include <cstring>

using namespace std;

const int N = 1010;

int n, m;       // n个物品, m的容量
int w[N], v[N]; // 第i个物品的价值和体积
int dp[N][N];   // 第i个物品, 体积为j的背包能装的最大的价值

int main() {
    cin >> n >> m;
    for (int i = 1; i <= n; i++) scanf("%d%d", &v[i], &w[i]);

    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= m; j++) {
            dp[i][j] = dp[i - 1][j];    // 不装
            if (j - v[i] >= 0)
                dp[i][j] = max(dp[i][j], dp[i - 1][j - v[i]] + w[i]);
        }
    }
    cout << dp[n][m] << endl;
    return 0;
}
运行截图
image-20220518201722876

算法分析

状态 f[i][j]f[i][j]f[i][j] 定义:前 iii 个物品,背包容量 jjj 下的最优解(最大价值):

两个大状态:

  1. 不将此物品放入背包中

    此时,当前的价值和上一个物品的价值一样

    f[i][j]=f[i−1][j]f[i][j] = f[i - 1][j]f[i][j]=f[i−1][j]

  2. 将此背包放入背包中

    1. 可以将此物品放入背包中

      当前的价值等于 i - 1个物品的 j - v[i] 的价值加上当前的价值

      f[i][j]=f[i−1][j−v[i]]+w[i]f[i][j] = f[i - 1][j - v[i]] + w[i]f[i][j]=f[i−1][j−v[i]]+w[i]

    2. 不可以将此物品放入背包中

      直接跳过这个情况即可

复杂度分析

所有的背包容量和物品都要遍历一次, 所以时间复杂度为O(N∗V)=O(n2)O(N*V)=O(n^{2})O(N∗V)=O(n2), NNN为物品的个数, VVV为背包的容量


体积优化(滚动数组)

#include <iostream>
#include <algorithm>
#include <cstring>

using namespace std;

const int N = 1010;

int n, m;       // n个物品, m的容量
int w[N], v[N]; // 第i个物品的价值和体积
int dp[N];   // 第i个物品, 体积为j的背包能装的最大的价值

int main() {
    cin >> n >> m;
    for (int i = 1; i <= n; i++) scanf("%d%d", &v[i], &w[i]);

    for (int i = 1; i <= n; i++) {
        for (int j = m; j >= v[i]; j--) {
            if (j - v[i] >= 0)
                dp[j] = max(dp[j], dp[j - v[i]] + w[i]);
        }
    }
    cout << dp[m] << endl;
    return 0;
}

优化思路:

可以看到:第 iii 个物品的所有的状态只依赖于第 i−1i - 1i−1 个物品的状态, 不依赖于再之前的状态,所以可以将那些状态抛弃

此时, 由于将状态方程dp由二维转换成一维的了, 所以也要对代码进行等价转换.

复杂度分析

空间复杂度由 O(N∗V)=O(n2)O(N * V)=O(n^{2})O(N∗V)=O(n2) 优化成了 O(V)=O(n)O(V) = O(n)O(V)=O(n)

可以看到优化前后的算法的时间复杂度和空间复杂度的变化还是很明显的:

  1. 二维版

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zsMOU4dK-1655861947924)(C:\Users\ghost\AppData\Roaming\Typora\typora-user-images\image-20220518203829043.png)]

  1. 优化版

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kSfYbdSy-1655861947924)(C:\Users\ghost\AppData\Roaming\Typora\typora-user-images\image-20220518203838682.png)]


额外补充

背包问题状态问题的总结

体积最多是 j

全部初始化成 000 , 算的时候, 要保证体积 v >= 0

体积恰好是 j

初始状态 f(0) = 0, 其余的全部初始化为正无穷, 同时保证体积 v >= 0

体积至少是j

初始状态 f(0) = 0, 其余的全部初始化为正无穷

算法分析与设计实践-作业8-动态规划之矩阵链乘法 动态规划:矩阵链乘法 1.问题 设A1,A2,… ,An为n个矩阵的序列,其中Ai为Pi-1*Pi阶矩阵,这个矩阵链 的输入用向量P=<P0,P1,… ,Pn>给出。 给定向量P,确定一种乘法次序,使得基本运算的总次数达到最小。 2.解析 对于矩阵链乘法问题,我们将所有对于1≤i≤j≤n确定A i A i+1 …A j 的最小代价括号方案作为子问题。令m[i,j]表示计算矩阵A i,... 阅读详情

相关推荐

算法设计与分析的经典题目

这是算法设计与分析的经典例题,各种类型,什么递归啦等等,大家可以看看,很好很强大

算法设计与分析--求解最大连续子序列和问题(分治法、蛮力法、动态规划法)

利用分治法、蛮力法、动态规划法求解最大连续子序列和问题

2301_79391144的博客 1万+

经典的算法设计与分析

算法设计与分析, 一些比较常用的算法分析。

算法设计与分析实验---动态规划

要知道0.7可用的病人,就要找浓度比0.7小的0.6可用的病人...即找到最后一种浓度0.4能用的病人只能为1后,在向上找0.8...等所能用的病人数。其中d[i][j]表示把第i到j堆合并成一堆的最小代价,sum*[i->j]表示第i到第j堆的石子数量之和。医院里有一种药剂,其可以稀释成不同的浓度供病人使用,并且对于已知浓度的该药剂,使用时。时,有两种操作,要么删除一个串的字符,要么添加一个串的字符,都记为一次操作,堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分。

YY不吃烤鸭的博客 3446

算法设计与分析的经典问题

算法设计经典问题集 【题目1】N皇后问题(八皇后问题的扩展) 【题目2】排球队员站位问题 【题目3】把自然数N分解为若干个自然数之和 【题目4】把自然数N分解为若干个自然数之积 【题目5】马的遍历问题 【题目6】加法分式分解 【题目7】地图着色问题 【题目8】在n*n的正方形中放置长为2,宽为1的长条块 【题目9】找迷宫的最短路径。(广度优先搜索算法) 【题目10】火车调度问题 【题目11】农夫过河 【题目12】七段数码管问题。 【题目13】把1-8这8个数放入下图8个格中,要求相邻的格(横,竖,对角线)上填的数不连续 【题目14】在4×4的棋盘上放置8个棋,要求每一行,每一列上只能放置2个 【题目15】迷宫问题.求迷宫的路径.(深度优先搜索法) 【题目16】一笔画问题 【题目17】城市遍历问题 【题目18】棋子移动问题 【题目19】求集合元素问题(1,2x+1,3X+1类)

吐血总结《Mysql从入门到入魔》,图文并茂

文章目录1. 查询1.1 查询多列1.2 检索唯一值1.3 限制输出1.4 注释2. ORDER BY 排序2.1 单列排序3.2 多列排序3.3 指定排序方向4. WHERE 过滤数据4.1 WHERE 子句操作符4.2 范围值检查4.3 空值检查5. 高级数据过滤5.1 WHERE 组合过滤5.2 IN 操作符5.3 NOT 操作符6. 通配符过滤6.1 % 通配符6.2 _ 通配符7. 创建计算字段7.1 计算字段7.2 拼接字段7.3 执行算数计算8. 函数8.1 常用文本处理函数8.2 日期和时间

向日葵的专属太阳 3万+

算法设计方法4:动态规划经典例题总结

前言:各大公司关于动态规划的笔试题太多了,必须得掌握。上篇文章提过,使用动态规划的五大步骤: 1. 判题题意是否为找出一个问题的最优解 2. 将原问题分解为子问题 3. 从下往上分析问题 ,找出这些问题之间的关联(状态转移方程),如何从一个或多个已知状态求出另一个未知状态的值。(递推型) 4. 讨论底层的边界问题,确定一些初始状态(边界状态)的值,并用数组存储初始子问题的解 5. 解决问题(通...

何哥的博客 5015

金蝶EAS uploadlogo漏洞实战:如何快速检测你的系统是否受影响

本文详细解析了金蝶EAS uploadlogo任意文件上传漏洞的检测与防护方法,帮助企业安全团队快速识别系统风险。通过资产发现、漏洞验证和应急响应方案,有效防范财务数据泄露和系统入侵风险,提升企业整体安全防护能力。

weixin_29322553的博客 388

算法设计课程练习-动态规划

动态规划汇总

weixin_51368761的博客 319

【科研绘图】【数据拟合曲线】:附Origin详细画图流程

拟合曲线图

weixin_50236590的博客 4万+

国产谷歌地球,地形分析秒杀同款地图软件

咱们做地质、林业、水文、水利、电力、GIS、地图、水保、环境的,需要经常用到各种数据,比如影像、地形、矢量、模型等,但目前80%的规划大数据展示都离不开ArcGIS,令人头大的是很多朋友连ArcGIS软件安装起来都费劲。。。 那不会ArcGIS又装不了Google Earth怎么开展工作? 今天推荐大家一款国产免费专业地图浏览下载测量分析神器—图新地球 图新地球,国产三维gis软件。可以查看高清卫星影像地形以及其他很多常用电子地图,对地图需求的掌握远胜过Google Maps,而且上手比国外软件要简单

GISWorld3D的博客 3686

[算法]动态规划以及常见例题

之前买的假书害人捏......不过有个问题没说错,动态规划和递归很相似,但是动态规划利用分治法一个子任务的结果将储存避免对于同一个子任务的重复计算但其实根据某本书的写法,就是给递归套了一层存储的壳子......个人感觉这个做法不是很地道,递归可以理解为从上而下进行的,从大任务开始,然后等待着小任务的的返回结果确认大任务的值.而动态规划可以理解为自下而上进行的,先去计算小任务,再去计算大任务的结果关于转移方程:怎么从小任务里面推出大任务的方式。

weixin_62697030的博客 1484

数字太大放不下,高精度来补,如何放下超大数字,以及进制转换,高精度真的超好玩。 洛谷1009,1015

想必大家都遇到过数字大小超过int类型范围的情况,是不是碰到int放不下的数字自然就会想到,long int,long long int,甚至unsigned long long int呢。但是有一些出题者就很可恶,偏要出一些连unsigned long long int也放不下的算法题,应对这些问题时,我们是否有相应的应对方法呢?答案是:当然有,高精度就是一种应对这种问题时很好的解决办法。相信你在看完这篇文章后能对高精度有着更深更好的理解。我会循序渐进的来讲,这样大家也更容易听懂。

2303_79329831的博客 1230

算法分析与设计作业7:动态规划——投资问题

1.问题 设m元钱,n项投资,函数fi(x)表示将x元投入第i个项目所产生的效益(i=0,1,2,3……n)。 问:如何分配这m元钱,使得投资总效益最高? 2.解析 将这个问题分割开看,将一部分资金x元分割给第k个项目,那么剩下k-1个项目分得资金m-x元,零gk(x)表示将资金x分给前k个项目的最大利润,则求max(fk(x)+gk-1(m-x)) 当k=1时: g1(x)= f1(x),即找到...

吴小用的博客 1575

SAP-ABAP:SAP客户端管理核心事务码SCC4深度解析

SAP客户端管理核心事务码SCC4深度解析

baidu_35680696的博客 1569

【RT-DETR涨点改进】独家Conv改进篇 | 来自TIP 2024顶刊| 引入 DEConv细节增强卷积模块, 能够恢复更多细节信息,提升小目标检测精度、含多种不同模型改进点

本文提出了一种细节增强卷积(DEConv)模块,通过融合多种差异卷积(CDC、ADC、HDC、VDC)来增强图像特征表示能力,特别在边缘和纹理细节提取方面表现突出。该模块采用重参数化技术,在不增加计算成本的情况下,将先验信息融入常规卷积层,显著提升了RT-DETR模型在模糊或遮挡场景下的目标检测精度。实验验证了DEConv在多种骨干网络(ResNet18/50、HGNet等)中的有效性,为实时目标检测系统提供了轻量高效的改进方案。

Ai缝合怪、助力小伙伴高效发论文 452

算法分析与设计作业存档2 动态规划

背包问题: def bag(v,w,b): n = len(v) value = [] for i in range(n + 1): # 建立价值表 value.append([0] * (b + 1)) for j in range(1, b + 1): # 计算只有一种物品时的价值表 value[1][j] = (j // w[0]) * v[0] for i in range(2, n + 1): # 计算有多种物品时的

m0_53830726的博客 131

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain&#39;s apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath(&#39;DeepLearnToolbox&#39;));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand(&#39;state&#39;,0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W&#39;); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand(&#39;state&#39;,0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = &#39;sigm&#39;;%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, &#39;Too big error&#39;);```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand(&#39;state&#39;,0)sae = saesetup([784 100]);sae.ae{1}.activation_function = &#39;sigm&#39;;sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)&#39;)% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;;nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, &#39;Too big error&#39;);```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x&#39;,28,28,60000))/255;test_x = double(reshape(test_x&#39;,28,28,10000))/255;train_y = double(train_y&#39;);test_y = double(test_y&#39;);%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you&#39;ll get around 1.2% errorrand(&#39;state&#39;,0)cnn.layers = { struct(&#39;type&#39;, &#39;i&#39;) %input layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 6, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %sub sampling layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 12, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, &#39;Too big error&#39;);```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, &#39;Too big error&#39;);%% ex2 neural net with L2 weight decayrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex3 neural net with dropoutrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex4 neural net with sigmoid activation functionrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex5 plotting functionalityrand(&#39;state&#39;,0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = &#39;softmax&#39;; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand(&#39;state&#39;,0)nn = nnsetup([784 20 10]); nn.output = &#39;softmax&#39;; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

算法分析与设计 第四次理论作业

TOC]

没事发发博客 627

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

算法分析与设计实践(作业七):投资问题 [动态规划]

问题 设 m 万元钱,n 项投资,函数 表示将 x 万元投入第 i 项项目所产生的效益,i=1,2,…,n.问:如何分配这 m 元钱,使得投资的总效益最高? 假设分配给第 i 个项目的钱数是 xi,问题述为: 解析 设 表示 x 万元投给前 k 个项目的最大效益,k=1,2,…,n,x=1,2,…,m 说明:第 k 步,前后共分配 x 万元,分配给第 k 个项目为;x-xk万元,分配给前 k-1 个项目 分析 设计 源码 <未完待续> ...

Hayleyzhou的博客 481

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

算法分析与设计实践(作业八):矩阵链乘法 [动态规划]

矩阵乘法次数的计算: 以两个矩阵相乘为例,A1A2,A1和A2为两个矩阵,假设A1的行列数是pi-1pi,A2的行列数是pipj。那么对于A1A2而言,我们需要分别执行pi-1pj次对应A1的行元素乘以A2的列元素,根据线性代数知识,可以得到一共需要执行pi-1pi*pj次乘法。 <未完待续> ...

Hayleyzhou的博客 317

算法分析与设计作业8:动态规划——矩阵链乘法

1.问题 给定一定个矩阵序列,求出该矩阵序列的乘积所需计算的最少乘法次数。 2.解析 运用动态规划的思想,将矩阵依次分割并记录所需乘法次数,找出其中最小的被下一级使用。 例: 矩阵序列:A1: 30 * 35 A2: 35 * 15 A3: 15 * 5 A4: 5 * 10 A5: 10 * 20 A6: 20 * 25 步骤:r=1(r表示一次计算r个矩阵) (由于矩阵自身做不了乘法,所...

吴小用的博客 428

算法分析与设计 第十次理论作业

TOC]

没事发发博客 753

算法分析与设计实践-作业9-动态规划之最长公共子序列问题

动态规划之最长公共子序列问题(LCS) 1.问题 给定序列X=<x1, x2,…, xm>,Y=< y1, y2,…, yn>,求X和Y的最长公共子序列。 2.解析 设X=<x1,x2,…,xm>,Y=<y1,y2…,yn>为两个序列,Z=<z1,z2,…,zk>是他们的任意公共子序列。 经过分析可得: 1、xi = yj,那么zk = ...

qq_43633353的博客 608

《算法分析与设计》作业8----矩阵链乘法(动态规划)

目录 1.问题 2.解析 3.设计 4.分析 5.源码 1.问题 给定向量 P,确定一种乘法次序,使得基本运算的总次数达到最小。 例如,P=<10,20,30,40>,则A1:10×20,A2:20×30,A3:30×40,有两种结合次序 1)(A1A2)A3:10×20×30+10×30×40=18000 2)A1(A2A3):10×20...

susu的博客 918

算法分析与设计课后作业——C语言实现动态规划背包问题

有n个底面为长方形的货柜需要租用库房存放,且每个货柜必须放地面上,所有货柜底面宽度都等于库房宽度,则第 i 个货柜占用库房面积大小只需用底面长度L{ i }表示,i=0,1,...,n。设库房总长度为D,第i号货柜存储收益V{ i }。则怎样选择放入的货柜,使库房出租收益最大?

m0_73837384的博客 445
上一篇: BFS求n-皇后问题
下一篇: 算法分析与设计大作业--解数独
ghost_him
博客等级 码龄6年 598粉丝 90原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值