Presentation is loading. Please wait.

Presentation is loading. Please wait.

Yangjun Chen 1 Bipartite Graphs What is a bipartite graph? Properties of bipartite graphs Matching and maximum matching - alternative paths - augmenting.

Similar presentations


Presentation on theme: "Yangjun Chen 1 Bipartite Graphs What is a bipartite graph? Properties of bipartite graphs Matching and maximum matching - alternative paths - augmenting."— Presentation transcript:

1 Yangjun Chen 1 Bipartite Graphs What is a bipartite graph? Properties of bipartite graphs Matching and maximum matching - alternative paths - augmenting paths Hopcroft-Karp algorithm

2 Yangjun Chen 2 Bipartite Graph 1.A graph G is bipartite if the node set V can be partitioned into two sets V 1 and V 2 in such a way that no nodes from the same set are adjacent. 2.The sets V 1 and V 2 are called the color classes of G and (V 1, V 2 ) is a bipartition of G. In fact, a graph being bipartite means that the nodes of G can be colored with at most two colors, so that no two adjacent nodes have the same color.

3 Yangjun Chen 3 Bipartite Graph 3.we will depict bipartite graphs with their nodes colored black and white to show one possible bipartition. 4.We will call a graph m by n bipartite, if |V 1 | = m and |V 2 | = n, and a graph a balanced bipartite graph when |V 1 | = |V 2 |. v1v1 v2v2 v3v3 v4v4 v5v5 v6v6 v7v7 v8v8 v7v7 v8v8 v1v1 v3v3 v5v5 v2v2 v4v4 v6v6 Fig. 1 (a) (b)

4 Yangjun Chen 4 Properties Property 3.1 A connected bipartite graph has a unique bipartition. Property 3.2 A bipartite graph with no isolated nodes and p connected components has 2 p-1 bipartitions. For example, the bipartite graph in the above figure has two bipartitions. One is shown in the figure and the other has V 1 = {v 1, v 3, v 5, v 8 } and V 2 = {v 2, v 4, v 6, v 7 }.

5 Yangjun Chen 5 Properties The following theorem belongs to K ö nig (1916). Theorem 3.3 A graph G is bipartite if and only if G has no cycle of odd length. Corollary 3.4 A connected graph is bipartite if and only if for every node v there is no edge (x, y) such that distance(v, x) = distance(v, y). Corollary 3.5 A graph G is bipartite if and only if it contains no closed walk of odd length.

6 Yangjun Chen 6 Matching and Maximum Matching Maximum matching -A set of edges in a bipartite graph G is called a matching if no two edges have a common end nodes. -A matching with the largest possible number of edges is called a maximum matching. Example. A maximum matching for the bipartite graph in Fig. 1(b) is shown below. v7v7 v8v8 v1v1 v3v3 v5v5 v2v2 v4v4 v6v6 v7v7 v8v8 v1v1 v3v3 v5v5 v2v2 v4v4 v6v6

7 Yangjun Chen 7 Maximum Matching Maximum matching -Many discrete problems can be formulated as problems about maximum matchings. Consider, for example, probably the most famous: A set of boys each know several girls, is it possible for the boys each to marry a girl that he knows? This situation has a natural representation as the bipartite graph with bipartition (V 1, V 2 ), where V 1 is the set of boys, V 2 the set of girls, and an edge between a boy and a girl represents that they know one another. The marriage problem is then the problem: does a maximum matching of G have |V 1 | edges?

8 Yangjun Chen 8 Alternative and Augmenting Path Maximum matching Let M be a matching of a graph G. -A node v is said to be covered, or saturated by M, if some edge of M is incident with v. We will also call an unsaturated node free. -A path or cycle is alternative, relative to M, if its edges are alternatively in E\M and M. -A path is an augmenting path if it is an alternating path with free origin and terminus. -P - a path. C - a cycle. |P| - the numbers of edges in P |C| - the numbers of edges in C.

9 Yangjun Chen 9 Properties of Matchings Property 3.3 Let M be a matching and P an augmenting path relative to M. Then the symmetric difference of M and P, denoted M  P, is also a matching of G and |M  P| = |M| + 1. M  P = (M\P)  (P\M) Example. v4v4 u4u4 v1v1 v2v2 v3v3 u1u1 u2u2 u3u3 v5v5 v4v4 u4u4 v1v1 v2v2 v3v3 u1u1 u2u2 u3u3 v5v5 v4v4 u4u4 v1v1 v2v2 v3v3 u1u1 u2u2 u3u3 v5v5 v4v4 u4u4 v1v1 v2v2 v3v3 u1u1 u2u2 u3u3 v5v5 M:M: P:P: M  P: Fig. 2 (a) (b) (c) (d)

