JavaScript动态编程

动态编程将问题分解为越来越小的可能的子问题。这些子问题不是独立解决的。相反,这些较小的子问题的结果将被记住并用于相似或重叠的子问题。

在有问题的地方使用动态编程,可以将其分为相似的子问题,以便其结果可以重复使用。通常,这些算法用于优化。在解决现有子问题之前,动态算法将尝试检查先前解决的子问题的结果。将子问题的解决方案组合在一起,以获得最佳解决方案。

对于使用动态编程的问题,

  • 该问题应能够分为较小的重叠子问题。

  • 通过使用较小的子问题的最佳解决方案,可以实现最佳解决方案。

  • 动态算法使用记忆。

动态编程问题可以使用2种方法来解决-

  • 自下而上的动态编程:通过这种方法,我们首先分析问题并查看子问题的解决顺序。我们首先解决小问题,然后逐步解决给定问题。

  • 自上而下的动态编程:通过这种方法,我们通过分解解决给定的问题。如果看到给定的子问题已解决,则只需返回存储的解决方案。