1 / 65

Chapter 9

Chapter 9. Graphs. Chapter 8. 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)

hasad
Télécharger la présentation

Chapter 9

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Chapter 9 Graphs

  2. Chapter 8. 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.) • ..

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

  4. 8.1 Introduction • Graph: discrete structure consisting of vertices and edges that connects 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).

  5. 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.

  6. 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

  7. 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 B D C

  8. 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.

  9. 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

  10. 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

  11. 7.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. C B D G A E F

  12. 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

  13. 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|.

  14. 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' = ?

  15. 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: 11011 and 11111 is connected. Ex: Q1, Q2, Q3, Q4 = ?

  16. 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 a b g f c d e G a b f c d e H

  17. Ex 13: interconnection network for processors Types of connections • Linear array: • mesh • Hyper cube (m-cube) Main measures: 1. #links 2. longest distance linear array n-1 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

  18. 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 = ?

  19. 8.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 adjacent vertices of 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 in f(e), or (for directed graph) i[u,e]= 1 (or -1) iff u is the starting (or ending) vertex of e. Ex: (p558 fig2)

  20. 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}.

  21. 8.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}. e1 e2 e3 e4 e5 e6 en-1 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 ).

  22. Connectivity (cont'd) Def. 2: G = (V,E,f): a directed multigraph • A patha 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.

  23. join xi-1 and xj if x i-1 = xj e1 e2 ei ej+1 ej ..... ....... ...... u x1 x2 xi-1 xi xj xj+1 v xj-1 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 join xi and xj if xi = xj

  24. xj xi ej+1 ei e1 e2 xj+1 ..... ej ...... x1 x2 xi-1 u v xj-1 xj-1 xi ei e1 e2 xj+1 ..... ej ...... x1 x2 xi-1 u v xj ej+1 Note: Theorem 1 does not hold for circuit (cycle)

  25. 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.

  26. 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. 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.

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

  28. 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:

  29. 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.

  30. 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 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.

  31. 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.

  32. 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/~}.

  33. a d f g b h c e 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 = ?

  34. 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.

  35. 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.

  36. 3 2 2 3 1 4 1 4 6 5 6 5 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)--> x3--.... -->(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. G H

  37. 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.

  38. 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

  39. C D A 8.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 B

  40. a b a b a b e e d c d c c e d G1 G2 G3 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.

  41. 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| > 1. Let a = x0 e1 x1 e2 x2 e3 ... en xn=x0 be any simple circuit. (its existence will be shown later.) If a is an Eular circuit, then we are done. O/W:

  42. a1 ak e1 e2 ei ej+1 ej ..... ....... ...... x0 x1 x2 xt1 xi xj xj+1 xn=x0 xtk 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.

  43. Example: g h • 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. f e a d G i b j c g h f e a d G1 i G3 G2 b j c

  44. Eular condition for Eular path: Theorem 2: A connected multigraph has an Eular path but 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 path a = a -> .... ->b->(e)->a. ==> removing e from a we get a Eular path of G. QED

  45. 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 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 become 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 prod. will exit from step 1 with a simple ckt returned. QED

  46. 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.

  47. 000 000 111 100 001 110 001 101 010 101 100 011 011 111 110 010 111 011 101 001 010 110 000 100 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.

  48. 8.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) 6. L(v) = min(L(u) + w(u,v), L(v)) } 7. end /* L(z) = length of the shortest path from a to z}.

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

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

More Related