Download presentation
Presentation is loading. Please wait.
Published byCamron Sharp Modified over 8 years ago
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|
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.