111
Indian Institute of Science Bangalore, India भारतीय विान संथान बंगलौर, भारत Department of Computational and Data Sciences ©Department of Computational and Data Science, IISc, 2016 This work is licensed under a Creative Commons Attribution 4.0 International License Copyright for external content used with attribution is retained by their original authors CDS Department of Computational and Data Sciences DS221 | 19 Sep – 19 Oct, 2017 Data Structures, Algorithms & Data Science Platforms Yogesh Simmhan [email protected]

DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

Indian Institute of ScienceBangalore, India

भारतीय विज्ञान संस्थान

बंगलौर, भारत

Department of Computational and Data Sciences

©Department of Computational and Data Science, IISc, 2016This work is licensed under a Creative Commons Attribution 4.0 International LicenseCopyright for external content used with attribution is retained by their original authors

CDSDepartment of Computational and Data Sciences

DS221 | 19 Sep – 19 Oct, 2017

Data Structures, Algorithms & Data Science Platforms

Yogesh Simmhans i m m h a n @ c d s . i i s c . a c . i n

Page 2: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

L4: GraphsGraph ADT, Algorithms

03-Oct-17 2

Slides courtesy:Venkatesh Babu, CDS, IISc

Page 3: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

What is a Graph?

A graph G = (V,E) is composed of:

V: set of vertices

E: set of edges connecting the vertices in V

An edge e = (u,v) is a pair of vertices

Example:

a b

c

d e

V= {a,b,c,d,e}

E= {(a,b),(a,c),(a,d),

(b,e),(c,d),(c,e),

(d,e)}

Page 4: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Applications Electronic circuit design

Transport networks

Biological Networks

CS16

http://www.pnas.org/content/103/50/19033/F3.expansion.html http://images.slideplayer.com/18/5684225/slides/slide_28.jpg

Page 5: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Applications

03-Oct-17 5http://allthingsgraphed.com/2014/10/16/your-linkedin-network/ http://allthingsgraphed.com/2014/11/12/code-graphs-5-top-open-source-data-projects/

Java Call Graph for Neo4JLinkedIn Social Network Graph

Page 6: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Terminology

If (v0, v1) is an edge in an undirected graph, ‣ v0 and v1 are adjacent, or are neighbors

‣ The edge (v0, v1) is incident on vertices v0 and v1

If <v0, v1> is an edge in a directed graph‣ v0 is adjacent to v1, and v1 is adjacent from v0

‣ The edge <v0, v1> is incident on v0 and v1

‣ v0 is the source vertex and v1 is the sink vertex

Page 7: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Terminology Vertices & edges can have labels that uniquely

identify them‣ Edge label can be formed from the pair of vertex labels it

is incident upon…assuming only one edge can exist between a pair of vertices

Edge weights indicate some measure of distance or cost to pass through that edge

03-Oct-17 7

3

3

2

65

2

1

14

4

1

5

Page 8: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

e di

n

( ) /0

1

2

Terminology

The degree of a vertex is the number of edges incident to that vertex

For directed graph, ‣ the in-degree of a vertex v is the number of edges

that have v as the sink vertex‣ the out-degree of a vertex v is the number of edges

that have v as the source vertex‣ if di is the degree of a vertex i in a graph G with n

vertices and e edges, the number of edges is

Why? Since adjacent vertices each count the adjoining edge, it will be counted twice

Page 9: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

0

1 2

3 4 5 6

G2

2

3 3

1 1 1 1

directed graph

0

1

2

G3

in:1, out: 1

in: 1, out: 2

in: 1, out: 0

Examples

3

0

1 2

3

33

3

G1

undirected graphs

Page 10: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Terminology

path is a sequence of vertices <v1,v2,. . .vk> such that consecutive vertices vi and vi+1 are adjacent

101 2 3 4 5 3 2 3 4 5

3

2

4

1

5

3

2

4

1

5

3

2

4

1

5

Page 11: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Terminology

simple path: no repeated vertices

cycle: simple path, except that the last vertex is the same as the first vertex

2 3 5

1 5 4 1

3

2

4

1

5

3

2

4

1

5

Page 12: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Terminology

