我正在寻找一个直观的、真实的示例,该示例需要(最坏的情况)指数时间复杂度来解决我正在做的演讲。
以下是我提出的其他时间复杂性的示例(其中许多来自这个 SO question):
- O(1) - 判断一个数是奇数还是偶数
- O(log N) - 在字典中查找一个单词(使用二进制搜索)
- O(N) - 看书
- O(N log N) - 对一副扑克牌进行排序(使用归并排序)
- O(N^2) - 检查你的手推车里是否有购物清单上的所有东西
- O(infinity) - 掷硬币直到它落在正面
有任何想法吗?
我正在寻找一个直观的、真实的示例,该示例需要(最坏的情况)指数时间复杂度来解决我正在做的演讲。
以下是我提出的其他时间复杂性的示例(其中许多来自这个 SO question):
有任何想法吗?
ps为什么你的最后一个例子是复杂度 O(infinity) ?这是线性搜索 O(N) .. 世界上不到 70 亿人。
比萨餐厅有多种配料可供选择
顾客可以为他们的披萨选择任何配料组合或根本不选择配料。现在考虑一个算法,它可以找到所有可能的独特配料组合。这是一个时间复杂度为 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 种浇头,就有超过 100 万种可能的组合!
旅行商问题的蛮力解决方案是 O(n!),大约是 O(N^N)
一个蛮力和幼稚的 n-queens 问题的解决方案。
您必须将 n 个皇后放在一个 *n 板上,而没有它们被其他人带走。
while there are untried configs,
go to next solution and
test it
假设每个皇后都在给定的行上,有 n 种可能放置皇后和 n 个其他 (n-1) 皇后(因为不检查重复的行)。
因此,您的复杂度为 O(n^n)
在一个集合中找到一个整数子集,使得它们的总和是一个指定的值 X 怎么样?
我相信这具有复杂性 O(2^(n/2))