Download presentation

Presentation is loading. Please wait.

Published byJett Yardley Modified over 2 years ago

1
CMSC 150 RECURSION CS 150: Mon 26 Mar 2012

2
Motivation : Bioinformatics Example A G A C T A G T T A C C G A G A C G T Want to compare sequences for similarity Similar sequences: common ancestors? Point mutations Insertions Deletions − − A G A C T A G T T A C C G A G A C − − G − T − −

3
Global Alignment Algorithm Think about brute force A G A C T A G T T A C C G A G A C G T Where should gaps go? Enumerate all possible alignments?

4
Global Alignment Algorithm Think about brute force A G A C T A G T T A C C G A G A C G T For two sequences of length L: # of possible global alignments: ~ 2 2L if L = 250, this is ~10 149 alignments @ 1B alignments / second, takes 3.21 X 10 132 years age of universe: ~1.4 X 10 10 years

5
Global Alignment Algorithm Think about brute force A G A C T A G T T A C C G A G A C G T For two sequences of length L: # of possible global alignments: ~ 2 2L if L = 250, this is ~10 149 alignments @ 1B alignments / second, takes 3.21 X 10 132 years age of universe: ~1.4 X 10 10 years

6
Needleman-Wunsch Algorithm Computes optimal global alignment Technique: Uses dynamic programming combine optimal solutions from subproblems number of subproblems must be (relatively) small Typically bottom-up: find solution using a recursive series of simpler solutions

7
Recursion Use same algorithm on smaller subproblems Need: Base case: simplest input possible, solution immediately available Recursive call: invoke the algorithm on a smaller set of the input Without base case, recursion would be infinite!

8
An Example Search phone book for a name start in middle: if found, stop otherwise, repeat process in correct “half” of book Base case: only one name to search Recursive call: search remaining “half” of book

9
Another Example : Factorial n! = n x (n-1) x (n-2) x … x 2 x 1 5! = 5 x 4 x 3 x 2 x 1 = 120 4! = 4 x 3 x 2 x 1= 24 3! = 3 x 2 x 1 = 6 2! = 2 x 1 = 2 1! = 1 0! = 1 (multiplicative identity)

10
Another Example : Factorial n! = n x (n-1) x (n-2) x … x 2 x 1 5! = 5 x 4 x 3 x 2 x 1 = 120 4! = 4 x 3 x 2 x 1= 24 3! = 3 x 2 x 1 = 6 2! = 2 x 1 = 2 1! = 1 0! = 1 (multiplicative identity)

11
Another Example : Factorial n! = n x (n-1) x (n-2) x … x 2 x 1 5! = 5 x 4 x 3 x 2 x 1 = 5 x 4! = 120 4! = 4 x 3 x 2 x 1= 24

12
Another Example : Factorial n! = n x (n-1) x (n-2) x … x 2 x 1 n! = n x (n-1)! Defined recursively: 1if n = 0 n! =n(n-1)!if n > 0

13
Compute n! in BlueJ…

14
Another Example : Fibonacci Fibonacci sequence: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, … After first two, each term is sum of previous two Defined recursively: Let f n be the n th term, n = 0, 1, 2… 0if n = 0 f n =1if n = 1 f n-1 + f n-2 if n > 1

15
Another Example : Fibonacci Fibonacci sequence: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, … 0if n = 0 f n =1if n = 1 f n-1 + f n-2 if n > 1 f 0 = 0f 1 = 1 f 2 = f 1 + f 0 = 1 + 0 = 1 f 3 = f 2 + f 1 = 1 + 1 = 2 f 4 = f 3 + f 2 = 2 + 1 = 3

16
Fibonacci in Nature Fibonacci spiral: Fibonacci tiling: squares of sizes 1, 1, 2, 3, 5, 8, 13, 21, 34 Draw circular arc connecting opposite corners of squares

17
Fibonacci in Nature Fibonacci spiral: Fibonacci tiling: squares of sizes 1, 1, 2, 3, 5, 8, 13, 21, 34 Draw circular arc connecting opposite corners of squares More explanation: Fibonacci in natureFibonacci in nature

18
Compute n th Fibonacci in BlueJ…

19
Another Example : Towers of Hanoi 3 towers, n disks each of different size Rules: Can move only one disk at a time No larger disk can be on top of smaller disk Goal: move n-tower from 1 st tower to 3 rd tower

20
Think Recursively n n - 1 Consider the n-tower as a tower of n-1 and a tower of 1…

21
Think Recursively n - 1 If we can somehow move the n-1 tower to the middle…

22
Think Recursively n - 1 And then the largest disk to the right…

23
Think Recursively n - 1 And finally the n-1 tower to the right, we have a solution!

24
Think Recursively What is the base case? a tower of n = 1 disk

25
Think Recursively n n - 1 What is the recursive step? Move n-1 tower to middle Then largest disk to right Then n-1 tower from middle to right 1 1 2 2 3 3

26
Think Recursively n n - 1 In pseudocode: moveTower( n-1, 1, 2 ); moveDisk( 1, 3 ); moveTower( n-1, 2, 3 ); 1 1 2 2 3 3 Note that we do not explicitly implement the steps for a tower of size n-1

27
Solve Towers in BlueJ…

Similar presentations

OK

1 Recursion Recursive method –Calls itself (directly or indirectly) through another method –Method knows how to solve only a base case –Method divides.

1 Recursion Recursive method –Calls itself (directly or indirectly) through another method –Method knows how to solve only a base case –Method divides.

© 2017 SlidePlayer.com Inc.

All rights reserved.

Ads by Google