无关算法的动态规划

动态规划是一类算法,Leetcode上有39题挂上了DP的标签,还有很多也可以用DP求解;博客园有很多对动态规划的讲解,譬如五大常用算法之二:动态规划算法。不敢再写这个算法,随便写写我的2015总结。

研究生二年级,工科,做的多是数据链路层的处理,主要是信道纠错编码。刚刚连续看了两个退学的帖子,没有经历过也不好评价,但是大学四年真的能学到很多,一个词就是——心性。



这一年,我的研究生涯多是围绕项目展开的;研究生做项目,不同的人会有不同的体会吧。至于我,纠错编码这个东西,基本上所有通信系统都有涉及,接触过的项目很多,当然我做的不多。
    这些不同的项目,无外乎是MATLAB仿真,写报告,写FPGA实现;略有差异但本质没有什么不同。开始的时候,我的MATLAB代码写得很乱,后来慢慢的整理了一些,再后来尝试用了GitHub(GitHub: Windows 下的简单使用),下定决心将代码理顺,再之后做类似的仿真就容易多了。报告也是如此,但我还没有一份写得特别好的报告;至于FPGA,往往是一个时钟沿一个时钟沿的对齐考虑,算是怎么也理不顺了。

这一年,有一个给过我帮助的老师也问过我发表论文的事情,觉得我应该在学术上有所成果。可发论文这件事情还是没有做到了。记得当时,她和我说要广泛的阅读这一领域的论文,在这个基础上才能够找到突破点,然后深入下去研究。我想这是一种自顶向下的方法,但我在那之前不是这样做的,在那之后项目就慢慢忙不过来了。我更喜欢自底向上的求解问题,看得东西很多,独立的、基础的,然后在这个基础上去解决问题。这一点也反映在我的博客上,基础。写Leetcode上的DP算法时,我也多是自底向上的写。单纯的考虑这两种方法或许无法判断优劣,但发表论文,我还是决定听从那位老师的观点,但这都是之后的事了。

----

这一年,我正式记录了24篇,约200页各类学习笔记,部分放在另一个博客上,后来内容设计到项目的东西越来越多,那个博客就没有更新了;我的博客内容增加了20余篇,近几个月写得少了;有道云笔记上的内容增加了很多,但现在看不到有多少篇了。

我想让这些,成为我求解过的子问题,当我需要的时候,可以用来解决一个复杂的问题。

----

2015混得不好,无论是项目、学习还是其他。我想那些准备上研的同学,可以多想想

  • 你所选择的方向是否是你所感兴趣的
  • 你所选择的导师性情是否与你相符
  • 你将要做的东西是否是实验室的主流
  • 如果不喜欢你的方向,导师是否会让你在选择一次
  • 你是否有实习的打算,以及导师是否让你实习
  • 实验室的主要毕业去向是否和你的志向相符

愿你们,看远一些,规划得好一些。

----

一个研究性质的项目快结了,明年我想具体做点看得到的东西。对,今年没有转博,明年夏天要陆续开始找工作了。愿安好

动态规划是一类算法,求解的是问题的最优解。难得最优,只愿无悔。

时间: 2024-10-12 16:28:52

无关算法的动态规划的相关文章

算法导论--动态规划(装配线调度)

装配线问题: 某个工厂生产一种产品,有两种装配线选择,每条装配线都有n个装配站.可以单独用,装配线1或2加工生产,也可以使用装配线i的第j个装配站后,进入另一个装配线的第j+1个装配站继续生产.现想找出通过工厂装配线的最快方法. 装配线i的第j个装配站表示为Si,j,在该站的装配时间是ai,j 如果从 Si,j装配站生产后,转移到另一个生产线继续生产所耗费的时间为ti,j 进入装配线花费时间ei,完成生产后离开装配线所耗费时间为xi 令f*表示通过生产所有路线中的最快的时间 令fi[j]表示从入

算法导论--动态规划(钢条切割)

钢条切割问题 现有一段长度为n英寸的钢条和一个价格表pi,求切割方案使销售利益最大rn最大 长度为n英寸的钢条共有2n?1种不同的切割方案,因为可以每个整英寸的位置都可以决定切割或者不切割. 为了得到rn最大,可以把这个问题分成子问题求解,先切一刀,再考虑余下的部分的最大收益即求 rn=max{pk+rn?k}(k=1,2,3-n-1), pk部分不进行继续切割,直接作为一个整体售出 ; rn?k部分继续切割,考虑所有的情况,分成子问题. 求出所有k值对应的收益最大者作为rn 也有可能不进行任何