10 Yangjun Chen 10 Properties of Matchings Property 3.4 Let M and M’ be matchings in G. Then, each connected component of M  M’ is one of the following: (1)an even cycle with edges alternatively in M\M’ and M’\M, or (2)a path whose edges are alternatively in M\M’ and M’\M. v4v4 u4u4 v1v1 v2v2 v3v3 u1u1 u2u2 u3u3 v5v5 M’: v4v4 u4u4 v1v1 v2v2 v3v3 u1u1 u2u2 u3u3 v5v5 M:M: v4v4 u4u4 v1v1 v2v2 v3v3 u1u1 u2u2 u3u3 v5v5 M  M’: Fig. 3 (a) (b) (c)

11 Yangjun Chen 11 Properties of Matchings Proposition 3.5 Let M and M’ be matchings in G. If |M| = r, |M’| = s and s > r, then M  M’ contains at least s - r node-disjoint augmenting paths relative to M. Proof. Let the components of M  M’ be C 1, C 2,..., C k. Let f(C i ) = |C i  M’| - |C i  M| (1  i  k). Then it follows from Property 3.4 that f(C i )  {-1, 0, 1} for each 1  i  k. f(C i ) = 1 if and only if C i is an augmenting path relative to M. To complete the proof, we need only observe that = |M’\M| - |M\M’| = |M’| - |M| = s - r. Thus, there are at least s - r components with f(C i ) = 1, and at least s - r node-disjoint augmenting paths relative to M.

12 Yangjun Chen 12 Properties of Matchings Combining Proposition 3.5 with Property 3.3, we can deduce the following theorem (Berge, 1957). Theorem 3.6 M is a maximum matching if and only if there is no augmenting path relative to M. Proof. If-part. If there is no augmenting path, M must be a maximum matching. Otherwise, let M’ be a maximum matching. According to Proposition 3.5, M  M’ contains at least |M’| - |M| node-disjoint augmenting paths relative to M. Contradiction. On-if-part. If M is a maximum matching, there is definitely no augmenting path relative to M. Otherwise, let P be an augmenting path relative to M. Then, M  P is a larger matching than M.

13 Yangjun Chen 13 Properties of Matchings The above theorem implies the following property. Property 3.7 If M is a matching of G, then there exists a maximum matching M of G such that the set of nodes covered by M is also covered by M. Proof. If M is a maximum matching, the property trivially holds. Otherwise, consider an augmenting path P relative to M. Then, according to Property 3.1, M  P is also a matching of G with |M  P| = |M| + 1. Moreover, the nodes covered by M are also covered by M  P. Repeating the above process will prove the property.

14 Yangjun Chen 14 Properties of Matchings The following theorem was obtained by Dulmage and Mendelsohn (1958). Theorem 3.8 Let G be a bipartite graph with bipartition (V 1, V 2 ). Let M 1 and M 2 be matchings in G. Then, there is a matching M  M 1  M 2 such that M covers all the nodes of V 1 covered by M 1 and all the nodes of V 2 covered by M 2. Proof. Let U i be the nodes of V 1 covered by M i (i = 1, 2). Let W i be the nodes of V 2 covered by M i (i = 1, 2). Let G 1, G 2,..., G k be the connected components of M 1  M 2. By Property 3.4, each G i (1  i  k) is an even cycle or a path. Let M 1i = G i  M 1 and M 2i = G i  M 2. Define in each G i a matching  i : M1iM1iM2iM1iM1iM2i if G i is a cycle if there is a node v  V  (U 1 \U 2 ) if there is a node v  V  (W 2 \W 1 )  i = Then, it is not difficult to check that M = (M 1  M 2 )  1  2  k is the required matching.

