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
courses:cs211:winter2012:journals:paul:home [2012/04/04 17:00] – [Chapter 6] nguyenpcourses:cs211:winter2012:journals:paul:home [2012/04/06 02:17] (current) – [Chapter 7] nguyenp
Line 744: Line 744:
               * Locally optimal, but not globally optimal (it's very easy to think of a counter example, counter example is on page 339 in book)               * Locally optimal, but not globally optimal (it's very easy to think of a counter example, counter example is on page 339 in book)
           * Awesome Solution: Residual Graphs           * Awesome Solution: Residual Graphs
 +              * Edges have a capacity, but also a flow
 +              * We don't have to use all of it at once
 +              * Residual edge is one where you have some going one way and some going the other
 +              * The Ford-Fulkerson Algorithm uses residual edges and works awesomely (optimal)
 +                  * page 342 - 344
 +                  * Informal explanation
 +                      * graphs
 +                      * keep updating the residual edges using the following formula:
 +                          * If edge is the same as it was originally, set the forward rate to the bottle neck + original rate (which is the edge with the smallest flow rate)
 +                          * Otherwise, set the backwards residual rate to what it originally was minus the bottle neck
 +  * Section 7.2 - Maximum Flows and Minimmum Cuts in a Network
 +      * Cut: s-t cut is a partition (A,B) where s is in A and t is in B
 +      * Problem: Find an s-t cut of minimum capacity
 +      * The capacity of a cut is the sum of all the possible stuff that can go through the edge at once
 +      * Flow Value Lemma: Let f be any flow, and let (A, B) be any s-t cut. Then, the value of the flow is = f_out(A) – f_in(A).
 +      * Weak Duality: let f be any flow and let (A, B) be any s-t cut. Then the value of the flow is at most the cut’s capacity.
 +      * Corollary: Let f be any flow, and let (A, B) be any cut. If v(f) = cap(A, B), then f is a max flow and (A, B) is a min cut
 +      * Augmenting path theorem: Flow f is a max flow iff there are no augmenting paths
 +      * Max-flow min-cut theorem: The value of the max flow is equal to the value of the min cut.
 +          * More explanation on page 350
 +          * Boom and we are done. Just use the same stuff as in the past section and we have all we need. 
 +  * Section 7.5 - A First Application: Bipartite Matching Problem
 +      * Given an undirected bipartite graph
 +      * We must match so each node appears at most once on each edge
 +      * How do we find one with the max number of nodes? This is our problem.
 +      * Here's how we do it. We got a bunch of red and blue nodes. Add nodes s and t, which will be the start and end nodes. Have the start node s have a unit edge (edge of size 1) connect it to all the red nodes. Have all the blue nodes have a unit edge connect them to the end node t. Still have same edges in the middle. 
 +      * Now, use same algorithm as in the first section. BOOOM!!! Right? Yep. It's pretty intuitive, these later sections are more like practical uses rather than actual algorithms. I guess this is kind of good since pretty much all computer science problems go back to graph theory. 
 +      * Extensions: The structore of bipartite graphs with no perfect matching
 +          * Dicusses how to tell if it is impossible to find a perfect matching in a bipartite graph. 
 +          * Can easily find an algorithm based on the following theorem:
 +              * Assume that the bipartite graph G=(V,E) has two sides X and Y such that |X| and |Y|. Then the graph G either has a perfect matching or these is a subset A such that |\G(A)|<|A|. A perfect matching or an appropriate subset A can be found in O(mn) time. 
 +  * Section 7.7 - Extensions to Max-Flow Problem
 +      * Circulations with Demands
 +          * We have a directed graph
 +          * edges have capacities
 +          * nodes have supply and demands
 +          * A circulation is a function that satisfies the following
 +              * the flows for a particular edge are always less than the capacity (makes sense and is very intuitive)
 +              * the demand for a node is equal to the stuff coming in minnus the stuff going out (the the demand that his node has? I guess that makes enough sense...)
 +          * To keep the world form exploding, the sum of supplies == sum of demands
 +          * Algorithm: more details on pg 381 and 382
 +              * Add a new source s and sink t
 +              * For each v with d(v) < 0, add edge (s, v) with capacity -d(v)
 +              * For each v with d(v) > 0, add edge (v, t) with capacity d(v)
 +          * MAGIC: G has circulation iff G' has max flow of value D
 +          * MORE MAGIC : Given (V, E, c, d), there does not exist a circulation iff there exists a node partition (A, B) such that the sum of all the demands is greater than cap(A,B)
 +          * These two pretty much solve the problem for us.  more details are on page 382 if you get confused rereading this sometime in the future
 +      * Circulation with Demands and Lower Bounds
 +          * Same givens as last problem
 +          * except!!!! we have lower bounds on each edge
 +          * algorithm on page 384
 +          * Here's how we do
 +          * we set teh flow along an edge to be the lower bound and then we update the demand on both nodes attached to it. 
 +          * the rest is self explanatory
courses/cs211/winter2012/journals/paul/home.1333558802.txt.gz · Last modified: 2012/04/04 17:00 by nguyenp
CC Attribution-Noncommercial-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0