非常简单的时间复杂性问题

时间:2011-07-28 21:36:09

标签: algorithm complexity-theory

如果我有一个功能:8x + 5y + 20z = n 我想使用穷举搜索来找到数字n的x,y,z的所有可能解。搜索x,y,z的可能范围分别是[0,n / 8] [0,n / 5]和[0,n / 20],如果我使用嵌套for循环,那么我的时间复杂度为O( n ^ 3/8 * 5 * 20)对吧?

我昨天很难介绍算法分析,有些人不会说简单的英语....

请提出一些建议

2 个答案:

答案 0 :(得分:3)

您通常会以渐近符号省略常量...所以O(n ^ 3)。假设你只是在寻找整数解(对于给定的n),你的复杂性是正确的,假设你没有尝试任何太过花哨的东西来修剪搜索空间(即你检查整个间隔)。

答案 1 :(得分:1)

您可以通过设置一些条件来大幅降低计算时间:

  • 仅尝试x和y - > z =(n - 8x - 5y)/ 20
  • n和y具有相同的奇偶校验
  • 如果n是5的倍数,则x是5
  • 的倍数
  • 等...