Presentation is loading. Please wait.

Presentation is loading. Please wait.

GRAPH THEORY Discrete Math Team KS091201 MATEMATIKA DISKRIT (DISCRETE MATHEMATICS )

Similar presentations


Presentation on theme: "GRAPH THEORY Discrete Math Team KS091201 MATEMATIKA DISKRIT (DISCRETE MATHEMATICS )"— Presentation transcript:

1 GRAPH THEORY Discrete Math Team KS091201 MATEMATIKA DISKRIT (DISCRETE MATHEMATICS )

2 Outline 2 -- KS091201  Simple Graph  Directed Graph  Djikstra Algorithm

3 What are Graphs?  General meaning in everyday math: A plot or chart of numerical data using a coordinate system.  Technical meaning in discrete mathematics: A particular class of discrete structures (to be defined) that is useful for representing relations and has a convenient graphical representation.

4 Applications of Graphs  Potentially anything (graphs can represent relations; relations can describe the extension of any predicate).  Apps in networking, scheduling, flow optimization, circuit design, path planning.  Genealogy analysis, computer game-playing, program compilation, object-oriented design, …

5 Simple Graphs  Correspond to symmetric binary relations R.  A simple graph G=(V, E) consists of:  a set V of vertices or nodes (V corresponds to the universe of the relation R),  a set E of edges / arcs / links: unordered pairs of elements u,v  V, such that uRv.

6 Example of a Simple Graph  Let V be the set of states in the far-southeastern U.S.:  V={FL, GA, AL, MS, LA, SC, TN, NC}  Let E={{u,v}|u adjoins v} ={{FL,GA},{FL,AL},{FL,MS},{FL,LA},{GA,AL},{AL,MS},{ MS,LA},{GA,SC},{GA,TN}, {SC,NC},{NC,TN},{MS,TN},{MS,AL}} TN AL MS LA SC GA FL NC

7 Directed Graphs  Correspond to arbitrary binary relations R, which need not be symmetric.  A directed graph (V,E) consists of a set of vertices V and a binary relation E on V.  E.g.: V = people, E={(x,y) | x loves y}

8 Graph Terminology  Adjacent  connects  endpoints  degree  initial  terminal  in-degree, out-degree  subgraph, union.

9 Adjacency  Let G be an undirected graph with edge set E. Let e  E be (or map to) the pair {u,v}. Then we say:  u, v are adjacent / neighbors / connected.  Edge e is incident with vertices u and v.  Edge e connects u and v.  Vertices u and v are endpoints of edge e.

10 Degree of a Vertex  Let G be an undirected graph, v  V a vertex.  The degree of v, deg(v), is its number of incident edges. (Except that any self-loops are counted twice.)  A vertex with degree 0 is isolated.  A vertex of degree 1 is pendant.

11 Handshaking Theorem  Let G be an undirected graph with vertex set V and edge set E. Then  Corollary: Any undirected graph has an even number of vertices of odd degree.

12 Directed Adjacency  Let G be a directed graph, and let e be an edge of G that is (or maps to) (u,v). Then we say:  u is adjacent to v, v is adjacent from u  e comes from u, e goes to v.  e connects u to v, e goes from u to v  the initial vertex of e is u  the terminal vertex of e is v

13 Directed Degree  Let G be a directed graph, v a vertex of G.  The in-degree of v, deg  (v), is the number of edges going to v.  The out-degree of v, deg  (v), is the number of edges coming from v.  The degree of v, deg(v)  deg  (v)+deg  (v), is the sum of v’s in-degree and out-degree.

14 Directed Handshaking Theorem  Let G be a directed graph with vertex set V and edge set E. Then:  Note that the degree of a node is unchanged by whether we consider its edges to be directed or undirected.

15 Subgraphs  A subgraph of a graph G=(V,E) is a graph H=(W,F) where W  V and F  E. G H

16 Graph Unions  The union G 1  G 2 of two simple graphs G 1 =(V 1, E 1 ) and G 2 =(V 2,E 2 ) is the simple graph (V 1  V 2, E 1  E 2 ).

17 Graph Representations  Adjacency lists.  Adjacency matrices.  Incidence matrices.

