# Chapter 9 Graphs.

## Presentation on theme: "Chapter 9 Graphs."— Presentation transcript:

Chapter 9 Graphs

Old subject with many modern applications
Chapter 9. Graphs Old subject with many modern applications Introduced by L. Euler, who used it to solve the famous Konisberg bridge problem. Example applications: determine if a circuit can be implemented on a planer circuit board (planer graph) distinguish b/t two chemical compounds with the same molecular formula but with different structures. determine if two computers are connected in a network. schedule (with task precedence information given, find an execution plan.) ..

Representing graph and graph isomorphism Connectivity
table of contents Introduction Graph terminology Representing graph and graph isomorphism Connectivity Euler and Hamilton paths Shortest path problems Planer graphs Graph coloring

multi-graph: allow multiple edges b/t two distinct vertices.
9.1 Introduction Graph: discrete structure consisting of vertices and edges that connect these vertices. Types of graphs: simple graph: G=(V,E) where E is a set of unordered pairs of distinct elements of V. multi-graph: allow multiple edges b/t two distinct vertices. pseudograph: allow self-loop and multiple edges digraph (directed graph): edges are ordered pairs of vertices. Directed multigraph: allow multiple edges b/t any two (possibly identical) vertices. Hybrid Graph: allow both directed and undirected edges. Weighted (or labeled) graph: Each edge is associated with a weight (or a label).

Def 2: (multigraph) G=(V,E,f) where
Formal definitions Def 2: (multigraph) G=(V,E,f) where f: E-> {{u,v} | u,v V and u  v} with f(e) containing the two vertices the edge e is connected to. If f(e1) = f(e2) ==> e1 and e2 are parallel or multiple edges. Def 3: A pseudo graph G = (V,E,f) where f: E -> {{u,v} | u,v  V}. Note: if f(e) = {u} ==> e is a self-loop on u. Note: If there is no worry of confusion, we usually use {u,v} to identify the edge e with f(e) = {u,v}. Def 4: a digraph G=(V,E) where E is a subset of V2. Def 5: A directed multigraph G=(V,E,f) where f: E -> V2. If f(e1) = f(e2) ==> e1 and e2 are parallel or multiple edges. note: f(e1) = (u,v) /\ f(e2) = (v,u) /\ u ¹ v => e1 and e2 are not parallel edges.

Labeled (or weighted) grapgh
A labeled graph G = (V,E,f, L, l) where (V,E,f) is a graph of any kind (without labeling), L is the set of labels, and l: E->L is the labeling function. if f(e) = w, we say e is an w-labeled edge or simply an w-edge. Hyper graph: edges can connect more than 2 vertices: e.g hyper k-graph G=(V,E,f) where f:E-> Vk. Summary: type directed edge? multiedge? loop? simple no no no multigraph no yes no pseudo no yes yes digraph yes no yes directed- yes yes yes -multigraph

Ex1: Niche overlap graphs in ecology: G=(V,E) is a simple graph where
Graph models Ex1: Niche overlap graphs in ecology: G=(V,E) is a simple graph where V is the set of species. {u,v}  E iff u and v compete for food. Ex2:V: Persons (u,v)  E iff u can influence v. =>Influence graph: (digraph) (u,v)  E iff u, v know each other=> Acquaintance graph (undirected graph) Ex3: Round-Robin Tournaments One where each team plays each other team exactly once. V: the set for all teams (u,v) in E iff team u beats team v. Ex: 4-team Round-Robin tournament A D C B