15 Yangjun Chen 15 v4v4 u4u4 v1v1 v2v2 v3v3 u1u1 u2u2 u3u3 v5v5 M2:M2: v4v4 u4u4 v1v1 v2v2 v3v3 u1u1 u2u2 u3u3 v5v5 M1:M1: v4v4 u4u4 v1v1 v2v2 v3v3 u1u1 u2u2 u3u3 v5v5 M 1  M 2 : Fig. 3-1 U 1 = {v 1, v 3, v 4 }U 2 = {v 2, v 3, v 4, v 5 } W 1 = {u 1, u 2, u 3 }W 2 = {u 1, u 2, u 3, u 4 } G1G1 G2G2  1 = M 11 = G 1  M 1  2 = M 12 = G 2  M 1 G3G3  3 = M 23 = G 3  M 2 M = (M 1  M 2 )  1  2  3

16 Yangjun Chen 16 Properties of Matchings Theorem 3.9 A maximum matching M of a bipartite graph G can be obtained from any other maximum matching M’ by a sequence of transfers along alternating cycles and paths of even length. Proof. By Property 3.4, every component of M  M’ is an alternating even cycle or an alternating path relative to M’. By Property 3.3 and Theorem 3.6, a component of M  M’, if it is a path, must be of even length. (Otherwise, if it is an odd path, it must be an augmenting path relative to M or to M’, contradicting the fact that both M and M’ are maximum.) Then, changing M’ in each component in turn will transform M’ into M. v4v4 u4u4 v1v1 v2v2 v3v3 u1u1 u2u2 u3u3 v5v5 M2:M2: v4v4 u4u4 v1v1 v2v2 v3v3 u1u1 u2u2 u3u3 v5v5 M1:M1:

17 Yangjun Chen 17 v4v4 u4u4 v1v1 v2v2 v3v3 u1u1 u2u2 u3u3 v5v5 M2:M2: v4v4 u4u4 v1v1 v2v2 v3v3 u1u1 u2u2 u3u3 v5v5 M1:M1: v4v4 u4u4 v1v1 v2v2 v3v3 u1u1 u2u2 u3u3 v5v5 M 1  M 2 : G1G1 G2G2

18 Yangjun Chen 18 Properties of Matchings A perfecting matching of a graph G is a matching which covers every node of G. Clearly, if a graph has two perfect matchings M and M’, all components of M  M’ are even cycles. Therefore, according to Theorem 3.9, we can deduce the following result. Corollary 3.10 Assume that bipartite graph G has a perfect matching M. Then, any other perfect matching can be obtained from M by a sequence of transfers along alternating cycles relative to M. v3v3 u3u3 v1v1 v2v2 u1u1 u2u2 v3v3 u3u3 v1v1 v2v2 u1u1 u2u2 v3v3 u3u3 v1v1 v2v2 u1u1 u2u2 M1:M1: M2:M2:

19 Yangjun Chen 19 Algorithm Algorithms - finding a maximum matching Lemma 3.11 Let M be a matching with |M| = r and suppose that the cardinality of a maximum matching is s. Then, there exists an augmenting path relative to M of length at most 2  r/(s – r)  + 1. Proof. Let M’ be a maximum matching. Then, by Proposition 3.5, M  M’ contains s - r node-disjoint augmenting paths relative to M. It is easy to see that these paths contain at most r edges from M. So one of them must contain at most  r/(s – r)  edges from M and so at most 2  r/(s – r)  + 1 edges altogether.

20 Yangjun Chen 20 Algorithm Lemma 3.12 Let M be a matching and P be a shortest augmenting path relative to M. Let Q be an augmenting path relative to M  P. Then, |Q|  |P| + |P  Q|. Proof. Consider M’ = M  P  Q. Then, M’ is a matching. By Property 3.3, |M’| = |M  P| + 1 = (|M| + 1) + 1 = |M| + 2. According to Proposition 3.5, M  M’ contains at least two node- disjoint augmenting paths relative to M. Let P 1,..., P k (k  2) be such paths. Since P is a shortest augmenting path relative to M, we have |M  M’| = |P  Q|  |P 1 | +... + |P k |  2|P|. Note that |P  Q| = |P| + |Q| - |P  Q|  2|P|. Therefore, we have |Q|  |P| + |P  Q|. Note that M’ = M  P  Q.

