650 likes | 847 Views
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)
E N D
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) • 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.) • ..
table of contents • Introduction • Graph terminology • Representing graph and graph isomorphism • Connectivity • Euler and Hamilton paths • Shortest path problems • Planer graphs • Graph coloring
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).
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
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
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
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
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' = ?
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 = ?
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
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
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 = ?
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)
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}.
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 ).
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.
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
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)
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. 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
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 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/~}.
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 = ?
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.
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.
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
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.
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
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
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.
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:
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.
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
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
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
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.
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.
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}.
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)
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