Ex 4: (precedence graph and concurrent processing) eg: 1. x := y +1;
Graph model (cont'd) Ex 4: (precedence graph and concurrent processing) eg: 1. x := y +1; 2. z := f(x) => (1) must be executed before (2) no matter which processors execute (1) or (2), since (2) must use the execution result of (1). The executed-before relation in a program can be represented by a digraph G=(V,E) where V= the set of statements in the program (u,v)  E means u must be executed before v. note: if (u,v) and (v,w)  E, ==> (u,w)  E . Hence E is transitive.

Precedence graph of a program
Ex 4: s1: a := 0; s2: b := 1; s3: a := a+1; s4: d:= b+a; s5: e := d+1; s6: e := c+d ==> What is the precedence graph of this program? s1 s2 s3 s4 s6 s5

Precedence graph of a program
Ex 4: s1: a := 0; s2: b := 1; s3: a := a+1; s4: d:= b+a; s5: e := d+1; s6: e := c+d ==>Problems: 1. Minimum time needed to complete the program using multiple processors? (Depth) => length of longest paths +1 2. Minimum # of processors needed to complete the program in minimum time ? (Width) => p1: [s1,s3,s4,s6], p2:[s2,-,-,s5] s1 s2 s3 s4 s6 s5

Def 1: G = (V,E) : undirected graph if u --e-- v ==>
9.2 Graph terminology Def 1: G = (V,E) : undirected graph if u --e-- v ==> u and v are adjacent (or neighbors) Edge e is incident with u (& v). e connects u and v. u and v are end points of e. Def 2: G=(V,E): undirected graph; v  V ==> [degree of v:] deg(v) = #edges incident with it = |{e | v is an end point of e and e is an edge}|. If deg(v) = 0 ==> v is isolated. If deg(v) = 1 ==> v is pendant (or hang). Ex: In Fig 1, E has degree 3, D is pendant and G is isolated. G E F D C B A

Theorem 1: G = (V,E) : a undirected graph
Handshaking theorem Theorem 1: G = (V,E) : a undirected graph ==> S v  V deg(v) = 2 |E|. // 插孔數 = 插頭數 pf: Simple induction on the number of edges |E|. (Intuition: vertex deg = socket, edge end = plug ) Ex: G=(V,E) with |V|=10 & each vertex with degree 6. ==> |E| = ? Corollary: The sum of the degrees of the vertices of an undirected graph is even. Theorem 2: The number of vertices in a graph with odd degree is even. pf: Sv in V deg(v) = Sv in V /\ deg(v) is odd deg(v) +Sv in V /\ deg(v) is even deg(v) ==> Sv in V /\ deg(v) is odd deg(v) is even ==> |{v in V | deg(v) is odd}| is even. QED

Terminology for digraphs
Def 3: G=(V,E): a digraph if u --e--> v then u is adjacent to v v is adjacent from u u is the initial (or starting) vertex of e v is the end (or terminal) vertex of e e is an edge from u to v. Def. 4: [in-degree; out-degree] In-deg(v) = #edge coming into v = |{ e  E | v is the terminal vertex of e}| . out-deg(v) = #edge going out from v = |{ e  E | v is the starting vertex of e}| . Theorem 3: Sv in V in-deg(v) = Sv in V out-deg(v) = |E|.

underlying undirected graph
G = (V,E,f) : a directed graph ==> Its underlying undirected graph is a pseudo graph G'=(V,E,f') where f':E -> {{u,v} | u,v  V} s.t. f'(e) = {a,b} iff f(e) = (a,b). Note: 1. Both G and G' has the same number of edges (= |E| ). 2. If both (u,v) and (v,u) are edges in G ==> (u,v) and (v,u) are two distinct edges in G'. Ex: G=({1,2,3}, {(1,2),(1,2),(1,3),(2,3),(3,2)}) ==> G' = ?

Ex 4: complete graphs Kn = (V,E) where
Special simple graphs Ex 4: complete graphs Kn = (V,E) where |V|= n and E = {{x,y} | x and y are distinct vertices of V}. Ex: K1,..., K5 = ? Ex 5: Cycles: Cn (n >2) = (V, E) where V = {1,2,..., n} and E = {{i, i+1} | i = 1,..., n-1} U {{n, 1}}. Ex: C3,C4,C5,C6 = ? Ex 6: wheels: (n > 2) Wn = (V,E) where V = {0,1,...,n} and E = {{0, i } | i = 1,...,n} U {{i,i+1} | i = 1,...,n-1} U {{n,1}}. W3,W4,W5 = ? Ex7: n-cubes Qn = (V,E) where V = {0,1}n is the set of all bit strings of length n and E ={{x,y} | x and y differ at exactly one position.} Ex: and is connected. Ex: Q1, Q2, Q3, Q4 = ?

Ex8: Is C6 bipartite ? (yes! why?) Ex9: Is K3 bipartite ? (no! why ?)
Bipartite Graphs Def 5: G = (V,E) is bipartite iff there is a binary partition {V1,V2} of V s.t. for all e  E, one end point of E is in V1 and the other end point is in V2. Ex8: Is C6 bipartite ? (yes! why?) Ex9: Is K3 bipartite ? (no! why ?) Ex10: Which of Fig G and H is bipartite ? Ex11: Km,n (complete bipartite graph) Km,n = ({u1,...,um} U {v1,...,vn}, E} , where E = {{ui, vj} | i=1..m v = 1..n} eg: K2,3, K3,3 = ? problem: Km,n has ? edges f g a b c d e G f e a b d c H

Ex 13: interconnection network for processors
Types of connections Linear array: mesh Hyper cube (m-cube) Main measures: 1. #links longest distance linear array n n-1 mesh 2sqrt(n)(sqrt(n)-1) 2(sqrt(n) -1) m-cube(n=2m) nm/2 = O(n lg n) m = lg n

