1 / 11

Compsci 201 Recitation 12

Compsci 201 Recitation 12. Professor Peck Jimmy Wei 4 /11/2014. In this Recitation. Greedy algorithms Brief intro Practice Memoization Brief intro Practice Submit via form : http:// goo.gl /66Dhvn Today’s problems are APTs!. Greedy Algorithms. What are they?

burke
Télécharger la présentation

Compsci 201 Recitation 12

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. Compsci 201 Recitation 12 Professor Peck Jimmy Wei 4/11/2014

  2. In this Recitation • Greedy algorithms • Brief intro • Practice • Memoization • Brief intro • Practice • Submit via form: http://goo.gl/66Dhvn • Today’s problems are APTs!

  3. Greedy Algorithms • What are they? • An algorithm where continuously selecting local optima leads to a globally optimal solution • This is called “greedy” because we select the best solution for every sub-problem • Will learn about greedy algorithms in more detail in Compsci 330

  4. Greedy Algorithms • As an example, consider the problem of making change: • We want to use as few coins as possible that amount to our total • What coins would you give for $0.63? • 2 quarters, 1 dime, 3 pennies • How did you determine that solution? • Start by using as many quarters as possible, then dimes, then nickels, then pennies • Can you see how this is “greedy”?

  5. Greedy Algorithms – Answer 1-3 • Read the VoteRigging APT and write the following method: • Answer questions 1-3 before you write this code • What the greedy choice? /** * Returns the minimum number of votes to buy for candidate 0 to win * the election * @param votes is an array where the ith element represents * how many individuals were originally plan to vote for the ith candidate */ public intminimumVotes(int[] votes);

  6. Greedy Algorithms – Answer 4-6 • Read the OlympicCandles APT and write the following method: • Answer questions 4-6 before you write this code • What the greedy choice? /** * Returns the maximum number of nights you can light candles * @param candles is an array where the ith element represents the height of * the ith candle you have available */ public intnumberOfNights(int[] candles);

  7. Because of the snow • We didn’t have to to discuss memoizationin class • Help with BSTcount (you will not be penalized for not completing BSTcount for APT set 5)

  8. Memoization • What is it? • No, it’s not “memorization”… no ‘r’ • Refers to the idea that as we solve problems we might sometimes need to reuse solutions to sub-problems, so we store them instead of recalculating them • Also will learn more about this and dynamic programming in CS330

  9. Memoization • As an example, think of recursive fibonacci: • What’s wrong with the recursive solution below? • We recalculate fibonacci for low values of n • Instead, we could store those values in a data structure (memoize) so that we don’t have to recalculate them! public intfibonacci(int n) { return (n<=2) ? 1 : fibonacci(n-1) + fibonacci(n-2); }

  10. Memoization • Read the BSTCount APT and write the following method: • Think about the sub-problems you need to solve here and how we can store the solutions to those subproblems to avoid having to recalculate them /** * Returns the total number of possible BSTs with the given values * @param values is an array holding all values that need to be stored in * the BST */ public long howMany(int[] values);

  11. Have a good weekend! Don’t forget to submit!

More Related