1 / 27

CMSC 150 recursion

CMSC 150 recursion. CS 150: Mon 26 Mar 2012. 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

halia
Download Presentation

CMSC 150 recursion

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CMSC 150recursion 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: ~ 22L • if L = 250, this is ~10149 alignments • @ 1B alignments / second, takes 3.21 X 10132 years • age of universe: ~1.4 X 1010 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: ~ 22L • if L = 250, this is ~10149 alignments • @ 1B alignments / second, takes 3.21 X 10132 years • age of universe: ~1.4 X 1010 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: 1 if 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 fn be the nth term, n = 0, 1, 2… 0 if n = 0 fn=1 if n = 1 fn-1 + fn-2 if n > 1

  15. Another Example : Fibonacci • Fibonacci sequence: • 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, … 0 if n = 0 fn=1 if n = 1 fn-1 + fn-2 if n > 1 • f0= 0 f1 = 1 • f2 = f1 + f0 = 1 + 0 = 1 • f3= f2+ f1= 1 + 1 = 2 • f4= f3+ f2= 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 nature

  18. Compute nth 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 1st tower to 3rd tower

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

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

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

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

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

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

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

  27. Solve Towers in BlueJ…

More Related