V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  raaaaaar  ›  全部回复第 15 页 / 共 99 页
回复总数  1970
1 ... 11  12  13  14  15  16  17  18  19  20 ... 99  
遍历,浏览器书签,谷歌插件
2021-05-17 23:54:39 +08:00
回复了 zhoudaiyu 创建的主题 程序员 理解不了动态规划会对后端程序员职业发展有哪些影响?
贪婪,动态规划,分治,都是把一个复杂的问题划分为子问题来解。

贪婪是每个子问题都是最优的,但是最终问题一般不是最优解。

分治的子问题一般是独立的,能够单独求解出来,比如说归并和快排,分成两个子问题排序时,其他子问题是不会影响的。分治的思想就是先分,再治。子问题的类型一般类似,求解方式一样,所以一般用递归,求解完子问题后,再合并求解原问题,比如说二叉树就是一个很常用的分治思想,因为二叉树从定义上来说就是一个递归式的,都能划分为三个节点的子问题,所以很多算法都是差不多的模板。

而动态规划也是把问题划分为子问题,但是在求解的过程中,子问题有些重复出现了,这个时候我们可以时空权衡,也就是空间换时间,把子问题的解记录下来帮助求解,比如说经典的求斐波那契数列,求 f(6)要算 f(5) 和 f(4),这里要算一边 f(4),而求 f(5)?时又要求 f(4) 和 f(3),显然 f(4) 就重复计算了,那么我们就可以提前把结果存下来,以后用的时候直接查找就行了。转换为迭代就是这个思想。

那么一般什么问题适合动态规划呢?
子问题重复:子问题有重复的,这是动态规划优化的原理,当然子问题如果没有重复也可以做,不过就没有意义了。
无后向性:把问题划分为子问题后,通常子问题是一个线性的链,这个链要是一个马尔可夫链,也就是说,后面阶段(子问题)的解,只和现在这个阶段的解有关,而和以前的解无关。比如求 f(6) 时,结果就只和前一个阶段的 f(5) 和 f(4) 有关,而和其他的无关。
最优化原理:和贪婪一个思想,也就是说,每个阶段的解必须是最优的,而且通常需要先证明,最终问题的最优解等价于局部各阶段最优,这个时候才会使用动态规划。

动态规划的实质是什么?
分治+时空权衡解决冗余

那么动态规划应该具体怎么做?
分析问题的结构,看它是不是满足上面的三个原则,或者能转换为类似的问题。比如说,f(6) 能分为 f(4) 和 f(3),这就是一个阶段,并且阶段有重复的,那么这个问题就能用动态规划来做。一般可以画决策树来帮助理解,也就是说,要解决这个问题,需要解决那些问题?这样一层层的分析下去的一棵树。

递归求解。我们可以从原问题开始一个阶段一个阶段的往下求解,也可以反过来从最低的阶段求解,而在这个过程中,我们通常会发现不同阶段间的转移是有规律的,通常问题的重点就在于如何找到这个状态转移方程。

根据得到的值,求解最优值。

在找转移方程的时候,问题怎么分阶段,每个阶段具体和什么信息有关,又怎么用符号来表示一个阶段,最后才是怎么找出阶段间的关系。通常动态规划中有一种常见的划分阶段的方式,那就是选择还是不选择这样二元的关系。

比如说在组合问题中,要对 n 个数选择 k 个数,我们一个个的选,对于每一个数,就有选或者不选两种可能,如果第一个数选,那么还需要从 n-1 个数里选 k-1 数出来,如果选,那么需要从 n-1 个数里选 k 个数,最终的结果就是这两种情况的和。在这里我们以数的选与不选作为阶段,同时也自然推出了转移方程,最终的结果是和,但是比如背包,或者最短路径中,通常是多个值的最值。
2021-05-17 23:13:21 +08:00
回复了 zhoudaiyu 创建的主题 程序员 理解不了动态规划会对后端程序员职业发展有哪些影响?
以前我也挺害怕的,后来学了算法课和数学建模,其实也没有那么恐怖。

你要说什么计算,操作系统啥的可能对真正开发会有影响,但是这个东西就纯面向面试的东西吧
2021-05-17 12:31:41 +08:00
回复了 Yoock 创建的主题 问与答 想请教一下各位彦祖,一些后端程序员在职业发展上的问题。
学了各种基础之后,发现很多听起来很牛的技术其实都是计算机底层在用的,比如存储器,CPU 的一些技术
2021-05-17 12:26:24 +08:00
回复了 tianxin8431 创建的主题 问与答 关于死数据的存储问题
放内存里就行,不管啥缓存,尽量不要放磁盘里
2021-05-16 23:10:29 +08:00
回复了 misakawaque 创建的主题 问与答 自己写的程序 bug 多又找不太出来原因,如何练习?
拆分,然后单元测试,或者直接打断点一个个看变量
2021-05-16 15:05:23 +08:00
回复了 Bechbaliq 创建的主题 职场话题 程序员的尊严值几个钱?
404 not found
2021-05-16 00:45:29 +08:00
回复了 vueli 创建的主题 程序员 小弟刚学后端和 MySql, 请教一下事物的知识点. NodeJs+MySql
加个锁不就行了
2021-05-14 22:53:50 +08:00
回复了 shanex 创建的主题 程序员 老哥们,真心求个建议!
@fciasth 楼主好像没说现在的工作情况
2021-05-14 18:35:11 +08:00
回复了 liuchengfeng1 创建的主题 分享创造 请问抖音如何把多个视频分割成一个啊?如图
爷爷的图图呢?
2021-05-14 18:33:01 +08:00
回复了 chaleaoch 创建的主题 Visual Studio Code 装了 49 个插件,有种 IDE 的感觉...
。。不如直接上 IDE
2021-05-13 16:05:55 +08:00
回复了 fatyoung 创建的主题 程序员 Java 内存模型中的工作内存跟主内存的物理概念是什么
了解下存储器的分层体系结构吧,再了解下地址空间,虚拟存储器的概念。
2021-05-08 18:12:11 +08:00
回复了 3dwelcome 创建的主题 知乎 有哪些别人不告诉你,自己领悟出来的人生建议?
类似这种经验分享我在知乎,或者别人的博客,甚至这个站看到过很多,只要你有意思去找,那么经验是很多的,现在我反而嫌太多了,以至于我无法选择,真正的去改变。
2021-05-08 18:10:26 +08:00
回复了 buxianyu 创建的主题 问与答 Markdown 比起纯文本好像也没多大用处啊
写文档啥的,对格式不那么总是,只想把专注于内容,一个键盘就能解决所有问题,一气呵成的感觉。
web 或者 ftp
2021-05-07 12:11:29 +08:00
回复了 louisng 创建的主题 硬件 现在还有没不烫手的手机?
加个壳就不烫了(笑
2021-05-06 22:29:35 +08:00
回复了 jiangshanmeta 创建的主题 求职 刷了 1400 道力扣的开发,跪求广州前端岗位
前端要求很高的算法么,感觉有点大材小用
2021-05-06 22:28:04 +08:00
回复了 jiangshanmeta 创建的主题 求职 刷了 1400 道力扣的开发,跪求广州前端岗位
@join 我看到有天楼主提交了 144 次
1 ... 11  12  13  14  15  16  17  18  19  20 ... 99  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   974 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 38ms · UTC 20:25 · PVG 04:25 · LAX 12:25 · JFK 15:25
Developed with CodeLauncher
♥ Do have faith in what you're doing.