Shortest Path: Path between two vertices where the sum of the edge weights is the smallest‣ Has to be a simple path (why?)

‣ Assume “unit weight” for edges if not specified

03-Oct-17 12

3

3

2

65

2

1

14

4

1

5

3

2

4

1

5

1 2 31 5 31 4 3

1 5 4 3

Page 13: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Connected Graph connected graph: any two vertices are connected by some path

connected not connected

Page 14: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Graph Diameter A graph’s dimeter is the distance of its longest

shortest path

if d(u,v) is the distance of the shortest path between vertices u and v, then:

diameter = Max(d(u,v)), for all u, v in V

A disconnected graph has an infinite diameter

03-Oct-17 14http://mathworld.wolfram.com/GraphDiameter.html

d=3 d=4 d=5 d=7

Page 15: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Subgraph

subgraph: subset of vertices and edges forming a graph

03-Oct-17 15

0 0

1 2 3

1 2 0

1 2

3(i) (ii) (iii) (iv)

(a) Some of the subgraph of G1

0

1 2

3

G1

Page 16: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Trees & Forests tree - connected graph without cycles

forest - collection of trees

tree

foresttree

tree

tree

Page 17: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Fully Connected Graph Let n = #vertices, and m = #edges

Complete graph (or) Fully connected graph: One in which all pairs of vertices are adjacent

How many total edges in a complete graph?‣ Each of the n vertices is incident to n-1 edges, however, we would have

counted each edge twice! Therefore, intuitively, m = n(n -1)/2.

If a graph is not complete:m < n(n -1)/2

n = 5

m = (5*4)/2 = 10

Page 18: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

More Connectivity

n 5m 4

n = #vertices

m = #edges

For a tree m = n - 1

n 5m 3If m < n - 1, G is

not connected

Page 19: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Connected Component A connected component is a maximal subgraph

that is connected. Cannot add vertices and edges from original graph and

retain connectedness.

A connected graph has exactly 1 component.

Page 20: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Clique A subgraph C of a graph G with edges between all

pairs of vertices

03-Oct-17 20

6

5

4

7

8

Clique

6

5

7G C

https://www.csc.ncsu.edu/faculty/samatova/practical-graph-mining-with-R

1

Page 21: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Maximal Clique

A maximal clique is a clique that is not part of a larger clique

03-Oct-17 21

Maximal Clique

6

5

7

8

6

5

4

7

8

Clique

6

5

7G

1

Page 22: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Directed vs. Undirected Graph

An undirected graph is one in which the pair of vertices in a edge is unordered, (v0, v1) = (v1,v0)

A directed graph (or Digraph) is one in which each edge is a directed pair of vertices, <v0, v1> != <v1,v0>

source sink

tail head

Page 23: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Graph Representation

Adjacency Matrix

Adjacency Lists Linked Adjacency Lists

Array Adjacency Lists

Page 24: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Adjacency Matrix

0/1 n x n matrix, where n = # of vertices

A(i,j) = 1 iff (i,j) is an edge

23

1

45

1 2 3 4 5

1

2

3

4

5

0 1 0 1 0

1 0 0 0 1

0 0 0 0 1

1 0 0 0 1

0 1 1 1 0

Page 25: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Adjacency Matrix Properties1 2 3 4 5

1

2

3

4

5

0 1 0 1 0

1 0 0 0 1

0 0 0 0 1

1 0 0 0 1

0 1 1 1 0

Diagonal entries are zero. Adjacency matrix of an undirected graph is

symmetric. A(i,j) = A(j,i) for all i and j.

23

1

45

Page 26: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Adjacency Matrix (Digraph)

23

1

45

1 2 3 4 5

1

2

3

4

5

0 0 0 1 0

1 0 0 0 1

0 0 0 0 0

0 0 0 0 1

0 1 1 0 0

Diagonal entries are zero.

Adjacency matrix of a directed graph need not be symmetric.

Page 27: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Adjacency Matrix

n2 bits of space

For an undirected graph, may store only lower or upper triangle (exclude diagonal)‣ (n2 -n)/2 bits

O(n) time to find vertex degree and/or vertices adjacent to a given vertex.

Page 28: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Adjacency Lists