Def 6: [subgraph] G=(V,E): a graph H= (V',E') is a subgraph of G iff
New graphs from old Def 6: [subgraph] G=(V,E): a graph H= (V',E') is a subgraph of G iff V'Í V and E' Í E and H is a graph (i.e., if e Î E' is an edge connecting u and v in V, then u, v must belong to V'.) Ex: G= K5; find a subgraph H of K5. Def 7: [union of simple graphs] G1=(V1,E1); G2=(V2,E2): two graphs. ==> G1UG2 =def (V1 U V2, E1U E2) Note: Not only V1 and V2, but also E1 and E2 may overlap. Ex:G1 = ({a,b,c,d,e}, {ab,bc,ce,be,ad,de}) G2 = ({a,b,c,d,f}, {ab,bc,bd,bf}} ==> G1 U G2 = ? Def 7' : Disjoint union of graphs: Disjoin union of G1 and G2 = ?

9.3 Graph representation and Graph isomorphism
Graph representation : [suitable only for finite graphs] adjacent list (for graphs w/o multiple edges) :O(|E|+|V|) adjacent matrices: O(|V|2) incident matrices (or list) : O(|V|x|E|). adjacent list: for each vertex v, a[v] is the list of all vertices adjacent with/from v. adjacent matrix: M[u,v]=1 iff {u,v} (or (u,v) if directed) is an edge. incident matrix: I[u,e] = 1 iff u  f(e), or (for directed graph) i[u,e]= 1 (or -1) iff u is the starting (or ending) vertex of e. Ex: (P612 Fig1&Fig2)

Def . 1: G1=(V1,E1), G2=(V1,E2): two simple or digraphs
Graph isomorphism Def . 1: G1=(V1,E1), G2=(V1,E2): two simple or digraphs G1 and G2 are isomorphic iff \$ a bijection h:V1->V2 s.t. for all u,v in V1, {u,v} (or (u,v)) Î E1 iff {h(u),h(v)} (or (h(u),h(v))) Î E2. Such h is called an isomorphism (b/t G1 and G2). Ex 8: Are G = ({1234}, {12,23,34,41}) and H=({abcd},{ad,ac,bc,bd}) isomorphic ? Fact: If G1 and G2 are isomorphic ==> |V1|=|V2| & |E1|=|E2|. and G1 and G2 has the same degree type. Def: For each G=(V,E), type(G) is the multiset {deg(v) | v  V}.

Def 1: G = (V,E,f): an undirected multi-graph
9.4 Connectivity Def 1: G = (V,E,f): an undirected multi-graph A path a of length n > 0 from u to v is a sequence of edges e1, e2, ...,en s.t. f(e1) = {u,x1}, f(e2) = {x1,x2},…,f(en) = {xn-1,v}. e e e e e e en en u=x0----x1-----x2----x3----x4----x5---- ….----xn-1----xn=v If G is a simple graph ==> a can be identified by the sequence of vertices: x0=u, x1,..., xn-1, xn = v. a is a circuit (or cycle) iff x0 = xn. a is simple if all edges in the path are distinct (i.e., for all 0≤ i<j≤ n, ei ¹ ej ).

