我还没有找到算法(编程或真实世界)的例子,其中真正的计算需要n ^ n次计算。我见过旅行推销员问题,但那真的是n!这略小于n ^ n。我也看过电话簿示例here。这个电话簿问题实际上并非如此,因为每个加载的原始电话簿总共需要为每本原始书制作n个和n个副本。现在它达到n + n ^ 2。然后机器人需要加载每个额外的副本,也是n ^ 2。添加所有这些,你得到n + 2n ^ 2。其中,因为我们看最大的指数,只有x ^ 2.
有人可以给我一个真正需要n ^ n的东西的例子吗?
答案 0 :(得分:1)
递归O(n n )函数的一个例子,计数为n n
long long pownn(int n, int depth) {
if ( ! depth) return 1;
long long ll = 0;
int i = n;
while (i--) ll += pownn(n, depth-1);
return ll;
}
名为long long result = pownn(n, n);
这种算法就像在一些游戏中可以找到的那样,理论上每个可搜索的位置都给自己 n 其他可搜索的位置,搜索深度设置为 n 。实际上,游戏(如国际象棋)可以进行优化(minimax / alpha-beta / memoization-like:数百万个位置存储/位置分析...),搜索可能比深度 n 消除"无用"中间职位。因此"只有"分析了几百万个职位。