Adjacency list for vertex i is a linear list of vertices adjacent from vertex i.

An array of n adjacency lists.

aList[1] = (2,4)

aList[2] = (1,5)

aList[3] = (5)

aList[4] = (5,1)

aList[5] = (2,4,3)

23

1

45

Page 29: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Linked Adjacency Lists Each adjacency list is a chain.

aList[1]

aList[5]

[2][3][4]

2 41 55

5 12 4 3

• Array Length = n• # of chain nodes = 2e (undirected graph)• # of chain nodes = e (digraph)

23

1

45

Page 30: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Array Adjacency Lists Each adjacency list is an array list.

aList[1]

aList[5]

[2][3][4]

2 41 55

5 12 4 3

• Array Length = n• # of list elements = 2e (undirected graph)• # of list elements = e (digraph)

23

1

45

Page 31: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Storing Weighted Graphs

Cost adjacency matrix‣ C(i,j) = cost of edge (i,j) instead of 0/1

Adjacency lists‣ Each list element is a pair (adjacent vertex, edge weight)

Page 32: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

ADT for Graphclass Vertex<V,E> {

int id;

V value;

int GetId();

V GetValue();

List<Edge<V,E>> Neighbors();

}

class Edge<V,E> {

int id;

E value;

int GetId();

E GetValue();

Vertex<V,E> GetSource();

Vertex<V,E> GetSink();

}

Page 33: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

ADT for Graphclass Graph<V,E>{

List<Vertex<V,E>> vertices;List<Edge<V,E>> edges;

void InsertVertex(Vertex<V,E> v);void InsertEdge(Edge<V,E> e);

bool DeleteVertex(int vid);bool DeleteEdge(int eid);

List<Vertex<V,E>> GetVertices();List<Edge<V,E>> GetEdges();

bool IsEmpty(graph);}

03-Oct-17 33

Page 34: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Sample Graph Problems

Graph traversal‣ Searching

‣ Shortest Paths

‣ Connectedness

‣ Spanning tree

Graph centrality‣ PageRank

‣ Betweenness centrality

Graph clustering

Page 35: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Graph Search & Traversal

Find a vertex (or edge) with a given ID or value‣ If list of vertices/edges is available, linear scan!

‣ BUT, goal here is to traverse the neighbors of the graph, not scan the list

Traverse through the graph to list all vertices in a particular order‣ Finding the item can be side-effect of traversal

03-Oct-17 35

Page 36: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Breadth-First Search Example

Start search at vertex 1.

23

8

10

1

45

9

116

7

Page 37: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Breadth-First Search Example

Visit/mark/label start vertex and put in a FIFO queue.

23

8

10

1

45

9

116

7

1

FIFO Queue

1

Page 38: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Breadth-First Search Example

Remove 1 from Q; visit adjacent unvisited vertices;

put in Q.

23

8

10

1

45

9

116

7

1

FIFO Queue

1

Page 39: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Breadth-First Search Example

Remove 1 from Q; visit adjacent unvisited vertices;

put in Q.

23

8

10

1

45

9

116

7

1

FIFO Queue2

2

4

4

Page 40: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Breadth-First Search Example

Remove 2 from Q; visit adjacent unvisited vertices;

put in Q.

23

8

10

1

45

9

116

7

1

FIFO Queue2

2

4

4

Page 41: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Breadth-First Search Example

Remove 2 from Q; visit adjacent unvisited vertices;

put in Q.

23

8

10

1

45

9

116

7

1

FIFO Queue2

4

4

5

53

3

6

6

Page 42: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Breadth-First Search Example

Remove 4 from Q; visit adjacent unvisited vertices;

put in Q.

23

8

10

1

45

9

116

7

1

FIFO Queue2

4

4

5

53

3

6

6

Page 43: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Breadth-First Search Example

Remove 4 from Q; visit adjacent unvisited vertices;put in Q.

23

8

10

1

45

9

116

7

1

FIFO Queue2

45

53

3

6

6

Page 44: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Breadth-First Search Example

Remove 5 from Q; visit adjacent unvisited vertices;put in Q.

23

8

10

1

45

9

116

7

1

FIFO Queue2

45

53

3

6

6

