Time complexity 删除无效括号时间复杂度

Time complexity 删除无效括号时间复杂度,time-complexity,Time Complexity,尝试了解以下问题算法的运行时间删除无效括号的最小数目,以使输入字符串有效。返回所有可能的结果 这是一个简单的BFS解决方案,它通过删除“(”或“)来生成所有可能的字符串 每个级别检查所有可能的n级长度字符串。 考虑到这一点,我很难确定如何最终确定该算法的运行时间。如何推广该算法并分析其复杂性 对于最坏的情况,让我们尝试输入为(()。根据上面的逻辑,它将推送((((在队列中,检查这是否无效。因此,它将生成4个可能的长度为3的子字符串,将它们推到队列中。同样,在处理该队列元素时,它将再次为长度为3的

尝试了解以下问题算法的运行时间<代码>删除无效括号的最小数目,以使输入字符串有效。返回所有可能的结果

这是一个简单的BFS解决方案,它通过删除“(”或“)来生成所有可能的字符串

每个级别检查所有可能的n级长度字符串。
考虑到这一点,我很难确定如何最终确定该算法的运行时间。如何推广该算法并分析其复杂性

对于最坏的情况,让我们尝试输入为
((
)。根据上面的逻辑,它将推送
((((
在队列中,检查这是否无效。因此,它将生成4个可能的长度为3的子字符串,将它们推到队列中。同样,在处理该队列元素时,它将再次为长度为3的每个子字符串生成更多长度为2的字符串,然后为两个,然后结束。我们假设T(1)=1

如果您尝试为上述逻辑建立一个递归关系,它将是

T(n)=nT(n-1)+1
,可以写成

     = `n((n-1)T(n-2) + 1) + 1` and so on.
完全求解后,我们将得到
T(n)=n!+n(n-1)/2+1,这将是
O(n!)

因此,我认为时间复杂度的顺序是
O(n!)
有关如何解决递归关系
T(n)=nT(n-1)+1
的更多详细信息,请参阅:

所谓“无效括号”是指未正确关闭或打开的括号吗?如果是,由于括号的层次结构是递归的,因此应使用堆栈,该堆栈将是DFS,因此具有O(n)复杂性
                )()(                 len n
      ()(    ))(    ()(    )()       n-1
   () (( ()                          n-2
     = `n((n-1)T(n-2) + 1) + 1` and so on.