我有两个问题。
第一
想象一下,我们有3个元素的列表,n = [1,2,3],并且我们想生成所有可能的序列,其中生成的列表的长度为7。 例如,一个可能的序列是m = [1,2,3,1,1,2,3]
第一个问题是,复杂度是多少?指数还是多项式?
第二
现在我们有7个元素,如前面的示例[1,2,3,1,1,2,3],例如,如果说在第一个位置(左一个),我们只想数字1,在第二位置1和2,在第三,第四和第五位置,我们可以拥有所有数字(1,2,3),在第六位置1和2,在最后一个位置只有1,形状是钟形。
现在的复杂性是什么?
答案 0 :(得分:0)
通过| x |我的意思是x的长度,以[x]表示的最大整数不大于x。
第一:
由于不同可能性的数量为| n | ^ | m |,因此时间复杂度至少为O(| n | ^ | m |)。如果取| n |对于常数,| m |作为变量,则时间复杂度将是指数的(以| n |为基数)。另一方面,如果取| m |作为固定,仅更改| n |,则它变为多项式。两种情况下的空间复杂度均为线性O(| n | + | m |)。
第二:
如果| m | > 2 | n |那么O((| m | -2 | n |)^ | n | *(| n |!)^ 2),因为两个“边”都具有| n |!可能性,“中间部分”可以填充n中的任何内容。
如果| m | <= 2 | n |如果| m |,则为O([| m | / 2]!) | m |是偶数且O([| m | / 2]!*(m + 1)/ 2)是一个奇数。这与上面几乎相同,但是没有“中间部分”。
空间复杂度仍为O(| m | + | n |)。