21 Yangjun Chen 21 Algorithm Corollary 3.13 Let P be a shortest augmenting path relative to a matching M, and Q be a shortest augmenting path relative to M  P. Then, if |P| = |Q|, the paths P and Q must be node-disjoint. Moreover, Q is also a shortest augmenting path relative to M. Proof. According to Lemma 3.12, we have |P| = |Q|  |P| + |P  Q|. So P  Q = . Thus, P and Q are edge-disjoint. Assume that P and Q share a common node v. Consider the edge e incident with v in M  P. Then, P and Q must share e, contradicting P  Q = . Therefore, P and Q are also node-disjoint.

22 Yangjun Chen 22 Algorithm Hopcroft-Karp algorithm (1973) The whole computation process is divided into a number of stages, at which some partial matching has been constructed and some way is sought to increase it. At stage i, we have the matching M i and we search for {Q 1, Q 2,..., Q k }, a maximal set of node-disjoint, shortest augmenting paths, relative to M i. Then, according to Corollary 3.13, Q 2 is a shortest augmenting path relative to M  Q 1, Q 3 is a shortest augmenting path relative to (M  Q 1 )  Q 2,..., and Q k is a shortest augmenting path relative to (M  Q 1  Q 2...  Q k-2 )  Q k-1. Therefore, the new matching for the next stage is formed as M i+1 = M i  Q 1  Q 2...  Q k.

23 Yangjun Chen 23 Algorithm Proposition 3.14 Let s be the cardinality of a maximum matching in a bipartite graph G. Then, to construct a maximum matching by the above process requires at most 2  s 1/2  + 2 stages. Proof. It can be derived from Property 3.3 and Lemma 3.11. Since at each stage at most |E| edges will be accessed, the time complexity of the algorithm is bounded by O(|E|  s 1/2  ) = O (|E||V| 1/2 ).

24 Yangjun Chen 24 Algorithm Let M i be the matching of G produced at stage i. We define a directed graph G i with the same node set as G, but with edge set E(G i ) = {u  v | u  V 1, v  V 2, and (u, v)  E\M i }  {v  u | u  V 1, v  V 2, and (u, v)  M i }. v4v4 u4u4 v1v1 v2v2 v3v3 u1u1 u2u2 u3u3 v5v5 v6v6 u5u5 u6u6 v4v4 u4u4 v1v1 v2v2 v3v3 u1u1 u2u2 u3u3 v5v5 v6v6 u5u5 u6u6 v4v4 u4u4 v1v1 v2v2 v3v3 u1u1 u2u2 u3u3 v5v5 v6v6 u5u5 u6u6 Fig. 4 (a) (b) (c) V1:V1: V2:V2: V1:V1: V2:V2:

25 Yangjun Chen 25 Algorithm First step: From G i, construct a subgraph G i ’ described below. Let L 0 be the set of free nodes (relative to M i ) in V 1 and define L j (j > 0) as follows: E j-1 = {u  v  E(G i ) | u  L j-1, v  L 0  L 1 ...  L j-1 }, L j = {v  V(G i ) | for some u, u  v  E j-1 }. Define j* = min{j | L j  {free nodes in V 2 }  Ф}. G i ’ is formed with V(G i ’) and E(G i ’) defined below. If j* = 1, then V(G i ’) = L 0  (L 1  {free nodes in V 2 }), E(G i ’) = {u  v | u  L 0 and v  {free nodes in V 2 }}.

26 Yangjun Chen 26 Algorithm First step: If j* > 1, then V(G i ’) = L 0  L 1 ...  L j*-1  (L j*  {free nodes in V 2 }), E(G i ’) = E 0  E 1 ...  E j*-2  {u  v | u  L j*-1 and v  {free nodes in V 2 }}. With this definition of the graph G i ’, directed paths from L 0 to L j* are precisely in one-to-one correspondence with shortest augmenting paths relative to M i in G.

27 Yangjun Chen 27 Algorithm Second step: In this step, we will traverse G i ’ in a depth-first searching fashion to find a maximal set of node-disjoint paths from L 0 to L j*. For this, a stack structure stack is used to control the graph exploring. In addition, we use c-list(v) to represent the set of v’s child nodes.