Page 45: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Breadth-First Search Example

Remove 5 from Q; visit adjacent unvisited vertices;put in Q.

23

8

10

1

45

9

116

7

1

FIFO Queue2

45

33

6

6

9

9

7

7

Page 46: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Breadth-First Search Example

Remove 3 from Q; visit adjacent unvisited vertices;put in Q.

23

8

10

1

45

9

116

7

1

FIFO Queue2

45

33

6

6

9

9

7

7

Page 47: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Breadth-First Search Example

Remove 3 from Q; visit adjacent unvisited vertices;put in Q.

23

8

10

1

45

9

116

7

1

FIFO Queue2

45

3

6

6

9

9

7

7

Page 48: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Breadth-First Search Example

Remove 6 from Q; visit adjacent unvisited vertices;put in Q.

23

8

10

1

45

9

116

7

1

FIFO Queue2

45

3

6

6

9

9

7

7

Page 49: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Breadth-First Search Example

Remove 6 from Q; visit adjacent unvisited vertices;put in Q.

23

8

10

1

45

9

116

7

1

FIFO Queue2

45

3

6

9

9

7

7

Page 50: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Breadth-First Search Example

Remove 9 from Q; visit adjacent unvisited vertices;put in Q.

23

8

10

1

45

9

116

7

1

FIFO Queue2

45

3

6

9

9

7

7

Page 51: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Breadth-First Search Example

Remove 9 from Q; visit adjacent unvisited vertices;put in Q.

23

8

10

1

45

9

116

7

1

FIFO Queue2

45

3

6

9

7

78

8

Page 52: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Breadth-First Search Example

Remove 7 from Q; visit adjacent unvisited vertices;put in Q.

23

8

10

1

45

9

116

7

1

FIFO Queue2

45

3

6

9

7

78

8

Page 53: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Breadth-First Search Example

Remove 7 from Q; visit adjacent unvisited vertices;put in Q.

23

8

10

1

45

9

116

7

1

FIFO Queue2

45

3

6

9

7

88

Page 54: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Breadth-First Search Example

Remove 8 from Q; visit adjacent unvisited vertices;put in Q.

23

8

10

1

45

9

116

7

1

FIFO Queue2

45

3

6

9

7

88

Page 55: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Breadth-First Search Example

Queue is empty. Search terminates.

23

8

10

1

45

9

116

7

1

FIFO Queue2

45

3

6

9

7

8

Page 56: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Breadth-First Search Property

All vertices reachable from the start vertex (including the start vertex) are visited.

Page 57: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Time Complexity Each visited vertex is added to (and so removed

from) the queue exactly once

When a vertex is removed from the queue, we examine its adjacent vertices O(v) if adjacency matrix is used, where v is number of

vertices in whole graph

O(d) if adjacency list is used, where d is edge degree

Total time Adjacency matrix: O(w.v), where w is number of

vertices in the connected component that is searched

Adjacency list: O(w+f), where f is number of edges in the connected component that is searched

Page 58: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Depth-First Search

depthFirstSearch(v) {

Label vertex v as reached;

for(each unreached vertex uadjacent to v)

depthFirstSearch(u);

}

Page 59: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Depth-First Search2

3

8

10

1

45

9

116

7

1

2

Start search at vertex 1.Label vertex 1 and do a depth first search from either 2 or 4.Suppose that vertex 2 is selected.

Page 60: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Depth-First Search Example2

3

8

10

1

45

9

116

7

Label vertex 2 and do a depth first search from either 3, 5, or 6.

Suppose that vertex 5 is selected.

1

22

5

Page 61: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Depth-First Search2

3

8

10

1

45

9

116

7

Label vertex 5 and do a depth first search from either 3, 7, or 9.

Suppose that vertex 9 is selected.

1

22

559

Page 62: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Depth-First Search2

3

8

10

1

45

9

116

7

Label vertex 9 and do a depth first search from either 6 or 8.

Suppose that vertex 8 is selected.

1

22

5599

8

Page 63: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

23

8

10

1

45

9

116

7

Label vertex 8 and return to vertex 9.

From vertex 9 do a dfs(6)

1

22

5599

88

Depth-First Search

