【问题标题】:Algorithm without dynamic programming,less efficient solution没有动态规划的算法,求解效率低
【发布时间】:2012-12-27 09:50:49
【问题描述】:

比赛中有一个问题。我已经用动态编程及其复杂性O(n^2) 解决了这个问题。但我正在寻找效率较低的解决方案。这种效率较低的方法的复杂性是什么。感谢您的帮助。

【问题讨论】:

  • 我猜你的意思是“更有效的方式”?否则很容易让算法任意低效。
  • 我的意思是效率较低的方式。我想比较它们的复杂性。例如,我正在寻找 O(n^3) 解决方案
  • @mustad: O(n^2)O(n^3) 的子集,所以O(n^2) 解决方案也是O(n^3) 解决方案。
  • @amit 假设Theta(n^3);让算法任意变慢仍然是微不足道的。
  • 顺便问一下,你知道你可以对Th((3/2)^n)中的数组进行排序吗?

标签: algorithm complexity-theory dynamic-programming


【解决方案1】:

有一种通用方法可以降低任何动态编程解决方案的效率。动态规划的本质是存储子问题的解决方案以供重用。

为了以某种合理的方式降低效率,去掉子问题结果存储。而是在需要时重新计算每个子问题的解决方案。

【讨论】:

    【解决方案2】:

    使用具有相同算法的低效数据结构有助于拥有O(n^3)。将城镇存储在链表而不是数组中会降低算法的一级效率。

    为了降低效率,更改算法更容易。例如检查所有预兆变化的组合并使用最小的,它是时间指数的。

    【讨论】:

      猜你喜欢
      • 2011-05-05
      • 2012-03-26
      • 2013-11-27
      • 1970-01-01
      • 2014-06-26
      • 1970-01-01
      相关资源
      最近更新 更多