经典算法宝典——动态规划思想(六)(2)

1.01背包问题 有N件物品和一个容量为V的背包,第i件物品的体积是c[i],价值是w[i].求解将哪些物品装入背包可使价值总和最大. 解析: 这是最基础的背包问题,特点是每种物品仅有一件,可以选择放或不放.用子问题定义状态,即f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值.其状态转移方程便是f[i][v] = max{f[i-1][v], f[i-1][v-c[i]]+w[i]},这个方程非常重要,基本上所有跟背包相关的问题的方程都是由它衍生出来的,所以有必要将它详细解

贪心算法和动态规划算法

动态规划和贪心算法都是一种递推算法 即均由局部最优解来推导全局最优解 (不从整体最优解出发来考虑,总是做出在当前看来最好的选择.) 不同点: 贪心算法 与动态规划的区别:贪心算法中,作出的每步贪心决策都无法改变,由上一步的最优解推导下一步的最优解,所以上一部之前的最优解则不作保留. 能使用贪心法求解的条件:是否能找出一个贪心标准.我们看一个找币的例子,如果一个货币系统有三种币值,面值分别为一角.五分和一分,求最小找币数时,可以用贪心法求解:如果将这三种币值改为一角一分.五分和一分,就不能使用贪心

活动选择问题(贪心算法vs动态规划)

活动选择问题贪心算法vs动态规划 基础知识 1-1动态规划 1-2贪心算法 1-3贪心算法vs动态规划 活动选择问题描述 活动选择问题最优子结构 活动选择问题算法设计 4-1贪心算法之选择最早结束活动 4-1-1递归贪心算法 4-1-2迭代的方式进行 4-2贪心算法之选择最短时长活动 4-3动态规划方法实现 4-3-1自上而下的实现 4-3-2自下而上的实现 结论 活动选择问题(贪心算法vs动态规划) 1.基础知识 在讲解活动选择问题之前,我们首先来介绍一动态规划和贪心算法的基础知识 1-1.动

算法题目: 动态规划 之 最短编辑距离

问题: 对于长度相同的2个字符串A和B,其距离定义为相应位置字符距离之和.2个非空格字符的距离是它们的ASCII码之差的绝对值:空格与空格的距离为0,空格与其他字符的距离为一个定值k.在一般情况下,字符串A和B的长度不一定相同.字符串A的扩展是在A中插入若干空格字符所产生的字符串.在字符串A和B的所有长度相同的扩展中,有一对距离最短的扩展,该距离称为字符串A和B的扩展距离.对于给定的字符串A和B,设计一个算法,计算其扩展距离. 测试数据: 输入:cmc      snmn        2   

算法导论--动态规划(矩阵链乘法)

矩阵链乘法问题 给定一个n个矩阵的序列?A1,A2,A3...An?,我们要计算他们的乘积:A1A2A3...An.因为矩阵乘法满足结合律,加括号不会影响结果.可是不同的加括号方法.算法复杂度有非常大的区别: 考虑矩阵链:?A1,A2,A3?.三个矩阵规模分别为10×100.100×5.5×50 假设按((A1A2)A3)方式,须要做10?100?5=5000次,再与A3相乘,又须要10?5?50=2500,共须要7500次运算: 假设按(A1(A2A3))方式计算.共须要100?5?50+10

算法导论--贪心算法与动态规划(活动选择问题)

活动选择问题 有一个教室,而当天有多个活动,活动时间表如下:找出最大兼容活动集!活动已按结束时间升序排序. 动态规划 采用动态规划需要满足两个条件:1.最优子结构2.子问题重叠 令Sij表示在ai结束后和aj开始前活动的集合,假定Aij为活动集合Sij的最大兼容子集,其中包含活动ak.问题变成求Sik与Skj最大兼容活动子集Aik与Akjz.我们用c[i,j]表示Sij的最优解的大小. 则c[i,j] = c[i,k]+c[k,j]+1;最后我们需要遍历所有可能的k值,找出最大的一个划分作为c[

十大基础实用算法之动态规划

动态规划(Dynamic programming)是一种在数学.计算机科学和经济学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法. 动态规划常常适用于有重叠子问题和最优子结构性质的问题,动态规划方法所耗时间往往远少于朴素解法. 动态规划背后的基本思想非常简单.大致上,若要解一个给定问题,我们需要解其不同部分(即子问题),再合并子问题的解以得出原问题的解. 通常许多子问题非常相似,为此动态规划法试图仅仅解决每个子问题一次,从而减少计算量: 一旦某个给定子问题的解已经算出,则将