Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

Slides:



Advertisements
Similar presentations
Comp 122, Fall 2004 Elementary Graph Algorithms. graphs Lin / Devi Comp 122, Fall 2004 Graphs  Graph G = (V, E) »V = set of vertices »E = set of.
Advertisements

ALGORITHMS THIRD YEAR BANHA UNIVERSITY FACULTY OF COMPUTERS AND INFORMATIC Lecture eight Dr. Hamdy M. Mousa.
More Graphs COL 106 Slides from Naveen. Some Terminology for Graph Search A vertex is white if it is undiscovered A vertex is gray if it has been discovered.
Graph A graph, G = (V, E), is a data structure where: V is a set of vertices (aka nodes) E is a set of edges We use graphs to represent relationships among.
David Luebke 1 5/9/2015 CS 332: Algorithms Graph Algorithms.
Graphs Searching. Graph Searching Given: a graph G = (V, E), directed or undirected Goal: methodically explore every vertex and every edge Ultimately:
Zhengjin Graphs: Adjacency Matrix ● Example: a d bc A ?? 4.
Graphs. Data structures that connect a set of objects to form a kind of a network Objects are called “Nodes” or “Vertices” Connections are called “Edges”
Graphs Chapter 20 Data Structures and Problem Solving with C++: Walls and Mirrors, Carrano and Henry, © 2013.
Breadth First Search. Two standard ways to represent a graph –Adjacency lists, –Adjacency Matrix Applicable to directed and undirected graphs. Adjacency.
Graph Searching (Graph Traversal) Algorithm Design and Analysis Week 8 Bibliography: [CLRS] – chap 22.2 –
CS 3343: Analysis of Algorithms Lecture 24: Graph searching, Topological sort.
1 Graph Programming Gordon College. 2 Graph Basics A graph G = (V, E) –V = set of vertices, E = set of edges –Dense graph: |E|  |V| 2 ; Sparse graph:
Graph & BFS.
Lecture 14: Graph Algorithms Shang-Hua Teng. Undirected Graphs A graph G = (V, E) –V: vertices –E : edges, unordered pairs of vertices from V  V –(u,v)
Graph & BFS Lecture 22 COMP171 Fall Graph & BFS / Slide 2 Graphs * Extremely useful tool in modeling problems * Consist of: n Vertices n Edges D.
1 Data Structures and Algorithms Graphs I: Representation and Search Gal A. Kaminka Computer Science Department.
Introduction to Graph  A graph consists of a set of vertices, and a set of edges that link together the vertices.  A graph can be: Directed: Edges are.
CSE 780 Algorithms Advanced Algorithms Graph Algorithms Representations BFS.
Graphs Chapter 20 Data Structures and Problem Solving with C++: Walls and Mirrors, Frank Carrano, © 2012.
1 7/2/2015 ITCS 6114 Graph Algorithms. 2 7/2/2015 Graphs ● A graph G = (V, E) ■ V = set of vertices ■ E = set of edges = subset of V  V ■ Thus |E| =
1 7/3/2015 ITCS 6114 Graph Algorithms. 2 7/3/2015 Depth-First Search ● Depth-first search is another strategy for exploring a graph ■ Explore “deeper”
Tirgul 7 Review of graphs Graph algorithms: – BFS (next tirgul) – DFS – Properties of DFS – Topological sort.
David Luebke 1 8/7/2015 CS 332: Algorithms Graph Algorithms.
Review of Graphs A graph is composed of edges E and vertices V that link the nodes together. A graph G is often denoted G=(V,E) where V is the set of vertices.
Chapter 9 – Graphs A graph G=(V,E) – vertices and edges
David Luebke 1 9/15/2015 CS 332: Algorithms Topological Sort Minimum Spanning Trees.
David Luebke 1 10/1/2015 CS 332: Algorithms Topological Sort Minimum Spanning Tree.
Spring 2015 Lecture 10: Elementary Graph Algorithms
CS 3343: Analysis of Algorithms Lecture 21: Introduction to Graphs.
Sept Elementary Graph Algorithms Graph representation Graph traversal -Breadth-first search -Depth-first search Parenthesis theorem.
David Luebke 1 10/16/2015 CS 332: Algorithms Go Over Midterm Intro to Graph Algorithms.
Elementary Graph Algorithms CLRS Chapter 22. Graph A graph is a structure that consists of a set of vertices and a set of edges between pairs of vertices.
CSC 413/513: Intro to Algorithms Graph Algorithms DFS.
Lecture 11 Algorithm Analysis Arne Kutzner Hanyang University / Seoul Korea.
1 Chapter 22 Elementary Graph Algorithms. 2 Introduction G=(V, E) –V = vertex set –E = edge set Graph representation –Adjacency list –Adjacency matrix.
CSC 201: Design and Analysis of Algorithms Lecture # 18 Graph Algorithms Mudasser Naseer 1 12/16/2015.
CSC 413/513: Intro to Algorithms Graph Algorithms.
Graph Algorithms Searching. Review: Graphs ● A graph G = (V, E) ■ V = set of vertices, E = set of edges ■ Dense graph: |E|  |V| 2 ; Sparse graph: |E|
Analysis of Algorithms CS 477/677 Instructor: Monica Nicolescu Lecture 20.
David Luebke 1 1/6/2016 CS 332: Algorithms Graph Algorithms.
CS 2133: Algorithms Intro to Graph Algorithms (Slides created by David Luebke)
David Luebke 1 1/25/2016 CSE 207: Algorithms Graph Algorithms.
Liaquat Majeed Sheikh 1 1/25/2016 Graph Algorithms.
Graph. Graph Usage I want to visit all the known famous places starting from Seoul ending in Seoul Knowledge: distances, costs Find the optimal(distance.
Graphs & Paths Presentation : Part II. Graph representation Given graph G = (V, E). May be either directed or undirected. Two common ways to represent.
Shahed University Dr. Shahriar Bijani May  A path is a sequence of vertices P = (v 0, v 1, …, v k ) such that, for 1 ≤ i ≤ k, edge (v i – 1, v.
Introduction to Graph Theory By: Arun Kumar (Asst. Professor) (Asst. Professor)
Chapter 20: Graphs. Objectives In this chapter, you will: – Learn about graphs – Become familiar with the basic terminology of graph theory – Discover.
Chapter 05 Introduction to Graph And Search Algorithms.
Graphs David Kauchak cs302 Spring Admin HW 12 and 13 (and likely 14) You can submit revised solutions to any problem you missed Also submit your.
G RAPH A LGORITHMS Dr. Tanzima Hashem Assistant Professor CSE, BUET.
G RAPH A LGORITHMS Dr. Tanzima Hashem Assistant Professor CSE, BUET.
Lecture 20. Graphs and network models 1. Recap Binary search tree is a special binary tree which is designed to make the search of elements or keys in.
CSC317 1 At the same time: Breadth-first search tree: If node v is discovered after u then edge uv is added to the tree. We say that u is a predecessor.
CS 3343: Analysis of Algorithms Lecture 24: Graph searching, Topological sort.
64 Algorithms analysis and design BY Lecturer: Aisha Dawood.
Graphs ORD SFO LAX DFW Graphs 1 Graphs Graphs
CS 201: Design and Analysis of Algorithms
Elementary Graph Algorithms
CS 3343: Analysis of Algorithms
CS120 Graphs.
Elementary Graph Algorithms
CS 3343: Analysis of Algorithms
Graphs A graph G = (V, E) V = set of vertices, E = set of edges
Intro to Graph Algorithms (Slides originally created by David Luebke)
Graphs Chapter 15 explain graph-based algorithms Graph definitions
Elementary Graph Algorithms
CSC 325: Algorithms Graph Algorithms David Luebke /24/2019.
Algorithms CSCI 235, Spring 2019 Lecture 32 Graphs I
Presentation transcript:

Mudasser Naseer 1 1/9/2016 CS 201: Design and Analysis of Algorithms Lecture # 17 Elementary Graph Algorithms (CH # 22)

Graphs ● Graphs are one of the unifying themes of computer science. A graph G = (V, E) is defined by a set of vertices V, and a set of edges E consisting of ordered or unordered pairs of vertices from V. ● Thus a graph G = (V, E) ■ V = set of vertices ■ E = set of edges = subset of V  V ■ Thus |E| = O(|V| 2 ) Mudasser Naseer 2 1/9/2016

Examples ● Road Networks ■ In modeling a road network, the vertices may represent the cities or junctions, certain pairs of which are connected by roads/edges. Mudasser Naseer 3 1/9/2016

Examples ● Electronic Circuits ■ In an electronic circuit, with junctions as vertices and components as edges. Mudasser Naseer 4 1/9/2016

Graph Variations ● Variations: ■ A connected graph has a path from every vertex to every other ■ In an undirected graph: ○ Edge (u,v) = Edge (v,u) ○ Thus |E| <= |V| (|V|-1)/2 ○ No self-loops A ONM LKJ EFGH DCB I P Mudasser Naseer 5 1/9/2016

■ In a directed graph: ○ Edge (u,v) goes from vertex u to vertex v, notated u  v ○ (u,v) is different from (v,u) ○ Thus |E| <= |V| (|V|-1) ● Road networks between cities are typically undirected. ● Street networks within cities are almost always directed because of one-way streets. ● Most graphs of graph-theoretic interest are undirected. A EFGH DCB I Graph Variations Mudasser Naseer 6 1/9/2016

Graph Variations ● More variations: ■ A weighted graph associates weights with either the edges or the vertices ○ E.g., a road map: edges might be weighted with their length, drive-time or speed limit. ■ In unweighted graphs, there is no cost distinction between various edges and vertices. Mudasser Naseer 7 1/9/2016

■ A multigraph allows multiple edges between the same vertices ○ E.g., the call graph in a program (a function can get called from multiple points in another function) Mudasser Naseer 8 1/9/2016

Simple vs. Non-simple Graphs ● Certain types of edges complicate the task of working with graphs. A self-loop is an edge (x; x) involving only one vertex. ● An edge (x; y) is a multi-edge if it occurs more than once in the graph. ● Any graph which avoids these structures is called simple. Mudasser Naseer 9 1/9/2016

Spars Vs Dense Graphs ● Graphs are sparse when only a small fraction of the possible number of vertex pairs actually have edges defined between them. ● Graphs are usually sparse due to application- specific constraints. ● Road networks must be sparse because of road junctions. Mudasser Naseer 10 1/9/2016

● Typically dense graphs have a quadratic number of edges while sparse graphs are linear in size. ● We will typically express running times in terms of |E| and |V| (often dropping the |’s) ■ If |E|  |V| 2 the graph is dense ■ If |E|  |V| the graph is sparse ● If you know you are dealing with dense or sparse graphs, different data structures may make sense Spars Vs Dense Graphs Mudasser Naseer 11 1/9/2016

● An acyclic graph does not contain any cycles. Trees are connected acyclic undirected graphs. ● Directed acyclic graphs are called DAGs. They arise naturally in scheduling problems, where a directed edge (x; y) indicates that x must occur before y. Cyclic vs. Acyclic Graphs Mudasser Naseer 12 1/9/2016

Labeled vs. Unlabeled Graphs ● In labeled graphs, each vertex is assigned a unique name or identifier to distinguish it from all other vertices. ● An important graph problem is isomorphism testing, determining whether the topological structure of two graphs are in fact identical if we ignore any labels. Mudasser Naseer 13 1/9/2016

Subgraphs ● A subgraph S of a graph G is a graph such that ■ The edges of S are a subset of the edges of G ● A spanning subgraph of G is a subgraph that contains all the vertices of G Subgraph Spanning subgraph

Trees and Forests ● A (free) tree is an undirected graph T such that ■ T is connected ■ T has no cycles This definition of tree is different from the one of a rooted tree ● A forest is an undirected graph without cycles ● The connected components of a forest are trees Tree Forest

Spanning Trees and Forests ● A spanning tree of a connected graph is a spanning subgraph that is a tree ● A spanning tree is not unique unless the graph is a tree ● Spanning trees have applications to the design of communication networks ● A spanning forest of a graph is a spanning subgraph that is a forest Graph Spanning tree

Graph in Applications ● Internet: web graphs ■ Each page is a vertex ■ Each edge represent a hyperlink ■ Directed ● GPS: highway maps ■ Each city is a vertex ■ Each freeway segment is an undirected edge ■ Undirected ● Graphs are ubiquitous in computer science Mudasser Naseer 17 1/9/2016

Representing Graphs ● Assume V = {1, 2, …, n} ● An adjacency matrix represents the graph as a n x n matrix A: ■ A[i, j] = 1 if edge (i, j)  E (or weight of edge) = 0 if edge (i, j)  E Mudasser Naseer 18 1/9/2016

Graphs: Adjacency Matrix ● Example: a d bc A ? 3 4 Mudasser Naseer 19 1/9/2016

Graphs: Adjacency Matrix ● Example: a d bc A Mudasser Naseer 20 1/9/2016

Graphs: Adjacency Matrix ● How much storage does the adjacency matrix require? ● A: O(V 2 ) ● What is the minimum amount of storage needed by an adjacency matrix representation of an undirected graph with 4 vertices? ● A: 6 bits ■ Undirected graph  matrix is symmetric ■ No self-loops  don’t need diagonal Mudasser Naseer 21 1/9/2016

Graphs: Adjacency Matrix ● The adjacency matrix is a dense representation ■ Usually too much storage for large graphs ■ But can be very efficient for small graphs ● Most large interesting graphs are sparse ■ E.g., planar graphs, in which no edges cross, have |E| = O(|V|) by Euler’s formula ■ For this reason the adjacency list is often a more appropriate respresentation Mudasser Naseer 22 1/9/2016

Graphs: Adjacency List ● Adjacency list: for each vertex v  V, store a list of vertices adjacent to v ● Example: ■ Adj[1] = {2,3} ■ Adj[2] = {3} ■ Adj[3] = {} ■ Adj[4] = {3} ● Variation: can also keep a list of edges coming into vertex Mudasser Naseer 23 1/9/2016

Graphs: Adjacency List ● How much storage is required? ■ The degree of a vertex v in an undirected graph = # incident edges ○ Directed graphs have in-degree, out-degree ■ For directed graphs, # of items in adjacency lists is  out-degree(v) = |E| takes  (V + E) storage (Why?) ■ For undirected graphs, # items in adj lists is  degree(v) = 2 |E| also  (V + E) storage ● So: Adjacency lists take O(V+E) storage Mudasser Naseer 24 1/9/2016

Graph Representation Mudasser Naseer 25 1/9/2016

Google Problem:Graph Searching ● How to search and explore in the Web Space? ● How to find all web-pages and all the hyperlinks? ■ Start from one vertex “ ■ Systematically follow hyperlinks from the discovered vertex/web page ■ Build a search tree along the exploration Mudasser Naseer 26 1/9/2016

General Graph Searching ● Given: a graph G = (V, E), directed or undirected ● Goal: methodically explore every vertex and every edge ● Ultimately: build a tree on the graph ■ Pick a vertex as the root ■ Choose certain edges to produce a tree ■ Note: might also build a forest if graph is not connected Mudasser Naseer 27 1/9/2016

Breadth-First Search ● “Explore” a graph, turning it into a tree ■ One vertex at a time ■ Expand frontier of explored vertices across the breadth of the frontier ● Builds a tree over the graph ■ Pick a source vertex to be the root ■ Find (“discover”) its children, then their children, etc. Mudasser Naseer 28 1/9/2016

Breadth-First Search ● Again will associate vertex “colors” to guide the algorithm ■ White vertices have not been discovered ○ All vertices start out white ■ Grey vertices are discovered but not fully explored ○ They may be adjacent to white vertices ■ Black vertices are discovered and fully explored ○ They are adjacent only to black and gray vertices ● Explore vertices by scanning adjacency list of grey vertices Mudasser Naseer 29 1/9/2016

A ONM LKJ EFGH DCB I P 0 Mudasser Naseer 30 1/9/2016

A ONM LKJ EFGH DCB I P Mudasser Naseer 31 1/9/2016

A ONM LKJ EFGH DCB I P Mudasser Naseer 32 1/9/2016

A ONM LKJ EFGH DCB I P Mudasser Naseer 33 1/9/2016

A ONM LKJ EFGH DCB I P Mudasser Naseer 34 1/9/2016

A ONM LKJ EFGH DCB I P Mudasser Naseer 35 1/9/2016

A ONM LKJ EFGH DCB I P Mudasser Naseer 36 1/9/2016

A ONM LKJ EFGH DCB I P Mudasser Naseer 37 1/9/2016

Breadth-First Search BFS(G, s) { initialize vertices; Q = {s};// Q is a queue (duh); initialize to s while (Q not empty) { u = RemoveTop(Q); for each v  u->adj { if (v->color == WHITE) v->color = GREY; v->d = u->d + 1; v->p = u; Enqueue(Q, v); } u->color = BLACK; } What does v->p represent? What does v->d represent? Mudasser Naseer 38 1/9/2016

Breadth-First Search: Example         rstu vwxy Mudasser Naseer 39 1/9/2016

Breadth-First Search: Example   0      rstu vwxy s Q: Mudasser Naseer 40 1/9/2016

Breadth-First Search: Example 1  0 1     rstu vwxy w Q: r Mudasser Naseer 41 1/9/2016

Breadth-First Search: Example 1    rstu vwxy r Q: tx Mudasser Naseer 42 1/9/2016

Breadth-First Search: Example   rstu vwxy Q: txv Mudasser Naseer 43 1/9/2016

Breadth-First Search: Example  rstu vwxy Q: xvu Mudasser Naseer 44 1/9/2016

Breadth-First Search: Example rstu vwxy Q: vuy Mudasser Naseer 45 1/9/2016

Breadth-First Search: Example rstu vwxy Q: uy Mudasser Naseer 46 1/9/2016

Breadth-First Search: Example rstu vwxy Q: y Mudasser Naseer 47 1/9/2016

Breadth-First Search: Example rstu vwxy Q: Ø Mudasser Naseer 48 1/9/2016

BFS: The Code Again BFS(G, s) { initialize vertices; Q = {s}; while (Q not empty) { u = RemoveTop(Q); for each v  u->adj { if (v->color == WHITE) v->color = GREY; v->d = u->d + 1; v->p = u; Enqueue(Q, v); } u->color = BLACK; } What will be the running time? Touch every vertex: O(V) u = every vertex, but only once (Why?) So v = every vertex that appears in some other vert’s adjacency list Total running time: O(V+E) Mudasser Naseer 49 1/9/2016

BFS: The Code Again BFS(G, s) { initialize vertices; Q = {s}; while (Q not empty) { u = RemoveTop(Q); for each v  u->adj { if (v->color == WHITE) v->color = GREY; v->d = u->d + 1; v->p = u; Enqueue(Q, v); } u->color = BLACK; } What will be the storage cost in addition to storing the tree? Total space used: O(max(degree(v))) = O(E) Mudasser Naseer 50 1/9/2016

Breadth-First Search: Properties ● BFS calculates the shortest-path distance to the source node ■ Shortest-path distance  (s,v) = minimum number of edges from s to v, or  if v not reachable from s ● BFS builds breadth-first tree, in which paths to root represent shortest paths in G ■ Thus can use BFS to calculate shortest path from one vertex to another in O(V+E) time Mudasser Naseer 51 1/9/2016

Properties of BFS ● Proposition: Let G be a graph with n vertices and m edges. A BFS traversal of G takes time O(n + m). Also, there exist O(n + m) time algorithms based on BFS for the following problems: ■ Testing whether G is connected. ■ Computing a spanning tree of G ■ Computing the connected components of G ■ Computing, for every vertex v of G, the minimum number of edges of any path between s and v. Mudasser Naseer 52 1/9/2016