Introduction to Data Structure

1 / 49

# Introduction to Data Structure - PowerPoint PPT Presentation

Introduction to Data Structure. CHAPTER 6 GRAPHS. 6.1 The Graph Abstract Data Type 6.2 Elementary Graph Operations 6.3 Minimum Cost Spanning Trees 6.4 Shortest Paths and Transitive Closure 6.5 Activity Networks. Contents. Chapter 1 Basic Concepts Chapter 2 Arrays

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.

## PowerPoint Slideshow about 'Introduction to Data Structure' - gilmore-holly

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Introduction to Data Structure

CHAPTER 6

GRAPHS

6.1 The Graph Abstract Data Type

6.2 Elementary Graph Operations

6.3 Minimum Cost Spanning Trees

6.4 Shortest Paths and Transitive Closure

6.5 Activity Networks

Chapter 6 Graphs

Contents

Chapter 1 Basic Concepts

Chapter 2 Arrays

Chapter 3 Stacks and Queues

Chapter 5 Trees

Chapter 6 Graph

Chapter 7 Sorting

Chapter 8 Hashing

Chapter 9 Heap Structures

Chapter 10 Search Structures

Chapter 6 Graphs

6.1 The Graph Abstract Data Type

p. 263

structureGraph is

objects: a nonempty set of vertices and a set of undirected edges, where

each edge is a pair of vertices

functions: for all graphGraph, v, v1, and v2Vertices

Graph Create() ::= return an empty graph

Graph InsertVertex(graph, v) ::= return a graph with v inserted.

Graph InsertEdge(graph, v1, v2) ::= return a graph with a new edge

(v1, v2).

Graph DeleteVertex(graph, v) ::= return a graph with v and all its

incident edges removed.

Graph DeleteEdge(graph, v1, v2) ::= return a graph with the edge (v1, v2) removed.

Boolean IsEmpty(graph) ::= if (graph==empty) return TRUE

else return FALSE

List Adjacent(graph, v) ::= return a list of all vertices adjacent to v.

Chapter 6 Graphs

C

g

c

d

e

A

D

b

a

B

f

6.1.1 Introduction
• 1736, Euler Koenigberg Bridge Problem:
• Euler showed: there is a walk starting at any vertex, going through each edge exactly once and terminating at the start vertex iff the degree of each vertex is even
• called Eulerian walk.
• the degree of a vertex: # of edges incident to a vertex
• J. R. Newman: the world of Mathematics, 1956, p.573-580

attaching

Chapter 6 Graphs

V1

V2

1

2

3

6.1.2 Definitions
• A Graph, G = (V, E), consists of two sets V and E
• V: finite non-empty set of vertices
• E: set of pairs of vertices, edges, e.g.(1,2) or 1,2

Note: V(G): set of vertices of graph G E(G): set of edges of graph G

• Undirected Graph – the pair of vertices representing any edge is unordered. Thus, the pairs (V1,V2) and (V2,V1) represent the same edge.
• Directed Graph –each edge is represented by a directed pairs V1, V2 Note: V1, V2 and V2, V1 represent two different edges.

V(G) = {1, 2, 3}

E(G) = {1,2 2,3 3,1}

Chapter 6 Graphs

0

0

0

1

2

1

2

1

3

3

6

5

4

2

G3

Examples for Graph
• Examples for Graph

G2

G1

V(G1)={0,1,2,3} E(G1)={(0,1),(0,2),(0,3),(1,2),(1,3),(2,3)}

V(G2)={0,1,2,3,4,5,6} E(G2)={(0,1),(0,2),(1,3),(1,4),(2,5),(2,6)}

V(G3)={0,1,2} E(G3)={0,1, 1,0, 1,2}

• Note: Graph G2 is also a tree,  Tree is a special case of graph.

Chapter 6 Graphs

0

0

2

1

3

1

2

Examples for Graphlike Structure

(a)

(b)

Graph with a self edge

Multigraph:

multiple occurrences

of the same edge

Not consider as a graph in this book

Chapter 6 Graphs

0

1

2

3

Complete Graph

• A Complete Graph is a graph that has the maximum number of edges
• For undirected graph with n vertices, the maximum number of edges is n(n-1)/2
• For directed graph with n vertices, the maximum number of edges is n(n-1)
• Example: G1 is a complete graph

n(n-1)/2 = 6

Chapter 6 Graphs

0

1

2

G3

0

1

2

3

• If (v0, v1) is an edge in an undirected graph,
• Incident: The edge (v0, v1) is incident on vertices v0 and v1
• If <v0, v1> is an edge in a directed graph
• Incident: The edge <v0, v1> is incident on v0 and v1