6

Page 64: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

23

8

10

1

45

9

116

7

1

22

5599

88

Depth-First Search

66

4

Label vertex 6 and do a depth first search from either 4 or 7.

Suppose that vertex 4 is selected.

Page 65: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

23

8

10

1

45

9

116

7

1

22

5599

88

Depth-First Search

66

44

Label vertex 4 and return to 6.From vertex 6 do a dfs(7).

7

Page 66: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

23

8

10

1

45

9

116

7

1

22

5599

88

Depth-First Search

66

44

77

Label vertex 7 and return to 6.Return to 9.

Page 67: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

23

8

10

1

45

9

116

7

1

22

5599

88

66

44

77

Return to 5.

Depth-First Search

Page 68: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

23

8

10

1

45

9

116

7

1

22

5599

88

66

44

77

Do a dfs(3).

3

Depth-First Search

Page 69: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

23

8

10

1

45

9

116

7

1

22

5599

88

66

44

77

Label 3 and return to 5.Return to 2.

33

Depth-First Search

Page 70: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

23

8

10

1

45

9

116

7

1

22

5599

88

66

44

77

33

Depth-First Search

Return to 1.

Page 71: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

23

8

10

1

45

9

116

7

1

22

5599

88

66

44

77

33

Depth-First Search

Return to invoking method.

Page 72: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

DFS Properties DFS has same time complexity as BFS

DFS requires O(h) memory for recursive function stack calls while BFS requires O(w) queue capacity

Same properties with respect to path finding, connected components, and spanning trees.‣ Edges used to reach unlabeled vertices define a depth-first

spanning tree when the graph is connected.

One is better than the other for some problems, e.g.‣ When searching, if the item is far from source (leaves), then

DFS may locate it first, and vice versa for BFS‣ BFS traverses vertices at same distance (level) from source‣ DFS can be used to detect cycles (revisits of vertices in current

stack)

Page 73: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Shortest Path: Single source, single destination

Possible greedy algorithm‣ Leave source vertex using shortest edge

‣ Leave new vertex using cheapest edge, to reach an unvisited vertex

‣ Continue until destination is reached

03-Oct-17 73

Greedy Path from 1 To 7

DFS with shortest edge

selected!

Length of 12 is not shortest path!

Page 74: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Single Source Shortest Path

Shortest distance from one source vertex to all destination vertices

Is there a simple way to solve this?

…Say if you had an unit-weighted graph?

Just do Breadth First Search (BFS)!

03-Oct-17 74

Page 75: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

SSSP: BFS on Unweighted Graphs

03-Oct-17 75

0

1

4

4

5

1

2

3

4

2

3

3

Page 76: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

SSSP: BFS on Weighted Graphs?

03-Oct-17 76

01

2

1

3

6

2

1

4 3

5

4

3

1

Page 77: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

SSSP: BFS on Weighted Graphs?

03-Oct-17 77

0

3

1

1

2

1

3

6

2

1

4 3

5

4

3

1

Page 78: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

SSSP: BFS on Weighted Graphs?

03-Oct-17 78

0

3

1

9

3

1

2

1

3

6

2

1

4 3

5

4

3

1

Page 79: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

SSSP: BFS on Weighted Graphs?

03-Oct-17 79

0

3

1

9

13

3

11

4

1

2

1

3

6

2

1

4 3

5

4

3

1

Page 80: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

SSSP: BFS on Weighted Graphs?

03-Oct-17 80

0

3

15

16

1

9

13

16

3

5

4

1

2

1

3

6

2

1

4 3

5

4

3

1

Revisit, recalculate, re-propagate…cascading effect

Page 81: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

SSSP: BFS on Weighted Graphs?

03-Oct-17 81

0

3

9

16

17

1

9

13

10

3

5

4

1

2

1

3

6

2

1

4 3

5

4

3

1

Page 82: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

SSSP: BFS on Weighted Graphs?

03-Oct-17 82

0

3

15

13

11

1

9

13

10

3

5

4

1

2

1

3

6

2

1

4 3

5

4

3

1

BFS with revisits is not efficient. Can we be smart

about order of visits?

