【Algorithm】Divide And Conquer & Complexity calculation

【Algorithm】Divide And Conquer & Complexity calculation

  • 1、Divide the problem into a number of subproblems that are smaller instances of the same problem.

  • 2、Conquer the subproblems by solving them recursively. If the subproblem sizes are small enough, however, just solve the subproblems in a straightforward manner.

  • 3、Combine the solutions to the subproblems into the solution for the original problem.

归并排序就是一个用分治法的经典例子,这里我用它来举例描述一下上面的步骤:

1、归并排序首先把原问题拆分成2个规模更小的子问题。
2、递归地求解子问题,当子问题规模足够小时,可以一下子解决它。在这个例子中就是,当数组中的元素只有1个时,自然就有序了。
3、最后,把子问题的解(已排好序的子数组)合并成原问题的解。

Recursion Expression

Alt text

利用递归式分析分治法复杂度 : 1.写出递归式 (递归+分解复杂度+合并复杂度) 2.画出递归树 3.计算

Ways to calc Recursion Expression

这三种方法分别是:代入法,递归树法,和主方法。代入法是一种十分强大的方法,它几乎可以求解所有的递归式。然而,对于一些“小鸡”来说,不需要这么强大的“牛刀”。对于一些特定类型的递归式(具体类型在主方法的小节中会介绍),用主方法可以用更少的时间得到一个更确切的界。Alt text
Alt text
Alt text

-------------End of this passage-------------