- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我听说动态规划和回溯之间的唯一区别是 DP 允许重叠子问题,例如
fib(n) = fib(n-1) + fib (n-2)
是吗?还有其他区别吗?
另外,我想知道使用这些技术解决的一些常见问题。
最佳答案
动态规划方法有两种典型的实现方式:自下而上和自上而下。
自上而下的动态规划只不过是普通的递归,通过内存中间子问题的解决方案得到增强。当给定的子问题出现第二次(第三次、第四次……)时,它不会从头开始解决,而是立即使用先前内存的解决方案。这种技术以名称内存(“i”前没有“r”)而为人所知。
这实际上就是您使用斐波那契数列的示例应该说明的内容。只需使用 Fibonacci 数列的递归公式,但沿途构建 fib(i)
值表,您将获得针对此问题的自上而下的 DP 算法(这样,例如, 如果你需要第二次计算 fib(5)
,你可以从表中获取它而不是再次计算它)。
在自下而上的动态规划中,该方法也基于将子解存储在内存中,但它们以不同的顺序求解(从小到大),并且生成的一般算法的结构不是递归的。 LCS algorithm是一个经典的 Bottom-to-top DP 示例。
自下而上的 DP 算法通常更有效,但它们通常更难(有时甚至不可能)构建,因为预测您将需要解决整个问题的原始子问题并不总是那么容易原始问题,以及您必须从小的子问题中采取哪条路径才能以最有效的方式获得最终解决方案。
关于algorithm - 回溯与动态规划的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3592943/
我正在创建我的第一个 WAR 文件。我一直在试验 ant buildfile 语法,我的 buildfile 的第一部分从我的 Eclipse 项目中获取内容并将其放入 /dist 文件夹中,然后将其
我是一名学习 SQL 和 PHP 的学生,我接到了一项任务,要使用 PHP 和 mySQLi 创建学生反馈表,我真的一直在思考如何为项目设计数据库! 我正在创建一个系统,用户可以在其中登录网页,如果用
这个问题在这里已经有了答案: Is it possbile to test for expected errors when the testee exits with failure using
我目前正在设计和开发一个 Web 应用程序,该应用程序有可能快速增长。我将提供一些一般信息,然后继续我的问题。我会说我是一名中级网络程序员。 以下是一些规范:MySQL - 数据库后端PHP - 用于
我不知何故无法在我的日志解析器应用程序中实现报告功能。 这是我目前所做的: 我正在编写一个应用程序,它读取日志文件并在字符串中搜索可以在用户配置文件中定义的多个正则表达式。对于从配置中解析的每个所谓的
我有兴趣学习如何在多开发团队场景中设计/规划 Web 应用程序开发。 假设“项目经理/负责人”的角色: 成功的 Web 应用程序开发需要哪些“文档”? 需要什么 UML 图,需要什么程度? 在设计/计
table a (t_a): id name last first email state country 0 sklass klass steve
我们建立了一个广泛使用 JQuery UI 的 AJAX 网站。我们有 30 多个自制的 JQuery UI 小部件(动态加载)。我们到处都使用 JQuery native 小部件:对话框、 slid
我是一名优秀的程序员,十分优秀!