Page 83: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Dijkstra’s Single Source Shortest Path (SSSP) Prioritize the vertices to visit next‣ Pick “unvisited” vertex with shortest distance from

source

Do not visit vertices that have already been visited‣ Avoids false propagation of distances

03-Oct-17 83

Page 84: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Dijkstra’s Single Source Shortest Path (SSSP) Let w[u,v] be array with weight of edge from u to v

Initialize distance vector d[ ] for all vertices to infinity, except for source which is set to 0

Add all vertices to queue Q

while(Q is not empty)‣ Remove u from Q such that d[u] is the smallest in Q

‣ Add u to visited set

‣ for each v adjacent to u that is not visited• d’ = d[u] + w[u,v]

• if(d’ < d[v]) set d[v] = d’ & add v to Q

03-Oct-17 84

Only change relative to BFS!

Page 85: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

SSSP on Weighted Graphs

03-Oct-17 85

a

b

j

k

l

c

d

h

i

e

g

f

1

2

1

3

6

2

1

4 3

5

4

3

1

Work out!

Page 86: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

SSSP on Weighted Graphs

03-Oct-17 86

0

3

9

13

11

1

7

11

10

3

5

4

1

2

1

3

6

2

1

4 3

5

4

3

1

Page 87: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Complexity Using a linked list for queue, it takes O(v2 + e) For each vertex,

‣ we linearly search the linked list for smallest: O(v)‣ we check and update for each incident edge once: O(d)

When a min heap (priority queue) with distance as priority key, total time is O(e + v log v)‣ O(log v) to insert or remove from priority queue‣ O(v) remove min operations‣ O(e) change d[ ] value operations (insert/update)

When e is O(v2) [highly connected, small diameter], using a min heap is worse than using a linear list

When a Fibonacci heap is used, the total time is O(e + v log v)

03-Oct-17 87

Page 88: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Cycles And ConnectednessRemoval of an edge that is on a cycle does not affect

connectedness.

23

8

101

45

911

67

Page 89: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Cycles And ConnectednessConnected subgraph with all vertices and minimum

number of edges has no cycles.

23

8

101

45

911

67

Page 90: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Spanning Tree Communication Network Problems‣ Is the network connected?‣ Can we communicate between every pair of cities?‣ Find the components.‣ Want to construct smallest number of feasible links so

that resulting network is connected.

Subgraph that includes all vertices of the original graph.

Subgraph is a tree. If original graph has n vertices, the spanning tree has n

vertices and n-1 edges.

Page 91: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Minimum Cost Spanning Tree Tree cost is sum of edge weights/costs.

23

8

101

45

911

67

4

8

6

6

7

5

2

4

4 53

8

2

Page 92: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

A Spanning Tree

A Spanning tree, cost = 51.

23

8

101

45

911

67

4

8

6

6

7

5

2

4

4 53

8

2

Page 93: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Minimum Cost Spanning Tree

Minimum Spanning tree, cost = 41.

23

8

101

45

911

67

4

8

6

6

7

5

2

4

4 53

8

2

Page 94: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

A Wireless Broadcast TreeSource = 1, weights = needed power.

Cost = 4 + 8 + 5 + 6 + 7 + 8 + 3 = 41.

23

8

101

45

911

67

4

8

6

6

7

5

2

4

4 53

8

2

Page 95: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Graph Clustering Clustering: The process of dividing a set of input

data into possibly overlapping, subsets, where elements in each subset are considered related by some similarity measure

03-Oct-17 96Introduction to Graph Cluster Analysis, https://www.csc.ncsu.edu/faculty/samatova

2 Clusters

3 Clusters

Page 96: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Graph Clustering

Between-graph‣ Clustering a set of graphs

‣ E.g. structural similarity between chemical compounds

Within-graph‣ Clustering the nodes/edges of a single graph

‣ E.g., In a social networking graph, these clusters could represent people with same/similar hobbies

03-Oct-17 97Introduction to Graph Cluster Analysis, https://www.csc.ncsu.edu/faculty/samatova

Page 97: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Graph Clustering: k-spanning Tree

03-Oct-17 98Introduction to Graph Cluster Analysis, https://www.csc.ncsu.edu/faculty/samatova

98

1

