Download presentation
Presentation is loading. Please wait.
Published byJett Yardley Modified over 9 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
© 2025 SlidePlayer.com. Inc.
All rights reserved.