18 Adjacency Lists  A table with 1 row per vertex, listing its adjacent vertices. a b d c f e

19 Directed Adjacency Lists  1 row per node, listing the terminal nodes of each edge incident from that node.

20 Adjacency Matrices  Matrix A=[a ij ], where a ij is 1 if {v i, v j } is an edge of G, 0 otherwise.

21 Connectivity  In an undirected graph, a path of length n from u to v is a sequence of adjacent edges going from vertex u to vertex v.  A path is a circuit if u=v.  A path traverses the vertices along it.  A path is simple if it contains no edge more than once.

22 Paths in Directed Graphs  Same as in undirected graphs, but the path must go in the direction of the arrows.

23 Connectedness  An undirected graph is connected iff there is a path between every pair of distinct vertices in the graph.  Theorem: There is a simple path between any pair of vertices in a connected undirected graph.

24 Review: Graph Theory  Types of graphs  Graph terminology  Graph representation  Connectivity

25 Graphs - Shortest Paths  Application  In a graph in which edges have costs..  Find the shortest path from a source to a destination  Surprisingly..  While finding the shortest path from a source to one destination,  we can find the shortest paths to all over destinations as well!  Common algorithm for single-source shortest paths is due to Edsger Dijkstra

26 Dijkstra’s Algorithm - Data Structures  For a graph, G = ( V, E )  Dijkstra’s algorithm keeps two sets of vertices: S Vertices whose shortest paths have already been determined V-S Remainder  Also d Best estimates of shortest path to each vertex  Predecessors for each vertex

27 Predecessor Sub-graph  Array of vertex indices,  [j], j = 1.. |V|   [j] contains the pre-decessor for node j  j’s predecessor is in  [  [j]], and so on....  The edges in the pre-decessor sub-graph are (  [j], j )

28 Dijkstra’s Algorithm - Operation  Initialise d and   For each vertex, j, in V  d j =    j = nil  Source distance, d s = 0  Set S to empty  While V-S is not empty  Sort V-S based on d  Add u, the closest vertex in V-S, to S  Relax all the vertices still in V-S connected to u Initial estimates are all  No connections Add s first!

29 Dijkstra’s Algorithm - Operation  Initialise d and   For each vertex, j, in V  d j =    j = nil  Source distance, d s = 0  Set S to empty  While V-S is not empty  Sort V-S based on d  Add u, the closest vertex in V-S, to S  Relax all the vertices still in V-S connected to u Initial estimates are all  No connections Add s first!

30 Dijkstra’s Algorithm - Operation  The Relaxation process Relax the node v attached to node u relax( Node u, Node v, double w[][] ) if d[v] > d[u] + w[u,v] then d[v] := d[u] + w[u,v] pi[v] := u If the current best estimate to v is greater than the path through u.. Edge cost matrix Update the estimate to v Make v’s predecessor point to u

31 Dijkstra’s Algorithm - Full  The Shortest Paths algorithm Given a graph, g, and a source, s shortest_paths( Graph g, Node s ) initialise_single_source( g, s ) S := { 0 } /* Make S empty */ Q := Vertices( g ) /* Put the vertices in a PQ */ while not Empty(Q) u := ExtractCheapest( Q ); AddNode( S, u ); /* Add u to S */ for each vertex v in Adjacent( u ) relax( u, v, w )

32 Dijkstra’s Algorithm - Initialise  The Shortest Paths algorithm Given a graph, g, and a source, s shortest_paths( Graph g, Node s ) initialise_single_source( g, s ) S := { 0 } /* Make S empty */ Q := Vertices( g ) /* Put the vertices in a PQ */ while not Empty(Q) u := ExtractCheapest( Q ); AddNode( S, u ); /* Add u to S */ for each vertex v in Adjacent( u ) relax( u, v, w ) Initialise d, , S, vertex Q

33 Dijkstra’s Algorithm - Loop  The Shortest Paths algorithm Given a graph, g, and a source, s shortest_paths( Graph g, Node s ) initialise_single_source( g, s ) S := { 0 } /* Make S empty */ Q := Vertices( g ) /* Put the vertices in a PQ */ while not Empty(Q) u := ExtractCheapest( Q ); AddNode( S, u ); /* Add u to S */ for each vertex v in Adjacent( u ) relax( u, v, w ) Greedy! While there are still nodes in Q

