我正在寻找一个直观,真实的问题示例,该问题需要(最坏情况下)指数时间复杂度来解决我正在给出的话题。
以下是我提出的其他时间复杂性的示例(其中许多来自this SO question):
有什么想法吗?
答案 0 :(得分:23)
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种浇头类型,就有超过一百万种可能的组合!