2

3

4

5

2

3 2Remove k-1 edges with

highest weight4

Minimum Spanning Tree

Note: k – is the number of clusters

E.g., k=3

1

2

3

4

5

2

3 2

4

E.g., k=3

1

2

3

4

5

3 Clusters

Page 98: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Graph Clustering: k-means Clustering1. Identify k random vertices as centers, label them with

unique colors2. Start BFS traversal from each center, one level at a

time3. Label the vertices reached from each BFS center with

its colors4. If multiple centers reach the same vertex at same

level, pick one of the colors5. Continue propagation till all vertices colored6. Calculate edge-cuts between vertices of different

colors7. If cut less than threshold, stop. Else repeat and pick k

new centers

03-Oct-17 99

Page 99: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

K-Means Clusteringk=2, maxcut = 2

03-Oct-17 100

a

b

j

k

l

c

d

h

i

e

g

f

Page 100: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

K-Means Clustering

03-Oct-17 101

a

b

j

k

l

c

d

h

i

e

g

fPick k random vertices

Page 101: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

K-Means Clustering

03-Oct-17 102

a

b

j

k

l

c

d

h

i

e

g

f

Perform k BFS simultaneously

Page 102: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

K-Means Clustering

03-Oct-17 103

a

b

j

k

l

c

d

h

i

e

g

f

Perform k BFS simultaneously

Page 103: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

K-Means Clustering

03-Oct-17 104

a

b

j

k

l

c

d

h

i

e

g

f

Pick one of the two colors

All vertices coloredCut = 3; Cut > MaxCutRepeat!

Pick one of the two colors

Page 104: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

K-Means Clustering

03-Oct-17 105

a

b

j

k

l

c

d

h

i

e

g

fPick k random vertices

Page 105: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

K-Means Clustering

03-Oct-17 106

a

b

j

k

l

c

d

h

i

e

g

f

Perform k BFS simultaneously

Page 106: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

K-Means Clustering

03-Oct-17 107

a

b

j

k

l

c

d

h

i

e

g

f

Pick one of the two colors

All vertices coloredCut = 2; Cut <= MaxCutDone!

Page 107: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

PageRank

Centrality measure of web page quality based on the web structure‣ How important is this vertex in the graph?

Random walk‣ Web surfer visits a page, randomly clicks a link on that

page, and does this repeatedly.‣ How frequently would each page appear in this surfing?

Intuition‣ Expect high-quality pages to contain “endorsements”

from many other pages thru hyperlinks‣ Expect if a high-quality page links to another page, then

the second page is likely to be high quality too

2016-03-16 108Simmhan, SSDS, 2016; Lin, Ch 5.3 PAGERANK

Page 108: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

PageRank, recursively

P(n) is PageRank for webpage/URL ‘n’‣ Probability that you’re in vertex ‘n’

|G| is number of URLs (vertices) in graph

α is probability of random jump

L(n) is set of vertices that link to ‘n’

C(m) is out-degree of ‘m’

Initial P(n) = 1/|G|

2016-03-16 109Simmhan, SSDS, 2016; Lin, Ch 5.3 PAGERANK

Page 109: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

PageRank Iterations

2016-03-16 110

α=0Initialize P(n)=1/|G|

Lin, Fig 5.7

Page 110: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

CDS.IISc.ac.in | Department of Computational and Data Sciences

Tasks Self study‣ Read: Graphs and graph algorithms (online sources)

Attend tutorial on C++, turing cluster at 5pm today

Finish Assignment 2 by Fri Oct 13 (10% points)‣ Posted online today

03-Oct-17 111

Page 111: DS221 | 19 Sep 19 Oct, 2017 Data Structures, …cds.iisc.ac.in/wp-content/uploads/DS221.L4.Graphs.pdfCDS.IISc.ac.in | Department of Computational and Data Sciences e d i n ( ) / 0

©Department of Computational and Data Science, IISc, 2016This work is licensed under a Creative Commons Attribution 4.0 International LicenseCopyright for external content used with attribution is retained by their original authors

CDS.IISc.ac.in | Department of Computational and Data Sciences

Department of Computational and Data Sciences

Questions?

03-Oct-17 112