Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
courses:cs211:winter2012:journals:mike:home [2012/03/01 04:44] whitem12courses:cs211:winter2012:journals:mike:home [2012/03/28 03:18] – [Chapter 6] whitem12
Line 50: Line 50:
  
 ===== Chapter 5 ===== ===== Chapter 5 =====
 +Divide and Conquer
 ====Section 1: Mergesort==== ====Section 1: Mergesort====
 +Idea: Divide a list in half until you have sorted lists (all single entries) and then merge them back together as a sorted list such that the final list is a sorted version of the initial list.  Takes n steps to break down and n*log(n) steps to merge them back together.
 +=== Approaches ===
 +Two basic ways:
 +==Unrolling the Mergesort Recurrence==
 +Analyze the first few layers and generalize from there to unroll how the recursion takes place. 
 +==Substituting a Solution into the Mergesort Recurrence==
 +Guess what the solution is and then check it (this is good for merge sort since we know it takes n*log(n).
 +==Partial Substitution==
 +So if you don't know the constant then you can assume it exists and then check to make sure that it turns out right in the end and then work it back up to find the actual constant involved.
  
 +===== Chapter 6 =====
 +Dynamic Programing - Break down into sub problems, then build the problems back up to solve the large problem.
 +==== Weighted interval scheduling ====
 +Recursive algorithm: this is the first step in creating a dynamic algorithm.
 +=== How to do it ===
 +  - label the requests, and sort them in order of finishtime
 +  - Think of the optimal solution, either the last item is in it or isn't in it
 +  - Find the optimal solution involving the last one (so ignore all that don't finish before it starts) and the optimal solution that doesn't involve the last one.  Pick the one that has the larger weight.  Work this back recursively and then it will work its way back up to the beginning when it works its way through the call stack.
  
 +This is a problem because the call stack grows at very very fast rate, we want to avoid this, so we introduce the dynamic part.
  
 +By memorizing the result of a previous calculation, we reduce the number of calculations to O(n) so its goes a lot faster.
 +
 +You can use the Array of calculation choices to work your way back to find the optimal solution.  Doesn't add to the complexity but does add to memory needed.
 +
 +==== Memoization ====
  
  
courses/cs211/winter2012/journals/mike/home.txt · Last modified: 2012/03/28 04:00 by whitem12
CC Attribution-Noncommercial-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0