1 G1 2 6 3 5 1 G2 4 2 6 1 2 3 5 G3 4 5 4 G1 is regular (3-regular or regular of degree 3). G2 is a spanning subgraph of G1. G3 is an induced subgraph of G1 by {1, 2, 4, 5}. (or G3 is a subgraph of G1 induced by {1, 2, 4, 5}) 1 Prim’s algorithm Assume that the starting vertex is 1. 2 Sollin’s algorithm 3 Theorem. Suppose that G = (V, E) is a directed graph and between every two vertices u, v of G, there is one arc (<u, v> or <v, u>). Then there exists a directed Hamiltonian path in G. Proof. Arbitrarily construct a directed path <v1, v2>, <v2, v3>, , <vm1, vm> in G. Suppose that m < |V| and v doesn’t appear in the path. If <v, v1> E, then add <v, v1> to the path. Otherwise, <v1, v> E. If <v, v2> E, then add <v1, v> and <v, v2> to the path. Otherwise, <v2, v> E. . . . Finally, either <vk, v> and <v, vk+1> are added to the path for some 1 k m 1, or <vm, v> is added to the path. 4 Theorem. Suppose that G = (V, E) is an undirected graph and |V| = n 2. Let di be the degree of vertex vi. If di + dj n 1 for all vi, vj V and vi vj, then G has a Hamiltonian path. Proof. First, di + dj n 1 for all vi vj can assure that G is connected, as explained below. Suppose to the contrary that G has two components C1 and C2 of n1 vertices and n2 vertices, respectively. For every vertex v1 of C1 and every vertex v2 of C2, d1 + d2 (n1 1) + (n2 1) n1 + n2 2 n 2, a contradiction. Then construct a Hamiltonian path in G as follows. Step 1. Arbitrarily construct a path (v1, v2), (v2, v3), , (vm’1, vm’). Step 2. Extend the path by repeatedly adding a vertex v to the head (or tail) if (v, v1) E ((vm’, v) E). 5 Suppose that the path (v1, v2), (v2, v3), , (vm1, vm) results finally. If m = n, then the path is Hamiltonian. Step 3. (m n 1) Construct a cycle on v1, v2, , vm. If (v1, vm) E, then a desired cycle is immediate. Otherwise ((v1, vm) E), select a pair of vertices vt1, vt such that (vt1, vm) E and (v1, vt) E, where 3 t m 1. Delete (vt1, vt) and a desired cycle is as follows. Notice that d1 m 2 and dm m 2 (because (v1, vm) E)). If no such (vt1, vt) exists, then dm (m 2) (d1 1) (“ 1” excludes the case of t = 2), i.e., d1 + dm m 1 < m ( n 1), a contradiction. 6 Step 4. Extend the cycle to a path of length > m 1. Suppose v {v1, v2, , vm}. Now that G is connected, v is reachable to some vertex, say vr, of the cycle. A desired path can be obtained by removing (vr1, vr) (or (v1, vt) if r = t). Step 5. Repeat Step 2 to Step 4 until a Hamiltonian path results. 7 Theorem. Suppose that G = (V, E) is an undirected graph and |V| = n 3. Let di be the degree of vertex vi. If di + dj n for every (vi, vj) E and vi vj, then G has a Hamiltonian cycle. Proof. Suppose that G has no Hamiltonian cycle. Augment G with a maximal number of edges so that the resulting graph, denoted by H, has no Hamiltonian cycle. (i.e., any extra edge added to H will induce a Hamiltonian cycle in H) Without loss of generality, assume that (v1, v2) is not an edge of H. If (v1, v2) is added to H, then there is a Hamiltonian cycle in H. Assume that the Hamiltonian cycle is as follows. v1 v2 v3 vi1 vi … vn1 vn v1 For each 3 i n, (v2, vi) or (v1, vi1) is not an edge of H, for otherwise H has a Hamiltonian cycle as follows. 8 v2 vi vi+1 vi2 i=3: v4 v3 v 2 v2 vi-1 v1 vi (v1, v2) E, (v2, v3) E or (v2, v3) E 4in: vn1 vn v1 vi1 (v1, vi1) E or (v2, vi) E d1 + d2 (1 + (n 3)) + 1 = n 1, a contradiction (“+ 1” because (v1, vn) E or (v1, vn) E) 9 Proof. () Clearly. () By induction on |R|, prove that if |W| |ADJ(W)| for every W R, then G has a complete matching. Induction basis. |R| = 1. Induction hypothesis. Suppose that it holds for |R| m 1. Then, consider the situation of |R| = m below. Case 1. |W| < |ADJ(W)| for every W R G’ G x y or |R| = |ADJ(R)| and |W| < |ADJ(W)| for every W R. G’ G x y 10 Arbitrarily pick an edge (x, y), where x R and y S. Let G’ be the graph obtained from G by removing x, y. For every W’ R {x}, |W’| < |ADJ(W’)| in G assures |W’| |ADJ(W’)| in G’ (the equality holds as |W’| = |ADJ(W’)| 1 in G and y ADJ(W’)). G’ has a complete matching by induction hypothesis G has a complete matching 11 Case 2. |W| = |ADJ(W)| for some W R. G+ : the subgraph of G induced by W ADJ(W). G++ : the subgraph of G induced by (R W) (S ADJ(W)). In G+, |W’| |ADJ(W’)| for every W’ W. (Since ADJ(W’) in G+ is identical with ADJ(W’) in G, |W’| > |ADJ(W’)| in G+ also implies |W’| > |ADJ(W’)| in G, a contradiction.) G+ has a complete matching by induction hypothesis. 12 In G++, |W”| |ADJ(W”)| for every W” R W, as explained below. If |W”| > |ADJ(W”)| for some W” R W, then |W” W| = |W”| + |W| > |ADJ(W”)| + |ADJ(W)| |ADJ(W” W)|, a contradiction to the assumption of G ! G++ has a complete matching by induction hypothesis. G has a complete matching. 13