The vertices adjacent to vertex 2: 0, 1 and 2

The edge incident on vertex 2: (0,2), (1,2) and (2,3)

The vertices adjacent to vertex 1: 0,

The edge incident on vertex 1: <0,1>, <1,0> and <1,2>

Chapter 6 Graphs

0

1

2

0

3

1

2

1

2

3

0

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

G1

0

1

2

3

Subgraph
• Subgraph
• A subgraph of G is a graph G’ →
• V(G’)  V(G)
• E(G’)  E(G)
• e.g. some of the subgraphs of G1:

Chapter 6 Graphs

0

0

0

0

1

1

1

1

0

2

2

2

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

G3

Subgraph (cont.)

• e.g. some of the subgraphs of G3:
• If G is connected with n vertices then its connected subgraph at least has n-1 edges.
• Why?

Chapter 6 Graphs

1

• 1,2,4 is a path
• 1,2,3 is not a path
• 1,2,4,2 is a path

2

3

4

Path

• Path: from vp to vq in G is a sequence of vertices vp, vi1, vi2,...,vin, vp  (vp, vi1), (vi1, vi2),..., (vin, vq)  E(G) if G is undirectedor vp, vi1, vi1, vi2,..., vin, vq  E(G) if G is directed
• eg.
• Length: The length of a path is the number of edges on it eg. Length of path 1,2,4 is 2

Chapter 6 Graphs

1

2

3

Simple Path

• Simple Path: is a path in which all vertices except possibly the first and last are distinct.
• e.g.1. 1,2,4 is a simple path, path: 1,2,4,2 is not a simple path.
• e.g.2.

1

• 1,2,4 is a path
• 1,2,3 is not a path
• 1,2,4,2 is a path

2

3

4

1,2,3,1 also a simple path with length 3.

1,2,3,1,2? path, length 4, not simple.

1,2,3,1,3 not a path.

Chapter 6 Graphs

0

1

2

3

6

5

4

1

2

3

Cycle
• Cycle: is a simple path, first and last vertices are same.
• eg. 1,2,3,1.
• Note: Directed cycle, Directed path.
• Acyclic graph

G2

tree (acyclic graph)

Chapter 6 Graphs

1

2

3

strongly

connected

4

strongly

connected

connected connected

Connected
• Connected
• Two vertices V1 and V2 are Connected:

if in an undirected graph G,

 a path in G from V1 to V2(or from V2 to V1 ∵undirected)

• Strongly Connected
• V1, V2 are Strongly Connected:

if in a directed graph (digraph) G’,  a path

in G from V1 to V2 and also from V2 to V1

• Graph (Strongly) Connected
• graph connected (graph strongly connected)

if  Vi, Vj  V(G),  a path from Vi to Vj in G

Chapter 6 Graphs

Connected Component
• Connected Component(Strongly Connected Component):

is a maximal connected subgraph.

eg.

for graph for digraph

1

1

3

2

3

G1

2

4

4

Two connected components of G1

1

1

G2

2

3

2

3

Two strongly connected components of G2

Chapter 6 Graphs

in-degree

out-degree

in-degree=1

out-degree=2

degree=3

Degree
• Degree of Vertex
• is the # of edges incident to that vertex eg.
• In Direct Graph
• If G has n vertices and e edge, di = degree of Vi, then

degree of V3 = 3

3

Chapter 6 Graphs

Network
• Network
• A graph with weighted edges is called.
• eg.

90

120

Diagraph G = (V,E)

Network N = (G,W) is a diagraph G

together with a real valued for w: E  R.

R is a real number w(u,v) is the weight of edge (arc) (u,v)  E.

150

100

210

Chapter 6 Graphs

6.1.3 Graph Representations

Chapter 6 Graphs

eg.

1

2

3

4

degree =

di

A

1

• symmetric
• space need n2 bits, but half can be saved

1

0

1

1

0

2

2

3

2

1

0

0

0

1

4

3

1

0

0

1

2

6 / 2 = 3 ... edges

4

0

0

1

0

1

• Let G = (V, E) with n vertices, n 1.The adjacency matrix of G is a 2-dimensional n  n matrix, A

A(i, j) = 1 iff (vi, vj) ( vi, vj for a diagraph)  E(G),

A(i, j) = 0 otherwise.

Chapter 6 Graphs

0

1

2

0

• not be symmetric

0

0

1

0

1

1

1

1

0

1

2

2

2

0

0

0

0

out-degree =

= dj

1

1

1

in-degree