34 Dijkstra’s Algorithm - Relax neighbours  The Shortest Paths algorithm Given a graph, g, and a source, s shortest_paths( Graph g, Node s ) initialise_single_source( g, s ) S := { 0 } /* Make S empty */ Q := Vertices( g ) /* Put the vertices in a PQ */ while not Empty(Q) u := ExtractCheapest( Q ); AddNode( S, u ); /* Add u to S */ for each vertex v in Adjacent( u ) relax( u, v, w ) Greedy! Update the estimate of the shortest paths to all nodes attached to u

35 Dijkstra’s Algorithm - Operation  Initial Graph Distance to all nodes marked  Source Mark 0

36 Dijkstra’s Algorithm - Operation  Initial Graph Source Relax vertices adjacent to source

37 Dijkstra’s Algorithm - Operation  Initial Graph Source Red arrows show pre-decessors

38 Dijkstra’s Algorithm - Operation Source is now in S Sort vertices and choose closest

39 Dijkstra’s Algorithm - Operation Source is now in S Relax u because a shorter path via x exists Relax y because a shorter path via x exists

40 Dijkstra’s Algorithm - Operation Source is now in S Change u’s pre-decessor also Relax y because a shorter path via x exists

41 Dijkstra’s Algorithm - Operation S is now { s, x } Sort vertices and choose closest

42 Dijkstra’s Algorithm - Operation S is now { s, x } Sort vertices and choose closest Relax v because a shorter path via y exists

43 Dijkstra’s Algorithm - Operation S is now { s, x, y } Sort vertices and choose closest, u

44 Dijkstra’s Algorithm - Operation S is now { s, x, y, u } Finally add v

45 Dijkstra’s Algorithm - Operation S is now { s, x, y, u } Pre-decessors show shortest paths sub-graph

46 Dijkstra’s Algorithm - Proof  Greedy Algorithm  Proof by contradiction best  Lemma 1  Shortest paths are composed of shortest paths  Proof  If there was a shorter path than any sub-path, then substitution of that path would make the whole path shorter

47 Dijkstra’s Algorithm - Proof  Denote   (s,v) - the cost of the shortest path from s to v  Lemma 2  If s ...  u  v is a shortest path from s to v, then after u has been added to S and relax(u,v,w) called, d[v] =  (s,v) and d[v] is not changed thereafter.  Proof  Follows from the fact that at all times d[v]   (s,v)  See Cormen (or any other text) for the details

48 Dijkstra’s Algorithm - Proof  Using Lemma 2  After running Dijkstra’s algorithm, we assert d[v] =  (s,v) for all v  Proof (by contradiction)  Suppose that u is the first vertex added to S for which d[u]    (s,u)  Note  v is not s because d[s] = 0  There must be a path s ...  u, otherwise d[u] would be   Since there’s a path, there must be a shortest path

49 Dijkstra’s Algorithm - Proof  Proof (by contradiction)  Suppose that u is the first vertex added to S for which d[u]   (s,u)  Let s  x  y  u be the shortest path s  u, where x is in S and y is the first outside S  When x was added to S, d[x]    (s,x)  Edge x  y was relaxed at that time, so d[y]    (s,y)

50 Dijkstra’s Algorithm - Proof  Proof (by contradiction)  Edge x  y was relaxed at that time, so d[y]    (s,y)   (s,u)  d[u]  But, when we chose u, both u and y where in V-S, so d[u]  d[y] (otherwise we would have chosen y)  Thus the inequalities must be equalities  d[y]    (s,y)   (s,u)  d[u]  And our hypothesis (d[u]    (s,u)) is contradicted!

51 Dijkstra’s Algorithm - Time Complexity  Dijkstra’s Algorithm  Similar to MST algorithms  Key step is sort on the edges  Complexity is  O( (|E|+|V|)log|V| ) or  O( n 2 log n ) for a dense graph with n = |V|


Download ppt "GRAPH THEORY Discrete Math Team KS091201 MATEMATIKA DISKRIT (DISCRETE MATHEMATICS )"

Similar presentations


Ads by Google