指数时间复杂度的现实例子

时间:2011-08-14 07:45:55

标签: complexity-theory exponential

我正在寻找一个直观,真实的问题示例,该问题需要(最坏情况下)指数时间复杂度来解决我正在给出的话题。

以下是我提出的其他时间复杂性的示例(其中许多来自this SO question):

  • O(1) - 确定数字是奇数还是偶数
  • O(log N) - 在字典中查找单词(使用二进制搜索)
  • O(N) - 读一本书
  • O(N log N) - 排序一副扑克牌(使用合并排序)
  • O(N ^ 2) - 检查购物清单上是否包含所有物品
  • O(无限远) - 投掷硬币直到落在头上

有什么想法吗?

5 个答案:

答案 0 :(得分:23)

  • O(10 ^ N):尝试通过测试每种可能的组合来破解密码(假设长度为N的数字密码)

p.s。为什么你的最后一个例子是复杂度为O(无穷大)?它是线性搜索O(N)..世界上只有不到70亿人。

答案 1 :(得分:1)

旅行商问题的强力解决方案是O(n!),大约为O(N ^ N)

答案 2 :(得分:1)

蛮力和幼稚的n-queens问题的解决方案。

你必须在n * n的棋盘上放置n个皇后,而不让他人带走。

while there are untried configs, go to next solution and test it

假设每个女王都在一个给定的行上,女王被放置的可能性为n,而(n-1)个其他女王则为n(因为没有检查重复的行)。

因此,你有一个O(n ^ n)复杂度

答案 3 :(得分:0)

如何在集合中查找整数的子集,使得它们的和是指定值X?

我认为这有复杂度O(2 ^(n / 2))

答案 4 :(得分:0)

比萨餐厅有几种浇头可供选择

  • 意大利辣味香肠
  • 辣椒
  • 菠萝(尝试之前不要敲它!)

客户可以选择披萨的浇头或浇头的任何组合。现在考虑一种算法,该算法可以找到浇头的每种可能的唯一组合。这是一个时间复杂度为O(2 ^ n)的指数算法。

查看在菜单上添加新的浇头时可能的组合如何(呈指数增长):

0 toppings: 1 combination (no toppings at all)
1 toppings: 2 combinations (none, a)
2 toppings: 4 combinations (none, a, b, ab)
3 toppings: 8 combinations (none, a, b, c, ab, ac, bc, abc)
...
...
10 toppings: 1,024 combinations
20 toppings: 1,048,576 combinations

所以只有20种浇头类型,就有超过一百万种可能的组合!