跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 对 dp 的实际价值的怀疑?
未分類
5 11 月 2020

对 dp 的实际价值的怀疑?

对 dp 的实际价值的怀疑?

資深大佬 : tamer 2

递归,回溯在业务场景中时不时能学以致用, 反观 dp 除了算法题自 high 目前完全没实际场景用到.

难道是因为我是个 crud boy 的原因?

在其他领域才是他大放异彩的时刻?

就纯粹做题用,真的挺蠢得

求解

大佬有話說 (26)

  • 資深大佬 : murmur

    不只是 dp 有这个问题,一般的场景都能用库解决,想用你的算法替代库算法,首先你得证明在业务上你的算法好于库算法,稳定性、 容错不能比库差,但是没特殊需求,找个 star 多的库就行了。

  • 資深大佬 : hyserendipity

    更多是因为实际场景能用就行,这显然不是 dp 价值的问题。

  • 資深大佬 : loliordie

    有用 但是超过 99%的程序员用不上

    恕我直言 如果在美国面试问 dp 要么你面的是 Google 要么纯粹就是不想让你进

  • 資深大佬 : huai

    DP 自下而上,没记错的话,比递归好一些。递归的层级太多,好像会引发问题(没碰到,确实实际中能用就行

  • 資深大佬 : dtgxx

    数据结构算法都是写框架或者底层实现的人用的,为了性能。 只是培养你这方面的思维,也应对面试。 代码都写不完哪有时间想什么最佳算法。

  • 主 資深大佬 : tamer

    @murmur 并不是说要写加密算法 /快排之类的顶替已有库,
    我理解的是在刷题获得的解题思路会给业务场景提供帮助, 涉及到数据处理清洗, 以及一些奇形怪状的需求, 在保证效率的同时满足要求

    回头看的话,目前个人而言最没用的题目就是各种 dp 以及奇淫技巧的解题方法, 有高考题还有中式英语题那味道了
    先有解法后有题

  • 資深大佬 : Escapist367

    看你的领域了。
    我自己的话因为会去做序列生成,在 viterbi 或者是 beam search 的时候,必然会需要写 dp~

  • 資深大佬 : lights

    游戏开发类偶尔会用到简单的 DP,经典的比如自动吃经验包吃最少数量的经验包

  • 資深大佬 : nevin47

    递归的复杂度太高,做大规模路由的时候,DP 就是比递归快

    业务场景中用得其实不少,但是 CURD 的场景肯定没必要用,背后的组件都帮你写好了

  • 資深大佬 : zy445566

    开启新的思维方法,就比如找硬币问题,如果用压栈的方法也可以解决,但是如果使用 dp,把每个硬币拆解成单一问题,反而代码还简单很多,维护性就高了

  • 資深大佬 : remarrexxar

    @huai #4 递归太深就会爆栈了

  • 資深大佬 : murmur

    @lights 见过另一种实现思路,按照一定的顺序吃经验,如果溢出就退一部分给你

    比如强化材料有 100 1000 10000 的三种,需要 66000 点经验,那我就可以直接吃 70000,然后返还 4000

  • 資深大佬 : 55savage

    我上周刚上完一节图形学的课,讲了 seam carving,里面用到了 DP

  • 資深大佬 : jmc891205

    没错啊。。。因为你是个因为你平常都在做 CRUD

  • 資深大佬 : maplelin

    DP 说白了不就是以空间换时间的回溯 /递归算法吗

  • 資深大佬 : Jooooooooo

    把部分结果记录下来 这种思想很多地方都能用上啊, 甚至不限于编程领域.

  • 主 資深大佬 : tamer

    @lights 看来还是领域问题,hh

    dp 个人感觉最难的一步就是建模, 将实际问题转换成状态方程, 难度巨高不说, 而且处理能力太局限了, dp[n] n 如果特别大就得另辟蹊径了

    没想到真的有业务场景可以用到, 长见识了, 3Q

  • 主 資深大佬 : tamer

    @Jooooooooo 平时回溯的剪枝也基本会有吧, dp 最精华的是动态方程这块,个人理解,也是难点所在,最消磨时间的部分

  • 資深大佬 : lights

    @tamer 复杂一些的建模,我也不会,哪怕是刷题的时候复杂一些的 DP 题也是只能抄答案

  • 資深大佬 : newtype0092

    @tamer 游戏里因为有各种场景所以会用到很多平时不常用的算法,DP 的话之前自己写过:
    整理背包,暗黑那种,每个物品占的格子的数量和形状不同,怎么排列浪费空间最少。
    麻将,之前哥们写的 N 重循环太卡了,优化了一下可以瞬间检定所有可能的和牌。

  • 資深大佬 : b1ackjack

    之前写过一个分词器,没使用 dp 的话对于连词长句子会非常耗时,但是用了 dp 很快就能出结果,dp 重要的是思想

  • 資深大佬 : favourstreet

    优化问题的解法永远不会没用啊,因为就算完全不像的问题也经常能通过一些操作变换成最优化的求解问题,dp 作为其中一大类怎能没用

  • 資深大佬 : DarkCat123

    使用 DP 对数据库 join 的优化: https://github.com/pingcap/tidb/blob/master/docs/design/2018-10-20-join-reorder-dp-v1.md

  • 資深大佬 : happinessnch

    其实就是纯做题,就算 DP 可以找到一些业务场景应用,
    那图论、几何、数论在该场景下能用的到吗?
    如果想要通吃各种比赛、面试,每个基础算法都要涉及练习,
    但是要想找到各个算法都能应用场景,那完全不可能,所以,这种情况下刷题就不是追求学以致用,
    做题就是为了做题而已,目的不是比赛,就是面试。

  • 資深大佬 : dayeye2006199

    @happinessnch 算法被设计出来肯定是为了解决特定问题的。简单举几个最常见的例子
    图论:pip,conda 或者 npm 这类依赖管理包工具里面,就使用了图论里面的依赖路径算法
    几何:各种图形应用,arvr,游戏开发,图形学基本都是几何和代数
    数论:常见的不对称加密,RSA 算法,都是数论的应用

  • 資深大佬 : happinessnch

    @dayeye2006199 所以谁的工作是又做加密算法、又做游戏、又做包管理工具,
    你要硬要说有,那肯定也有,不过就没有讨论的必要了。
    算法竞赛进阶后的本质,只是竞赛而已。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具