• Eg. 2.

Chapter 6 Graphs

4

5

0

1

2

6

3

7

G4

Chapter 6 Graphs

• Questions:
• How many edges e are there in G?
• Determine the # of edges in G?
• Is G connected?
• Need check entries of the matrix. check n2 – n time. spend O(n2) time to determine e
• Note:

<< n2/2

(n: Diagonal entries are zero, need not check it)

e = 7 << n2/2 = 32

Chapter 6 Graphs

List

Orthogonal list

• Adjacency list: edge e  2e nodes.
• Easy random access for any particular vertex

0

G3

1

2

Chapter 6 Graphs

[0]

[1]

[2]

[3]

1

2

3

0

2

3

0

0

1

3

1

2

0

1

2

3

• An undirected graph with n vertices and e edges

n head nodes and 2e list nodes

Chapter 6 Graphs

4

[0]

[1]

[2]

[3]

[4]

[5]

[6]

[7]

1

2

0

3

0

3

5

0

1

2

5

1

2

6

6

4

3

5

7

6

7

G4

Chapter 6 Graphs

• Number of nodes in a graph:

= the number of nodes in adjacency list

• Number of edges in a graph

= determined in O(n+e)

• Out-degree of a vertex in a directed graph

= the number of nodes in its adjacency list

• In-degree of a vertex in a directed graph:

??? traverse the whole data structure

0

G3

1

2

n vertices

# of edges

Chapter 6 Graphs

1 NULL

[0]

[1]

[2]

0 NULL

0

1 NULL

1

2

 determine in-degree of a vertex in a fast way.

Chapter 6 Graphs

0

0

• Orthogonal representation

Sparse Matrix ???

2

1

0 1

1 2

1

1 0

2

Chapter 6 Graphs

N2

N1

N3

N4

markvertex1 vertex2 path1 path2

N5

N6

0 2 N3 N4

2 3

0 3 N5

1 2 N5 N6

0 1 N2 N4

1 3 N6

[0]

N1

edge(0,1)

[1]

edge(0,2)

N2

[2]

N3

edge(0,3)

[3]

edge(1,2)

N4

0

edge(1,3)

N5

1

2

edge(2,3)

N6

3

• Adjacency Multilists (以 edge 為主)

vertex 0: N1N2N3

vertex 1: N1N4N5

vertex 2: N2N4N6

vertex 3: N3N5N6

Chapter 6 Graphs

markvertex1 vertex2 Link 1 for V1

0 1 N2 N4

2 3

1 3 N6

1 2 N5 N6

0 2 N3 N4

0 3 N5

N2

N1

N3

[0]

N1

edge(0,1)

N4

[1]

N5

N6

edge(0,2)

N2

[2]

N3

edge(0,3)

[3]

edge(1,2)

N4

0

edge(1,3)

N5

1

2

edge(2,3)

N6

3

• Node Structures

vertex 0: N1N2N3

vertex 1: N1N4N5

vertex 2: N2N4N6

vertex 3: N3N5N6

Chapter 6 Graphs

N2

N1

N3

N4

N5

N6

e=6 

12 nodes

0

1

2

3

• Adjacency Multilists (以 edge 為主)

e=6  6 nodes

0

1

2

3

Chapter 6 Graphs

4

5

0

1

2

6

G4

3

7

6.2 Elementary Graph Operations

• TraversalGiven G = (V, E) and vertex v, find or visit all w V, such that w connects v.
• Method 1: Depth First Search (DFS) preorder tree traversal
• Method 2: Breadth First Search (BFS) level order tree traversal
• Connected Components (Application 1 of Graph traversal)
• Spanning Trees (Application 2 of Graph traversal)
• Minimum Cost Spanning Tree (Application 3 of Graph traversal)

Chapter 6 Graphs

Graph Operations: Graph Traversal

• Graph TraversalGiven: an undirected graph G = (V, E), a vertex v V(G)Interested in: visiting all vertices connected to v. (reachable)Approach: 1. Depth First Search (DFS). 2. Breadth First Search (BFS).

stack

DFS: 1,2,4,5,3,6

BFS: 1,2,3,4,5,6

1

2

3

Queue

6

4

5

Chapter 6 Graphs

[0]

[1]

[2]

[3]

[4]

[5]

[6]

[7]

1

2

0

3

0

4

6

0

5

2

1

1

7

6

5

4

3

1

7

2

7

7

2

7

3

4

5

6

6.2.1 Depth First Search

• Example

Chapter 6 Graphs

[0]

[1]

[2]

[3]

[4]

[5]

[6]

[7]

