Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionLast revisionBoth sides next revision | ||
courses:cs211:winter2012:journals:paul:home [2012/04/06 01:44] – [Chapter 7] nguyenp | courses:cs211:winter2012:journals:paul:home [2012/04/06 02:10] – [Chapter 7] nguyenp | ||
---|---|---|---|
Line 771: | Line 771: | ||
* 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. | * 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. | * 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. | ||
- | * | + | |
+ | * 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)|< | ||
+ | * 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 | ||
+ | |