Def. 2: G = (V,E,f): a directed multigraph
Connectivity (cont'd) Def. 2: G = (V,E,f): a directed multigraph A path a of length n > 0 from u to v is a sequence of edges e1, e2, ...,en s.t. f(e1) = (u,x1), f(e2) = (x1,x2),...f(en) = (xn-1,v). If G is a digraph ==> a can be identified by the sequence of vertices: x0=u, x1,..., xn-1, xn = v. a is a circuit (or cycle) iff x0 = xn. a is simple if all edges in the path are distinct (i.e., for all 0<i<j<n+1, ei ¹ ej ). Def 3: A undirected graph is connected if there is a path between every pair of distinct vertices.

Theorem about simple paths
Theorem 1: There is a simple path between every pair of distinct vertices of a connected undirected [multi-]graph. Pf: (u,v): any two distinct vertices of G. Since G is connected, there exist paths from u to v. Let a = e1,e2,...,en be any path of least length from u to v. Then a must be a simple path. If it were not, then there would be 0£ i <j £n s.t. ei = ej. ==> the path b = e1,..,ei-1,ej+1,..,en or e1,..,ei,ej+1,..,en is another path from u to v with length < |a|, a contradiction!. QED ..... ...... u x1 x2 xi-1 xi xj-1 xj xj+1 v e1 e2 ei ej ej+1 reaching xi-1 means reaching xj if xi-1 = xj reaching xi means reaching xj if xi = xj

..... ...... ..... ...... u x1 x2 xi-1 xi xj-1 xj xj+1 v e1 e2 ei ej

A theorem about simple circuits
G=(V,E) : a undirected multi-graph, u,v: two vertices in G. Theorem: if there are two distinct simple paths from u to v, then there is a simple circuit in G. Pf:Let a1: x0 --(e1)-- x1 --(e2)-- x2 --(e3)--…--(et)--xt--(et+1)--xt+1--…---xn=v, and a2: x0 --(e1)-- x1 --(e2)-- x2 --(e3)--…--(et)--xt--(e’t+1)--yt+1--…---ym=v, be two distinct simple paths fro u to v in G, if either a1 or a2 contains a (simple) circuit, then we are done. Otherwise let et+1, e’t+1 the first edges with et+1 ≠e’t+1 . let J be the least number in {t+1,…,m} such that yJ = xs where s is any vertex occurring in path a1 (I.e., yJ=xs ∈ {x0,…,xn}). Note since ym = xn= v, such J must exist.

A theorem about simple circuits
Now it is easy to see that: 1. if s ≤ t then { xs --(es+1)-- xs+1--…--(et)—xt } U { xt--(e’t+1)--yt+1--…--(e’J-1)-yJ } is a circuit. This is not possible since all edges of the circuit are part of a2, but a2 is assumed to have no simple cycle. 2. If s > t then {xt--(et+1)--xt+1--…-(es-1)--xs} U { xt--(e’t+1)--yt+1--…--(e’J-1)-yJ } ---(*) is a simple circuit. Note: {xt,xt+1,…,xs} ⋂ {xt,yt+1,…,yJ } ={xt, yJ=xs} if there were ea = e’b => f(ea) = {xt, xt+1=xs} = {xt,yt+1=yJ} => a=b=t+1 => e t+1 = e’t+1 a contradiction! o/w, by def, (*) is a simple circuit.

Xt et+1 xs u yJ e’t+1 v es xs e’J yJ e’J yJ-1

G=(V,E): a undirected graph;
Connected Components G=(V,E): a undirected graph; 1. Any maximal connected subgraph of G is called a connected component of G. (i.e., G'=(V',E') is a connected component of G iff 1. G' is a connected subgraph of G and 2. There is no connected subgraph of G properly covers G'.) Ex:

Connected components (cont'd)
Note 1. Every two distinct connected components are disjoint. Pf: G1=(V1,E1), G2=(V2,E2): two distinct connected components. If G1 and G2 overlap (i.e., V1Ç V2 ¹ Æ ). ==> \$v ∈ V1ÇV2 ==> G3 = (V1 ⋃ V2,E1UE2) is a connected subgraph larger than G1 and G2, a contradiction! QED Note 2. Every connected subgraph G' of G must be contained in some connected component of G.

Connected components (cont'd)
Pf: Let i = 0 and Gi = G'. If Gi is maximal then we are done. o/w, there is connected Gi+1 properly contains Gi. If Gi+1 is maximal, then we are done; o/t let i = i+1 and repeat the same process, we will eventually (if G is finite) get a maximal graph containing G'. Note: 3. Let G1,G2,...,Gk be the set of all connected components of G. Then G = Ui = 1..k Gi pf: 1. Ui=1,k Gi Í G since every Gi Í G. 2. G Í Ui=1,kGi since every edge and every vertex must belong to some connected component.

connected components (cont'd)
Note 4: Every undirected graph G has a unique set of connected components. Pf: Let G = (V,E). For each vertex u in V, let Gu = (Vu,Eu) where Vu = {v | there is a path from u to v} Í V, and Eu = {e | f(e) Í Vu} Í E. It is easy to show that Gu is a connected component of G. Moreover, we have 1. for all u, v ∈ V: Gu = Gv iff Vu=Vv /\ Eu=Ev and 2. for all e ∈ E: if f(e) = {u,v} ==> Gu=Gv and e Î Eu. Hence the set of connected components of G = {Gu | u Î V}. Note: Connected components in graphs play a role like equivalence classes in equivalence relations.

The connectivity relation in a graph
G=(V,E) : an undirected graph Let ~ be the connectivity relation induced by G, i.e., for all u,v in V, u ~ v iff either u = v or u and v are connected in G. Theorem: 1. ~ is an equivalence relation on V. (Hence V/~ is a partition of V) 2. For all u,v in V, u and v are connected iff u and v are in the same block of the partition. 3. For each u Î V, Gu = (Vu,Eu) = ([u]~, E|[u]) where E|S is the set of edges restricted to the vertex set S, i.e., {e Î E | f(e) Í S}. 4. The set of all connected components of G = { (S, E|S) : S Î V/~}.

cut vertices and cut edges
A vertex in a graph is called a cut vertex (or articulation point) if the removal of this vertex and all edges incident with it will result in more connected components than in the original graph. Corollary: The removal of a cut vertex (and all edges incident with it) produces a graph that is not connected. Cut edges (bridges) The removal of it will result in graph with more connected components. Ex 4: Determine all cut vertices and all bridges in the right graph. cut vertices = ? bridges = ? c e a b d f g h

Strongly connected digraphs
Def 4: G=(V,E): a directed graph G is strongly connected iff there are paths from u to v and from v to u for every pair of distinct vertices u and v in G. Def 5: G is weakly connected iff there is a path between every pair of distinct vertices in G. Ex 5: G H G is strongly connected. H is weakly connected.

P(-) : a property on graphs
Path and isomorphism P(-) : a property on graphs Ex: P(G) = "G has a simple cycle of length > 2" P(G) = " G has an even number of vertices and edges". P(G) = ... P is said to be an isomorphic invariant if P is invariant under all isomorphic graphs, i.e., for all graph G1 and G2, if G1 and G2 are isomorphic then P(G1)  P(G2). Ex1: Pm,n(G) = " G has m vertices and n edges ", where m and n are some constant numbers, is an isomorphic invariant. Corollary: G1,G2: two graphs; P: an isomorphic invariant; If P(G1) and P(G2) have distinct truth value, then G1 and G2 are not isomorphic.

More on graph isomorphism
Ex2: P2(G) = "G has a simple circuit of length k", where k is a number > 2, is an isomorphic invariant. pf: G1 = (V1,E1), G2 = (V2,E2): two simple graphs. Let h:V1->V2 be any isomorphism from G1 to G2. Then if x0 --(e1)--> x2--(e2)--> x >(en)-->xn is a simple path on G1, then the sequence h(x0) -->(h(e1))-->h(x2)--(h(e2))-->h(x3) >((h(en))-->h(xn) is also a simple path on G2. Ex 6: G and H are not isomorphic since H has s simple cycle of length 3 (1261), whereas G has no simple cycle of length 3. 1 2 3 4 5 6 G H

Counting paths b/t vertices
G=(V,E) with V={V1,...,Vn} : a simple graph with adjacent matrix M. ==> # different paths of length k from vi to vj =(Mk)ij, where scalar multiplication are integer product (instead of boolean AND). Pf: by math ind on k. 1. basis step: k = 1: => By def. Mij is the number of edges (= path of length 1) from vi to vj. 2. Ind. step: assume (Mm)ij = #paths of length m from vi to vj for all m < k and for all ui, uj ∈ V. But #paths of length k from vi to vj = #paths of length k-1 from ui to v1 x #paths of length 1 from v1 to vj + #paths of length k-1 from ui to v2 x #paths of length 1 from v2 to vj + ... + #paths of length k-1 from ui to vn x #paths of length 1 from vn to vj = St=1..n (Mk-1)it x Mtj = (MK)ij.

==> there are 8 different paths of length 4 from a to d. Notes:
Example Ex 8: G=({1,2,3,4}, {12,13,24,34}) ==> M = [0110;1001;1001;0110] ==> M4 = [8008;0880;0880;8008] ==> there are 8 different paths of length 4 from a to d. Notes: 1. The length of the shortest path from vi to vj is the least k s.t. (MK)ij != 0. 2. G is connected if (Sk=1..n-1 Mk )ij != 0 for all 1≤ i<j ≤ n. pf: G is connected => for any i ≠ j, there is a simple path (of length t < n) from vi to vj ==> (Mt)ij > 0 ==> (Sk=1..n-1 Mk )ij != 0. QED

9.5 Euler and Hamilton paths
C The seven bridges problem: Problem: Is there a path passing through all bridges w/o crossing any bridge twice? Multigraph model: problem: Is there a simple path of length 7 ? A D B The town of Konigsburg C D A B

Eular paths and Eular cycles
Def. 1: An Eular path in a multigraph G is a simple path containing all edges. Def. 2: An Eular circuit in a multigraph G is a simple circuit containing all edges. Ex1: In G1,G2 and G3: G1 has a Eular circuit:a,e,c,d,e,b,a. G3 has a Eular path: bedbadca. Note: If there is a Eular circuit beginning from a vertex v, then there is a Eular path or circuit beginning from any other vertex. G1 G2 G3 a b c d e

Necessary and sufficient conditions for Eular path and Eular circuit
Theorem 1: A connected multigraph has an Eular circuit iff each of its vertices has even degree. Corollary: The seven-bridges problem has no Eular circuit. pf: "=>": G=(V,E): any multigraph. Let a = x0 e1 x1 e2 x2 e2 x3 ... en xn=x0 be any Eular circuit. For each v=xi in V ≠ x0, since ei-->xi --> ei+1 we have deg(v) = 2 |{j | xj = v and 0<j<n}| and for x0 we have deg(x0) = 2x|{j | xj = x0 and 0<j<n }| + 2. Hence every vertex has even degree. (<=): by induction on |E|. If |E|=0, by definition, it has a Eular ckt. O/W Let a = x0 e1 x1 e2 x2 e3 ... en xn=x0 be any simple circuit of length n >0. (its existence will be shown later.) If a is an Eular circuit, then we are done. O/W:

Proof of Eular condition
Let G' = (V',E') be the resulting graph formed from G by removing all e1,e2,...,en from E. Let G1=(V1,E1),...,Gk=(Vk,Ek) be all connected components of G'. Since G is connected, {x0,...,xn} ÇVi  {} for all 0<i<k+1. (o/w there is no path from x0 to vertices in Vi). For each i let xti be any vertex in {x0,...,xn} Ç Vi. Since Gi=(Vi,Ei) and |Ei| < |E| and every vertex in Vi has even degree, by ind. hyp. there is a Eular circuit ai = xti ->...-> xti in Gi. Now join each ai with a at xti: we can form a Eular circuit in G. QED. ..... ...... x0 x1 x2 xt1 xi xtk xj xj+1 xn=x0 e1 e2 ei ej ej+1 a1 ak

a = a b c d a is a simple circuit in G.
Example: h g a = a b c d a is a simple circuit in G. removing all edges in a results in three connected components: G1,G2 and G3 intersecting with a at {a,d}, {b} and {c} respectively. By ind. hyp., \$ Eular ckt :a1 = (a...a) =(aedfghefa) a2: (b) and a3: (c i j c) ==> join a and all ai, we obtain a Eular ckt of G: (aedfghefa)b(cijc)da. e f a d G i b j c h g e f a d G1 i G3 G2 b j c

Eular condition for Eular path:
Theorem 2: A connected multigraph has an Eular path which is not an Eular ckt iff it has exactly two vertices of odd degree. pf: (=>): G=(V,E): any multigraph. Let a = x0 e1 x1 e2 x2 e2 x3 ... en xn !=x0 be any Eular path. For each v=xi in V != x0 or xn, since ei-->xi --> ei+1 we have deg(v) = 2 |{j | xj = v and 0<j<n}| and for v = x0 or xn we have deg(v) = 2x|{j | xj = v and 0<j<n } + 1. Hence all vertices but x0 and xn have even degree. (<=): Let G' = (V, EU{e}) where e is a new edge connecting a and b, which are vextices of G with odd degree. ==> Every vertex of G has even degree. By theorem 1, \$ a Eular circuit a = a -> >b->(e)->a. ==> removing e from a we get a Eular path of G. QED

Existence of simple circuit
Lemma: G=(V,E): a multigraph s.t. E != {} and every vertex has even degree. Then there exist a simple ckt in G of length >0 from any vertex of nonzero degree. pf: Let x0 be any vertex in G with nonzero degree. We construct a sequece of simple paths a’s which eventually becomes a simple circuit as follows: 0. Initially a1 = x0 --e1-- x1. G1 = (V, E \{e1}). note: x1 in G1 has degree > 0 hence there is an edge leaving x1. 1. assume ai = x0...xi has been formed and Gi = (V, Ei= E\{e1,...,ei}). If xi = xk for k<i then xk-ek- - … xi is a simple ckt and we are done. o/w by ind. hyp. xi has odd degree in Gi, hence we can find an edge e in Gi connecting xi and some other vertex u. now let ai+1= ai -- e--u; xi+1 = u ; and i = i+1 2. goto 1. Note: the procedure must terminate since every iteration of step 1 will result in one edge removed from G, but G has only a finite number of edges. So the produre will exit from step 1 with a simple ckt returned. QED

Hamilton paths and circuits
Def. 2: G=(V,E): a multi graph. A path x0 e1 x1 e2 x2... en xn in G is a Hamilton path if {x0,...,xn} = V and xi  xj for all i  j. A ckt x0 e1 x1 e2 x2... en xn=x0 (n > 1) in G is a Hamilton ckt if {x1,...,xn} = V and xi  xj for all i  j Ex: Problem: Is there a simple principle, like that of Eular ckt, to determine whether a multigraph has a Hamilton ckt ? Ans: no ! In fact, there is no known polynominal time algorithm which can test if a given input multigraph has a Hamilton ckt ! Theorem: [sufficient condition] G: a connected simple graph with n ³ 3 vertices. If every vertex has degree ³ n/2, then G has Hamilton ckts.

Ex 8: label regions of a disc:
Grey code Ex 8: label regions of a disc: Problem: split the disc into 2n arcs of equal length and assign a bit string of length n to each arc s.t. adjacent arcs are assigned bit strings differing from neighbors by one bit only. Problem: How to find Gray code of n-bit length? Rule: Let Gn = (Vn,En) = Qn be the n cube. A cycle of the disc (a grey code) corresponds to an Hamilton ckt in Qn. 000 001 011 010 110 111 101 100 000 001 010 011 100 101 110 111 000 100 010 110 001 011 111 101

9.6 Shortest path problems
A weighted graph is a graph G=(V,E) together with a weighting function w:E->R+. A shortest path from a to b is a path: a e1 x1 e2 x2 ... en b s.t. Si=1,n w(ei) is minimized. Problem: Given a graph and two vertices a, z, find the length of a shortest path from a to z. Alg: [Dijkstra's algorithm] //L(v): the length of a shortest path from a to v// 1. L(a) := 0; L(v) = w(a,v) for all v ≠ a ; S := {a}; 2. While( ~S ≠ { } ){ // i.e., S ≠ V 3. u = any vertex ∉ S with minimum L(u); 4. S = S U {u}; 5. for( all v ∉ S) L(v) = min(L(u) + w(u,v), L(v)) } 7. end /* L(z) = length of the shortest path from a to z}.

Running Time: O(n2) Example: a z b c d e 2 4 1 5 8 10 3 6 a,0 z b,4

a,0 z b,3 c,2 d,10 e,12 2 4 1 5 8 10 3 6 a,0 z b,3 c,2 d,8 e,12 2 4 1 5 8 10 3 6

a,0 z,14 b,3 c,2 d,8 e,10 2 4 1 5 8 10 3 6 a,0 z,13 b,3 c,2 d,8 e,10 2 4 1 5 8 10 3 6

Correctness (skipped!)
Let Sk = the value of S after the kth iteration of the for-loop. uk = the vertex added to Sk at the kth iteration. Lk(v) = the value of L(v) after kth iteration. Notes Sk = {u0=a,u1,…,uk}. Lj(uk) = Lk-1(uk) for all j >k-1. 1. L(a) := 0; L(v) = w(a,v) for all v ≠ a ; S := {a}; 2. While( ~S != { } ){ 3. u = any vertex ∉ S with minimum L(u); 4. S = S U {u}; 5. for( all v ∉ S) L(v) = min(L(u) + w(u,v), L(v)) } 7. end /* L(z) = length of the shortest path from a to z}.

Correctness of Dijkstra alg is a direct of the following lemma: skipped)
Lemma: for all iterations k and all vertices v: 1. v  Sk  Lk(v) is the length of the shortest of all paths from a to v. 2. v ∉ Sk  Lk(v) is the length of the shortest of all paths from a to v of which all intermediate vertices must come from Sk. pf: By induction on k. k = 0: Then S={a} , Lk (a) = 0 is the shortest length from a to a. v ≠ a => Lk (v) = w(a,v) is the length of the shortest from a to v without passing through any vertex in S. k= j+1 > 0: By step 3, Lj(uk ) = min { Lj(v) | v  ~Sj }, and by step 4. Lk(uk) = Lj(uk). Now we show that Lj(uk) (and hence Lk(uk) ) is the shortest length of all paths from a to uk. Assume it is not. Then there must exist a shorter path a from a to uk, but such path must pass through a vertex not in Sj, since by ind.hyp, Lj(uk) is the least length of all paths passing only through Sj. Now let a = a --- u ----uk where u is the first vertex of a that are not in S and the subpath a --- u contains only vertices from Sj. Then the length |a| = | a---u | + |u --- uk|， but |a ---u| ≥ Lj(uk) Hence it is impossible that |a| < Lj(uk). This shows (1) is true.

Now consider (2). let v be any vertex ∉ Sk .
(skipped) Now consider (2). let v be any vertex ∉ Sk . The shortest path from a to v with intermediate vertices among Sk either contains uk or not. 1. If it does not, then it is also a shortest path from a to v containing vertices form Sj, and by ind.hyp, its length is Lj(v). 2. If it conatins uk, then uk must be the last vertex before reaching v, since if a---uk,t---v is a shortest path, then the path a---t---v, where a---t is a shortest path from a to t, must be not longer than it. As a result, it has distance Lj(uk) + w(uk,v), where by ind.hyp., Lj(uk) is the shortest distance of all paths from a to uk passing through Sj. Finally, Step 6 assigns the minimum of both cases to Lk(v) and hence sastisfies lemma (2).

Find the distances b/t all pairs of vertices
Floyd(G:(V,E,w)) 1. for i = 1 to n for j = 1 to n d(i,j) = w(i,j); 2. for k = 1 to n d(i,j) is the distance of minimum path from i to j with interior points among {1,2,...,k}. for i = 1 to n d(i,j) = min (d(i,k) + d(k,j), d(i,j)); end /* d(i,j) is the shortest distance b/t i and j */ running time : O(n3). Note: we can also apply Dijkstra's alg to obtain a O(n3) alg for distances of all pairs of vertices.

pf: By induction on G =(V,E).
9.7 Planar graphs Def 1: A graph is planar iff it can be redrawn in the plane w/o any edges crossing. Such a drawing is called a planar representation of the graph. Ex1: K4: ok Ex2: Q3: ok Ex3: K3,3: not planar. Eular's formula: A planar representation splits the plane into regions (including an unbounded one. Eular showed a relation among #regions, |E| and |V|). Theorem 1: G=(V,E): a connected planar graph with e edges and v vertices. Then r (#regions) = e - v + 2. pf: By induction on G =(V,E). Let G0,...., Gn = G be a sequence of subgraphs of G.

G0 contains only one vertex.
planar graphs (cont'd) G0 contains only one vertex. Gi+1 is formed from Gi by adding one edge incident with one vertices in Gi (and a vertex if needed) Let ri, ei, vi are #regions, #edges, #vertices in Gi respectively. Basis: e0 = 0; r0 = 1; v0 =1. Hence r0 = e0 - v0 + 2. Ind. step: assume ri = ei - vi + 2. Let (ai+1,bi+1) be the edges added to Gi to form Gi+1. case 1: {ai+1,bi+1 } ∈ Vi: ==> ai+1 and bi+1 must be on the boundary of a common region. (o/w crossing would occur!) ==> add {ai+1,bi+1} partition the region into 2 subregion ==> ri+1 = ri + 1; ei+1 = ei +1; vi+1 = vi. ==> ri+1 = ei+1-vi+1+2. case 2: a i+1 ∈ Vn but b i+1 ∉ Vi => add {ai+1,bi+1 } does not produce any region. => ri+1 = ri; ei+1=ei+1; vi+1 = vi+1 ==> ri+1 = ei+1 -vi QED

Ex4: Planar graph G has 20 vertices, each of degree 3.
more on planar graphs Ex4: Planar graph G has 20 vertices, each of degree 3. ==> #regions = ? r = e - v + 2 = = 12. Corollary: G: a connected planar simple graph with e edges and v vertices ³ 3. ==> e £ 3v - 6. pf: for each region R: define deg(R) = #edges on the boundary of R. ==> 2e = S deg(R) [each edge shared by 2 regions] =S deg(v) Since deg(R) ³ 3 (simple graph), 2e = S deg(R) ³ 3 r. ==> 2e/3 ³ r = e-v+2 ==> 3v- 6 ³ e. QED Ex5: K5 is not planar. sol: K5 has C(5,2) = 10 edges and 5 vertices. ==> 3v - 6 = 15-6 = 9 < 10, violating the necessary condition ! Ex6: K3,3, though satisfying the condition: e £ 3v - 6, is not planar.

pf: no ckt of length 3 ==> every region has degree ³ 4.
more on planar graph: G: a connected planar simple graph of e edges and v > 2 vertices and no simple ckt of length 3 => e £ 2v - 4. pf: no ckt of length 3 ==> every region has degree ³ 4. ==> 2e = S deg(R) ³ 4 r. ==> e ³ 2r = 2e-2v+4 ==> e £ 2v - 4. Ex 6: K 3,3 is not planar. K 3,3 has 9 edges and 6 vertices and has no cycle of length 3. ==> 2 x = 8 < 9. Hence not planar. General rule about planar graphs: Def: elementary subdivision: u v ==> u------w------v.

General rule about planar graphs
Def: G1 and G2 are homeomorphic iff they can be obtained from the same graph by a sequence of elementary subdivisions. Ex12: Fact: G in not planar if some of its subgraphs is not planar. Theorem 2: [Kuratowski theorem] A graph is nonplanar iff its contains a subgraph which is homeomorphic to K5 or K3,3.

9.8 Graph coloring Problem: Given a map, determine at least how many colors are needed to color the map s.t. neighbor regions (with a common border) are assigned diff colors. Ex: A B C D E F G H I

Transform maps into graphs
Ideas: regions ---> vertices R1 and R2 share a border ---> {R1,R2} is an edges Def: M: a map GM = (V,E) where V = the set of all regions E={ {r1,r2} | r1 and r2 share a common border line in M} GM is called the dual graph of the map M. Notes: 1. Every dual graph of maps are planar graphs 2. Every planar graph is the dual graph of some map.

==>1. a problem studied for over 100 years ! [1850~1976,
Graph coloring Def 1:G = (V,E) : a graph. A coloring of G is the assignment of a color to each vertex s.t. no two adjacent vertices are assigned the same color. Problem: What is the least number of colors necessary to color a graph ? Def 2: G=(V,E): a graph. The chromatic number of G is the least number of colors needed for a coloring of the graph G. Problem: What is the maximum of all chromatic numbers of all planar graphs ? ==>1. a problem studied for over 100 years ! [1850~1976, solved by Appel&Haken] cases generated and verified by computer programs. 3. issue: believable ?

Note: 1. Theorem 1 holds for planar graphs only.
The 4-color theorem Theorem 1: The chromatic number of a planar graph is no greater than 4. Note: 1. Theorem 1 holds for planar graphs only. 2. Non-planar graphs can have any chromatic number > 4. Ex: K5 has chromatic number 5. In fact Kn has chromatic number n for any n. Exs: #(Km ,n) = 2. #(Cn) = 2 if n is even and 3 if n is odd.

Applications (scheduling and assignments)
Ex 5: problem : how to assign the final exams. s.t. no student has two exams at the same time. solu: G = (V,E) where V= the set of all courses {c1,c2} in E iff \$ a student taking courses c1 and c2. ==> A schedule of the final examinations corresponds to a coloring of the associated graph G. 1 I Time courses I 1,6 ==> II 2 III 3,5 IV 4,7 IV 2 II 7 3 III I 6 IV III 4 5