28 Yangjun Chen 28 Algorithm Algorithm finding-augmenting-paths(G i ’) begin 1.let x be the first element in L 0 ; 2.push(x, stack); mark v; 3.while stack is not empty do { 4.v := top(stack); 5.while c-list(v)  Ф do { 6.let u be the first element in c-list(v); 7.if u is marked then remove u from c-list(v) 8.else {push(u, stack); mark u; v := u;} 9.} 10.if v is neither in L j* nor in L 0 then pop(stack) 11.else {if v is in L j* then output all the elements in stack; (*all the elements in stack make up an augmenting path.*) 12.remove all elements in stack; 13.let v be the next element in L 0 ; 14.push(v, stack); mark v; 15.} end

29 Yangjun Chen 29 Example Trace Example. v4v4 u4u4 v1v1 v2v2 v3v3 u1u1 u2u2 u3u3 v5v5 v6v6 u5u5 u6u6 v4v4 u4u4 v1v1 v2v2 v3v3 u1u1 u2u2 u3u3 v5v5 v6v6 u5u5 u6u6 v4v4 u4u4 v1v1 v2v2 v3v3 u1u1 u2u2 u3u3 v5v5 v6v6 u5u5 u6u6 M1:M1: G1:G1: G 1 ’ will be constructed as follows: L 0 = {v 1, v 4, v 5 } E 0 = {(v 1, u 1 ), (v 4, u 4 ), (v 4, u 5 ), (v 5, u 3 ), (v 5, u 5 )} L 1 = {u 1, u 3, u 4, u 5 }./*j* = 1 since u 5 is free.*/ Fig. 5 (a) (b) (c)

30 Yangjun Chen 30 Example Trace Since L 1 contains free node u 5 in V 2, j* = 1. Therefore, we have V(G 1 ’) = {v 1, v 4, v 5 }  {u 5 }, and E(G 1 ’) = {(v 4, u 5 ), (v 5, u 5 )} Note that v 4  u 5 is an augmenting path relative to M 1, and v 5  u 5 is another. By applying the second step of Hopcroft- Karp algorithm to G 1 ’, v 4  u 5 will be chosen, yielding a new matching M 2 = M 1  {v 4  u 5 } as shown in Figure 6. v4v4 u4u4 v1v1 v2v2 v3v3 u1u1 u2u2 u3u3 v5v5 v6v6 u5u5 u6u6 Fig. 6

31 Yangjun Chen 31 Example Trace At a next stage, we will construct G 2 as shown in Figure 7. G 2 ’ will then be constructed as follows: L 0 = {v 1, v 5 }, E 0 = {(v 1, u 1 ), (v 5, u 3 ), (v 5, u 5 )}, L 1 = {u 1, u 3, u 5 }, E 1 = {(u 1, v 6 ), (u 3, v 2 ), (u 5, v 4 )}, L 2 = {v 2, v 4, v 6 }, E 2 = {(v 2, u 2 ), (v 4, u 4 ), (v 6, u 6 )}, L 3 = {u 2, u 4, u 6 }. /*j* = 3 since u 2 and u 6 are free.*/ v4v4 u4u4 v1v1 v2v2 v3v3 u1u1 u2u2 u3u3 v5v5 v6v6 u5u5 u6u6 Fig. 7

32 Yangjun Chen 32 Example Trace Since L 3 contains two free nodes u 2 and u 6 in V 2, j* = 3. So we have V(G 2 ’) = L 0  L 1  L 2  {u 2, u 6 }, and E(G 2 ’) = E 0  E 1  {(v 2, u 2 ), (v 6, u 6 )}. In Figure 8, we show G 2 ’, which contains two augmenting paths P 1 and P 2, where P 1 = v 1  u 1  v 6  u 6 and P 2 = v 5  u 3  v 2  u 2. v4v4 u4u4 v1v1 v2v2 v3v3 u1u1 u2u2 u3u3 v5v5 v6v6 u5u5 u6u6 Fig. 8

33 Yangjun Chen 33 Example Trace In Figure 8, we show G 2 ’, which contains two augmenting paths P 1 and P 2, where P 1 = v 1  u 1  v 6  u 6 and P 2 = v 5  u 3  v 2  u 2. By applying the second step of Hopcroft-Karp algorithm, these two augmenting paths will be found. The maximum matching M 3 = M 2  P 1  P 2 is shown in Figure 9. v4v4 u4u4 v1v1 v2v2 v3v3 u1u1 u2u2 u3u3 v5v5 v6v6 u5u5 u6u6 Fig. 9

34 Yangjun Chen 34 Example Trace In order to have a better understanding of the second step of Hopcroft-Karp algorithm, we trace the execution steps when applying it to the graph shown in Figure 8. v4v4 u4u4 v1v1 v2v2 v3v3 u1u1 u2u2 u3u3 v5v5 v6v6 u5u5 u6u6 Step 1: Step 2: Step 3: L 0 = {v 1, v 5 } push(v 1, stack); mark v 1 ; c-List(v 1 ) = {u 1 } push(u 1, stack); mark u 1 ; c-List(u 1 ) = {v 6 } push(v 6, stack); mark v 6 ; v1v1 u1v1u1v1 v6u1v1v6u1v1 v4v4 u4u4 v1v1 v2v2 v3v3 u1u1 u2u2 u3u3 v5v5 v6v6 u5u5 u6u6 M3:M3: G3’:G3’:

35 Yangjun Chen 35 v4v4 u4u4 v1v1 v2v2 v3v3 u1u1 u2u2 u3u3 v5v5 v6v6 u5u5 u6u6 Step 4: Step 5: c-List(v 6 ) = {u 6 }; push(u 6, stack); mark u 6 ; c-List(u 6 ) =  ; u 6 is in L 3 ; /* j* = 3.*/; Output all the nodes in stack, which make up an augmenting path: v 1  u 1  v 6  u 6 ; empty stack; push(v 5, stack); mark v 5 ; /* v 5 is the next element in L 0.*/ v5v5 u6v6u1v1u6v6u1v1 L 3 = {u 2, u 4, u 6 } L 0 = {v 1, v 5 }

36 Yangjun Chen 36 v4v4 u4u4 v1v1 v2v2 v3v3 u1u1 u2u2 u3u3 v5v5 v6v6 u5u5 u6u6 Step 6: Step 7: Step 8: c-List(v 1 ) = {u 5, u 3 }; push(u 5, stack); mark u 5 ; c-List(u 5 ) = {v 4 }; push(v 4, stack); mark v 4 ; c-List(v 4 ) =  ; v 4 is neither in L 3 nor in L 0 ; /*j* = 3. */ pop(stack); u5v5u5v5 v4u5v5v4u5v5 u5v5u5v5 L 3 = {u 2, u 4, u 6 } L 0 = {v 1, v 5 }

37 Yangjun Chen 37 v4v4 u4u4 v1v1 v2v2 v3v3 u1u1 u2u2 u3u3 v5v5 v6v6 u5u5 u6u6 Step 9: Step 10: Step 11: c-List(u 5 ) = {v 4 }; v 4 is marked; remove v 4 from the list; c-List(u 5 ) =  ; u 5 is neither in L 3 nor in L 0 ; pop(stack); c-List(v 5 ) = {u 3 }; /* u 5 is from c-List(v 5 ).*/ push(u 3, stack); mark u 3 ; c-List(u 3 ) = {v 2 }; push(v 2, stack); mark v 2 ; u3v5u3v5 v2u3v5v2u3v5 v5v5 L 3 = {u 2, u 4, u 6 } L 0 = {v 1, v 5 }

38 Yangjun Chen 38 v4v4 u4u4 v1v1 v2v2 v3v3 u1u1 u2u2 u3u3 v5v5 v6v6 u5u5 u6u6 Step 12: Step 13: c-List(v 2 ) = {u 2 }; push(u 2, stack); mark u 2 ; c-List(u 2 ) =  ; u 2 is in L 3 ; /* j* = 3. */; Output all the nodes in stack, which make up an augmenting path: v 5  u 3  v 2  u 2 ; empty stack; Now stack is empty and therefore no element will be pushed into stack. Stop. u2v2u3v5u2v2u3v5 L 3 = {u 2, u 4, u 6 } L 0 = {v 1, v 5 }

39 Yangjun Chen 39 Bipartite Graph Hopcroft-Karp algorithm (1973) In the above example, we choose the matching shown in Figure 5(b) as an initial matching for ease of explanation. In fact, we can choose any edge in the bipartite graph as an initial matching and then apply Hopcroft-Karp algorithm. Of course, the final matching found may be different from that shown in Figure 9.

40 Yangjun Chen 40 Project Requirement 1.Implementation of the algorithm in C++. 2.Documentation.


Download ppt "Yangjun Chen 1 Bipartite Graphs What is a bipartite graph? Properties of bipartite graphs Matching and maximum matching - alternative paths - augmenting."

Similar presentations


Ads by Google