Presentation is loading. Please wait.

Presentation is loading. Please wait.

Advanced Design and Analysis Techniques

Similar presentations


Presentation on theme: "Advanced Design and Analysis Techniques"— Presentation transcript:

1 Advanced Design and Analysis Techniques
Part 1 15.1 and 15.2

2

3 Techniques -1 This part covers three important techniques for the design and analysis of efficient algorithms: dynamic programming (Chapter 15), greedy algorithms (Chapter 16),and amortized analysis (Chapter 17).

4 Techniques - 2 Earlier parts have presented other widely applicable techniques, such as divide-and-conquer, randomization, and the solution of recurrences.

5 Dynamic programming Dynamic programming typically applies to optimization problems in which a set of choices must be made in order to arrive at an optimal solution. Dynamic programming is effective when a given subproblem may arise from more than one partial set of choices; the key technique is to store the solution to each such subproblem in case it should reappear.

6 Greedy algorithms Like dynamic-programming algorithms, greedy algorithms typically apply to optimization problems in which a set of choices must be made in order to arrive at an optimal solution. The idea of a greedy algorithm is to make each choice in a locally optimal manner.

7 Dynamic programming -1 Dynamic programming, like the divide-and-conquer method, solves problems by combining the solutions to subproblems. Divide and- conquer algorithms partition the problem into independent subproblems, solve the subproblems recursively, and then combine their solutions to solve the original problem.

8 Dynamic programming -2 Dynamic programming is applicable when the subproblems are not independent, that is, when subproblems share subsubproblems. A dynamic-programming algorithm solves every subsubproblem just once and then saves its answer in a table, thereby avoiding the work of recomputing the answer every time the subsubproblem is encountered.

9 Dynamic programming -2 Dynamic programming is typically applied to optimization problems. In such problems there can be many possible solutions. Each solution has a value, and we wish to find a solution with the optimal (minimum or maximum) value. We call such a solution an optimal solution to the problem, as opposed to the optimal solution, since there may be several solutions that achieve the optimal value.

10 The development of a dynamic-programming algorithm
The development of a dynamic-programming algorithm can be broken into a sequence of four steps. 1. Characterize the structure of an optimal solution. 2. Recursively define the value of an optimal solution. 3. Compute the value of an optimal solution in a bottom-up fashion. 4. Construct an optimal solution from computed information.

11 Assembly-line scheduling

12 Step 1: The structure of the fastest way through the factory

13 Step 2: A recursive solution

14 Step 3: Computing the fastest times

15 Step 4: Constructing the fastest way through the factory

16 Matrix-chain multiplication
We can multiply two matrices A and B only if they are compatible: the number of columns of A must equal the number of rows of B. If A is a p × q matrix and B is a q × r matrix, the resulting matrix C is a p × r matrix

17 Counting the number of parenthesizations

18 Step 1: The structure of an optimal parenthesization
Step 2: A recursive solution Step 3: Computing the optimal costs

19 Step 3: Computing the optimal costs

20

21 Step 4: Constructing an optimal solution


Download ppt "Advanced Design and Analysis Techniques"

Similar presentations


Ads by Google