2014-03-27 50 views
1

我知道动态编程是指我们倾向于将复杂问题分解成更小的部分的方法。换句话说,这是一个分而治之的范例。面向对象编程也使用类和模块的概念,因此遵循关注点分离(SoC)原则。因此,我们可以说OO是动态规划的一个例子吗?面向对象与动态编程有什么区别

注意:这里的动态并不意味着动态类型或动态脚本语言。它指的是general approach

+0

OOP非常类似于如何编写程序并组织代码以使其具有模块化,可读性和可维护性。但是,DP是通过解决子问题来解决复杂问题的算法技术。你可以在维基百科或任何算法书上找到更多关于它的信息。所以,OOP与DP没有任何相似之处 – vijar

回答

3

动态规划是一种算法设计方法。

面向对象的编程更像是一种代码组织方法。

比较它们就像比较千米和千克。

(和线性规划也是完全不同的东西,它是优化复杂的线性方程组,它比编程更多的数学。而整数规划是它的一个特例。)

1

至于我能从维基百科文章的前几段推断出,动态编程是关于识别已经解决的子问题以减少运行时间,这当然需要将问题分解为更小的问题,但重点是这种“在运行时发生”:您不是在寻找可以通过相同方法解决的问题,而是在寻找具有相同解决方案的等效问题。

OOP或其他编程范例是关于识别可以用相同的方法解决的问题,使用相同的算法。动态编程不是一个范例,它不会告诉你如何构造你的程序。它告诉你如何指定一个算法,以便它可以利用子问题的解决方案。

相关问题