1

2

0

3

0

4

6

0

5

2

1

1

7

6

5

4

3

1

7

2

7

7

2

7

3

4

5

6

Depth First Search: Example

• Example 6.1: Depth first search v0, v1, v3, v7, v4, v5, v2, v6
• Program 6.1, p.273

2

5

4

7

7

stack

3

3

1

1

0

0

Chapter 6 Graphs

VISITED

1 2 3 4 5 6 7 8

1

2

3

4

5

6

7

8

Depth First Search: Algorithm

• Depth First SearchProcedure DFS(v)(* Array VISITED(n)  0 initially and VISITED(i)  1, if has visited*) VISITED(v)  1 print(v) for each vertex w adjacent to v do if VISITED(w) = 0 then call DFS(w) end end DFS

Output DFS: 1,2,4,8,5,6,3,7

V1

V2

V3

V2

V4

V5

V4

V8

V8

V5

V6

V7

V5

V6

V3

V3

V7

V7

Chapter 6 Graphs

Depth First Search: Time Complexity

e: # of edges

e edges 2e nodes

n: # of vertex

Chapter 6 Graphs

[0]

[1]

[2]

[3]

[4]

[5]

[6]

[7]

1

2

0

0

3

4

6

0

5

2

1

1

7

6

5

4

3

1

7

7

2

7

2

7

3

4

5

6

• Example 6.2: Breadth first search v0, v1,v2, v3, v4, v5, v6, v7
• Program 6:2 , p.275

Chapter 6 Graphs

procedure BFS(v) VISITED (v)  1 print (v) initialize Q with v while Q not =  do call DELETE Q(v,Q) for all vertices w adjacent to v do if VISITED (w)=0 then [ call ADDQ(w,Q); VISITED(w)  1, print(w)] end end end BFS

Q

visited

Chapter 6 Graphs

• eg.

V1

V3

V2

V6

V7

V4

V5

Print:

V1 , V2 , V3 , V4 , V5 , V6 , V7 , V8 .

V8

Chapter 6 Graphs

• Time complexity: by using Adjacency Matrix

while

for

n

n

O(n2)

Chapter 6 Graphs

• Time complexity: by using Adjacency List:

Total: d1 + d2 +...+ dn = O(e) where di = degree (vi) 

n

while

for di: degree of (vi)

di

O(e)

Chapter 6 Graphs

Applications of Graph Traversal

• Application 1. Finding components of a graph
• Application 2. Finding a spanning tree of a connected graph
• Application 3. Minimum cost spanning tree

Chapter 6 Graphs

VISITED

1

5

...

1 1 1 1

2

3

6

7

1

2

3 4 ...

8

4

8

DFS: 1 2 4 3 || 5 6 7 8 || BFS: 1 2 3 4 || 5 6 7 8 ||

6.2.3 Connected Components

Application 1. Finding Components of a Graph

Procedure COMP(G)

(* determine the connected components of G *)

for i  1 to n do VISITED(i)  0

for i  1 to n do

if VISITED(i) = 0

then call DFS(i); print(“||”)

end

end COMP

• Determine connected graph
• Invoke DFS or BFS

Chapter 6 Graphs

6.2.4 Spanning Trees

• Application 2. Finding a Spanning Tree of a Connected Graph
• Def.
• Application 2.1– obtaining circuit equations for an electrical network
• Application 2.2 – minimum cost spanning tree
• Def.
• Spanning TreeAny tree consisting only edges in G and including all vertices in G is called.
• i.e. minimal subgraph G’ of G, such that V(G’) =V(G) and G’ is connected.

Chapter 6 Graphs

Spanning Trees (cont.)

eg.

• How to find it?
• Modify BFS
• Procedure BFS(v)

If VISITTED(w)=0 then If VISITTED(w)=0 then

2.VISITTED(w)←1 2.

3.print(w) 3.

4.T = T∪{(v, w)}

...(How many?)

Ans：16 (EX.)

Chapter 6 Graphs

Spanning Trees (cont.)

• Modify Procedure DFS：同modify Procedure BFS
• e.g.
• Application 1– obtaining circuit equations for an electrical network

BFS: 1,2,3,4

DFS: 1,2,4,3

1

1

1

2

3

2

3

2

3

4

4

4

BF spanning tree

DF spanning tree

Chapter 6 Graphs

0

0

2

2

1

1

DFS Spanning

6

6

5

5

4

4

3

3

0

7

7

2

1

6

5

4

3

7

DFS Spanning Tree vs. BFS Spanning Tree

BFS Spanning

Chapter 6 Graphs