CS350: Data Structures Graphs - GitHub Pages · CS350: Data Structures Graph Data Structure •...

12
CS350: Data Structures © James Moscola James Moscola Department of Engineering & Computer Science York College of Pennsylvania CS350: Data Structures Graphs

Transcript of CS350: Data Structures Graphs - GitHub Pages · CS350: Data Structures Graph Data Structure •...

Page 1: CS350: Data Structures Graphs - GitHub Pages · CS350: Data Structures Graph Data Structure • Graphs have many uses: - Representing the control-flow of a program - Underlying data

CS350: Data Structures © James Moscola

College Catalog2009–2011

!"#$%&'())*+,-.)/.&01234546708.9:;*&<:(#.="#>&1015?26511??@A9/**/")*&<B!&C(>&1015?2D50633

05?3352775?30?EEEF+C:F(A;

!""#$%%&'$#()*$&+$,-$%.$"

'GHI<GJHK&L<MNK'GONJHK&P@JJHGMFIF&'<IJ@QH&'@OK

!<GR%&'@'HGPOJ&N<F&012

YO

RK

CO

LLEGE O

F PENN

SY

LVA

NIA

CO

LLEGE C

ATA

LOG

2009–2011

!""#$%&'()*+,--.../ 012$1$"..."34#3$4.56

College Catalog2009–2011

!"#$%&'())*+,-.)/.&01234546708.9:;*&<:(#.="#>&1015?26511??@A9/**/")*&<B!&C(>&1015?2D50633

05?3352775?30?EEEF+C:F(A;

!""#$%%&'$#()*$&+$,-$%.$"

'GHI<GJHK&L<MNK'GONJHK&P@JJHGMFIF&'<IJ@QH&'@OK

!<GR%&'@'HGPOJ&N<F&012

YO

RK

CO

LLEGE O

F PENN

SY

LVA

NIA

CO

LLEGE C

ATA

LOG

2009–2011

!""#$%&'()*+,--.../ 012$1$"..."34#3$4.56

College Catalog2009–2011

!"#$%&'())*+,-.)/.&01234546708.9:;*&<:(#.="#>&1015?26511??@A9/**/")*&<B!&C(>&1015?2D50633

05?3352775?30?EEEF+C:F(A;

!""#$%%&'$#()*$&+$,-$%.$"

'GHI<GJHK&L<MNK'GONJHK&P@JJHGMFIF&'<IJ@QH&'@OK

!<GR%&'@'HGPOJ&N<F&012

YO

RK

CO

LLEGE O

F PENN

SY

LVA

NIA

CO

LLEGE C

ATALO

G 2009–2011

!""#$%&'()*+,--.../ 012$1$"..."34#3$4.56

James MoscolaDepartment of Engineering & Computer ScienceYork College of Pennsylvania

CS350: Data StructuresGraphs

Page 2: CS350: Data Structures Graphs - GitHub Pages · CS350: Data Structures Graph Data Structure • Graphs have many uses: - Representing the control-flow of a program - Underlying data

CS350: Data Structures

Graph Data Structure

• A graph is a data structure consisting of a set of vertices connected by edges

• The following can all be considered special cases of a graph data structure - Linked lists- Trees- Skip lists

2

G = (V, E)where V is the set of vertices and E is the set of edges

Page 3: CS350: Data Structures Graphs - GitHub Pages · CS350: Data Structures Graph Data Structure • Graphs have many uses: - Representing the control-flow of a program - Underlying data

CS350: Data Structures

Graph Data Structure

• Graphs have many uses: - Representing the control-flow of a program- Underlying data structure for mapping/navigation systems

• Each vertex represents an intersection• Each edge represents a road between intersections

• A node and/or an edge in a graph may have some additional information associated with it

- For the mapping system:• Each vertex may have a GPS coordinate associated with it• Each edge may have a distance and/or a speed-limit associated with it

- The value or values associated with an edge are sometimes referred to as the weight of the edge

3

Page 4: CS350: Data Structures Graphs - GitHub Pages · CS350: Data Structures Graph Data Structure • Graphs have many uses: - Representing the control-flow of a program - Underlying data

CS350: Data Structures

Graph Data Structure

• A graph can be defined as follows:

• Each edge is a pair (v, w) where v, w ∈ V

• In a directed graph, the ordering of an edge pair matters - (v, w) ≠ (w, v)

• In an undirected graph, the ordering of an edge pair does not matter - (v, w) = (w, v)

4

G = (V, E)where V is the set of vertices and E is the set of edges

wv vw≠

wv vw=

Page 5: CS350: Data Structures Graphs - GitHub Pages · CS350: Data Structures Graph Data Structure • Graphs have many uses: - Representing the control-flow of a program - Underlying data

CS350: Data Structures

Example of a Directed Graph with Weights

5

V0 V1

V2 V3 V4

V5 V6

2

1 3 104

8 4 65

1

2 2

(V0, V1, 2), (V0, V3, 1), (V1, V3, 3), (V1, V4, 10),(V3, V4, 2), (V3, V6, 4), (V3, V5, 8), (V3, V2, 2),(V2, V0, 4), (V2, V5, 5), (V4, V6, 6), (V6, V5, 1)

E = { }

Vertex V1 is adjacent to vertex V0

Vertex V4 is adjacent to vertex V3 and vertex V1

Page 6: CS350: Data Structures Graphs - GitHub Pages · CS350: Data Structures Graph Data Structure • Graphs have many uses: - Representing the control-flow of a program - Underlying data

CS350: Data Structures

Example of a Directed Graph with Weights

6

V0 V1

V2 V3 V4

V5 V6

2

1 3 104

8 4 65

1

2 2

• The path length between two vertices is the number of edges that must be traversed to get from one vertex to the other

- Multiple paths may exist between two vertices- Example: path length from V2 to V4 is 3 -- (V2→V0→V1→V4)

Page 7: CS350: Data Structures Graphs - GitHub Pages · CS350: Data Structures Graph Data Structure • Graphs have many uses: - Representing the control-flow of a program - Underlying data

CS350: Data Structures

Example of a Directed Graph with Weights

7

V0 V1

V2 V3 V4

V5 V6

2

1 3 104

8 4 65

1

2 2

• The weighted path length between two vertices is the sum of the weights of the edges along the path

- Multiple paths may exist between two vertices- Example: weighted path length from V2 to V4 is 16 (or 7, or 11, ...)

Page 8: CS350: Data Structures Graphs - GitHub Pages · CS350: Data Structures Graph Data Structure • Graphs have many uses: - Representing the control-flow of a program - Underlying data

CS350: Data Structures

Example of a Directed Graph with Weights

8

V0 V1

V2 V3 V4

V5 V6

2

1 3 104

8 4 65

1

2 2

• A cycle in a directed graph is a path that begins and ends at the same vertex and contains at least one edge

- A directed graph may have zero, one, or more cycles- A graph with cycles is said to be cyclic, whereas a graph with no cycles is said to be acyclic

Page 9: CS350: Data Structures Graphs - GitHub Pages · CS350: Data Structures Graph Data Structure • Graphs have many uses: - Representing the control-flow of a program - Underlying data

CS350: Data Structures

Graph Representations

• There are two common representations for graphs, the first is an adjacency matrix - Utilizes a 2-dimensional matrix, where each vertex is represented by

both a row and a column

- Each location in the matrix, mat[v][w], represents the weight of a directed edge between vertex v and vertex w• If no edge exists between a vertex v and a vertex w, then set the

edge weight in the matrix to INFINITY- Constant time operation to find info about any edge- Requires O(|V|2) space to store matrix

• Can be wasteful if representing a sparse graph, that is, a graph without many edge

9

Page 10: CS350: Data Structures Graphs - GitHub Pages · CS350: Data Structures Graph Data Structure • Graphs have many uses: - Representing the control-flow of a program - Underlying data

CS350: Data Structures

Adjacency Matrix Representation

10

V0 V1

V2 V3 V4

V5 V6

2

1 3 104

8 4 65

1

2 2

V0 V1 V2 V3 V4 V5 V6

V0 ∞ 2 ∞ 1 ∞ ∞ ∞V1 ∞ ∞ ∞ 3 10 ∞ ∞V2 4 ∞ ∞ ∞ ∞ 5 ∞V3 ∞ ∞ 2 ∞ 2 8 4

V4 ∞ ∞ ∞ ∞ ∞ ∞ 6

V5 ∞ ∞ ∞ ∞ ∞ ∞ ∞V6 ∞ ∞ ∞ ∞ ∞ 1 ∞

Page 11: CS350: Data Structures Graphs - GitHub Pages · CS350: Data Structures Graph Data Structure • Graphs have many uses: - Representing the control-flow of a program - Underlying data

CS350: Data Structures

Graph Representations

• Another graph representation is the adjacency list - The graph is represented as a list of edges

• For each vertex, keep a list of all adjacent vertices- Each edge appears in an adjacency list, thus the space required is

O(|E|)• Better suited for sparse graphs

- May take additional time to search lists to see if an edge exists between two vertices

11

Page 12: CS350: Data Structures Graphs - GitHub Pages · CS350: Data Structures Graph Data Structure • Graphs have many uses: - Representing the control-flow of a program - Underlying data

CS350: Data Structures

Adjacency List Representation

12

V0 V1

V2 V3 V4

V5 V6

2

1 3 104

8 4 65

1

2 2

V4 (2)V3 V6 (4) V5 (8) V2 (2)

V6 (6)V4

V5

V5 (1)V6

V0 (4)V2 V5 (5)

V4 (10)V1 V3 (3)

V1 (2)V0 V3 (1)