很久以来一直想开博客,写技术博客,但是一直没有实现,可能是自己没有毅力,也可能是没有最直接的驱动力。研二第一学期快结束了,上一届的工作也大部分都确定了,找人了解经验,分析什么样的人拿到了什么样的offer ,这个时侯才意识到了风险,一直以为自己还不错,现在知道了,差得远,总之,让我现在出去,还拿不到自己非常满意的offer。
所以,坚持一下,还是踏踏实实的打基础,才是最终的王道。
学算法,总结语言基础,掌握设计模式,数据库,linux 应用+ kernel ,再加python,这是这一年,找工作之前需要攻克的,windows 编程持续关注即可。
也看了一段时间MIT算法导论的视频了,还是比较懒,不愿意写,待克服。
算法本科时候学过,也认真的看了,但是没动手,理解不深,失败。
今天看了dynamic programming 。
汽车生产线的问题,严格按照dynamic programming 的步骤。
1>问题的解是什么样子的?【描述解的结构,构造】
其实,主要是看 本问题的最优解是不是包含子问题的最优解,这么说还是不够具体,是不是可以将问题减小,并且通过子问题的解可以构造出问题的解。那么就是问题 和 子问题 是不是具有同样的性质,换句话说,是不是问题不变,但是输入小了。
求解通过生产线最快的路线,就是说,求解通过最后一个station【n】 所用的总时间最小。
那么求解通过最后一个station【n】 的总时间最小,那么求解 “通过这个station【n】 的前一个station【n-1】 的总时间最小” ,就可以将问题减小。
2>利用子问题的解递归定义问题最优解的值。
就是上面分析的解的结构,形式化的表示出来,把问题的解能够递归的表示出来,说明问题,基本得到解决了,因为根据递归表达式写出递归的程序,不难。
3>简化问题【既然递归耗时,耗空间,汽车问题的时间复杂度指数级的】
所以就是以迭代的方式来计算问题的最优解,计算的过程中,注意保存构造问题最优解需要的值。递归问题都可以通过迭代来解决,但是
递归向迭代的转化,貌似很不简单( 记不太清了)。
4>根据上面记录的信息,构造问题的最优解。
总结一下:分析这个问题是不是可以用动态规划的方法来解决【有hallMark 】,如果可以的话,严格按照动态规划问题的步骤,其实就是递归分析问题,迭代解决问题。
初步认识:仅供自己备忘之用,有错误欢迎指出。
---------VampireWorlf