Graphs in data structures

Savit Chandra
GRAPH
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)}
Applications
• electronic circuits
• networks (roads, flights, communications)
CS16
LAX
JFK
LAX
DFW
STL
HNL
FTL
Terminology:
Adjacent and Incident
• If (v0, v1) is an edge in an undirected graph,
– v0 and v1 are adjacent
– 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
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 head
the out-degree of a vertex v is the number of edges
that have v as the tail
if di is the degree of a vertex i in a graph G with n
vertices and e edges, the number of edges is
e di
n
=
−
∑( ) /
0
1
2
Terminology:
Degree of a Vertex
Why? Since adjacent vertices each
count the adjoining edge, it will be
counted twice
0
1 2
3 4 5 6
G1 G2
3 2
3 3
1 1 1 1
directed graph
in-degree
out-degree
0
1
2
G3
in:1, out: 1
in: 1, out: 2
in: 1, out: 0
0
1 2
3
33
3
Examples
Terminology:
Path
• path: sequence of
vertices v1,v2,. . .vk such
that consecutive vertices vi
and vi+1 are adjacent.
7
3
3 3
3
2
a b
c
d e
a b
c
d e
a b e d c b e d c
More Terminology
• simple path: no repeated vertices
• cycle: simple path, except that the last vertex is the same as the first
vertex
a b
c
d e
b e c
a c d a
a b
c
d e
Even More Terminology
• subgraph: subset of vertices and edges forming a graph
• connected component: maximal connected subgraph. E.g., the graph below has
3 connected components.
connected not connected
•connected graph: any two vertices are connected by some path
0 0
1 2 3
1 2 0
1 2
3(i) (ii) (iii) (iv)
(a) Some of the subgraph of G1
0 0
1
0
1
2
0
1
2
(i) (ii) (iii) (iv)
(b) Some of the subgraph of G3
0
1 2
3
G1
0
1
2
G3
Subgraphs Examples
More…
• tree - connected graph without cycles
• forest - collection of trees
tree
forest
tree
tree
tree
Connectivity
• Let n = #vertices, and m = #edges
• A complete 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.
• Therefore, if a graph is not complete, m < n(n -1)/2
n = 5
m = (5 ∗ 4)/2 = 10
More Connectivity
n = #vertices
m = #edges
• For a tree m = n - 1
n = 5
m = 4
n = 5
m = 3
If m < n - 1, G is
not connected
Oriented (Directed) Graph
• A graph where edges are directed
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 is one in which each edge is
a directed pair of vertices, <v0, v1> != <v1,v0>
tail head
ADT for Graph
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. v has no
incident edge.
Graph InsertEdge(graph, v1,v2)::= return a graph with new edge
between v1 and v2
Graph DeleteVertex(graph, v)::= return a graph in which v and all edges
incident to it are removed
Graph DeleteEdge(graph, v1, v2)::=return a graph in which the edge (v1, v2)
is removed
Boolean IsEmpty(graph)::= if (graph==empty graph) return TRUE
else return FALSE
List Adjacent(graph,v)::= return a list of all vertices that are adjacent to v
Graph Representations
Adjacency Matrix
Adjacency Lists
Adjacency Matrix
Let G=(V,E) be a graph with n vertices.
The adjacency matrix of G is a two-dimensional
n by n array, say adj_mat
If the edge (vi, vj) is in E(G), adj_mat[i][j]=1
If there is no such edge in E(G), adj_mat[i][j]=0
The adjacency matrix for an undirected graph is
symmetric; the adjacency matrix for a digraph
need not be symmetric
Examples for Adjacency Matrix
0
1
1
1
1
0
1
1
1
1
0
1
1
1
1
0












0
1
0
1
0
0
0
1
0










0
1
1
0
0
0
0
0
1
0
0
1
0
0
0
0
1
0
0
1
0
0
0
0
0
1
1
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
1
0
1
0
0
0
0
0
0
1
0
1
0
0
0
0
0
0
1
0


























G1
G2
G4
0
1 2
3
0
1
2
1
0
2
3
4
5
6
7
symmetric
undirected: n2
/2
directed: n2
Merits of Adjacency Matrix
From the adjacency matrix, to determine the
connection of vertices is easy
The degree of a vertex is
For a digraph (= directed graph), the row sum is
the out_degree, while the column sum is the
in_degree
adj mat i j
j
n
_ [ ][ ]
=
−
∑0
1
ind vi A j i
j
n
( ) [ , ]=
=
−
∑
0
1
outd vi A i j
j
n
( ) [ , ]=
=
−
∑
0
1
Adjacency Lists (data structures)
#define MAX_VERTICES 50
typedef struct node *node_pointer;
typedef struct node {
int vertex;
struct node *link;
};
node_pointer graph[MAX_VERTICES];
int n=0; /* vertices currently in use */
Each row in adjacency matrix is represented as an adjacency list.
0
1
2
3
0
1
2
0
1
2
3
4
5
6
7
1 2 3
0 2 3
0 1 3
0 1 2
G1
1
0 2
G3
1 2
0 3
0 3
1 2
5
4 6
5 7
6
G4
0
1 2
3
0
1
2
1
0
2
3
4
5
6
7
An undirected graph with n vertices and e edges ==> n head nodes and 2e list nodes
Some Operations
degree of a vertex in an undirected graph
–# of nodes in adjacency list
# of edges in a graph
–determined in O(n+e)
out-degree of a vertex in a directed graph
–# of nodes in its adjacency list
in-degree of a vertex in a directed graph
–traverse the whole data structure
Graph Traversal
• Problem: Search for a certain node or traverse
all nodes in the graph
• Depth First Search
– Once a possible path is found, continue the search
until the end of the path
• Breadth First Search
– Start several paths at a time, and advance in each
one step at a time
Depth-First Search
M N O P
I J K L
E F G H
A B C D
Exploring a Labyrinth
Without Getting Lost
• A depth-first search (DFS) in an undirected graph G is like wandering
in a labyrinth with a string and a can of red paint without getting lost.
• We start at vertex s, tying the end of our string to the point and painting
s “visited”. Next we label s as our current vertex called u.
• Now we travel along an arbitrary edge (u, v).
• If edge (u, v) leads us to an already visited vertex v we return to u.
• If vertex v is unvisited, we unroll our string and move to v, paint v
“visited”, set v as our current vertex, and repeat the previous steps.
Breadth-First Search
• Like DFS, a Breadth-First Search (BFS) traverses a connected component of a
graph, and in doing so defines a spanning tree with several useful properties.
• The starting vertex s has level 0, and, as in DFS, defines that point as an
“anchor.”
• In the first round, the string is unrolled the length of one edge, and all of the
edges that are only one edge away from the anchor are visited.
• These edges are placed into level 1
• In the second round, all the new edges that can be reached by unrolling the
string 2 edges are visited and placed in level 2.
• This continues until every vertex has been assigned a level.
• The label of any vertex v corresponds to the length of the shortest path from s
to v.
27
BFS - A Graphical Representation
M N O P
I J K L
E F G H
A B C D
0
M N O P
I J K L
E F G H
A B C D
0 1
28M N O P
I J K L
E F G H
A C DB
0 1 2
M N O P
I J K L
E F G H
A B C D
0 1 2 3
d)c)
b)a)
More BFS
M N O P
I J K L
E F G H
A B C D
4
0 1 2 3
M N O P
I J K L
E F G H
A B C D
4
5
0 1 2 3
Applications: Finding a Path
• Find path from source vertex s to destination
vertex d
• Use graph search starting at s and terminating as
soon as we reach d
– Need to remember edges traversed
• Use depth – first search ?
• Use breath – first search?
DFS vs. BFS
E
F
G
B
CD
A start
destination
A DFS on A A
DFS on BB
A
DFS on C
B
C
A
B Return to call on B
D Call DFS on D
A
B
D
Call DFS on GG found destination - done!
Path is implicitly stored in DFS recursion
Path is: A, B, D, G
DFS Process
DFS vs. BFS
E
F
G
B
CD
A start
destination
BFS Process
A
Initial call to BFS on A
Add A to queue
B
Dequeue A
Add B
frontrear frontrear
C
Dequeue B
Add C, D
frontrear
D D
Dequeue C
Nothing to add
frontrear
G
Dequeue D
Add G
frontrear
found destination - done!
Path must be stored separately
1 de 32

Recomendados

Graphs bfs dfs por
Graphs bfs dfsGraphs bfs dfs
Graphs bfs dfsJaya Gautam
17.1K vistas19 diapositivas
Graph Data Structure por
Graph Data StructureGraph Data Structure
Graph Data StructureAfaq Mansoor Khan
300 vistas32 diapositivas
Adjacency list por
Adjacency listAdjacency list
Adjacency listStefi Yu
4.5K vistas15 diapositivas
Dijkstra por
DijkstraDijkstra
Dijkstrajagdeeparora86
6.6K vistas22 diapositivas
Graphs in data structure por
Graphs in data structureGraphs in data structure
Graphs in data structurehamza javed
1.8K vistas32 diapositivas
Minimum spanning tree por
Minimum spanning treeMinimum spanning tree
Minimum spanning treeAmit Rathi
1.3K vistas37 diapositivas

Más contenido relacionado

La actualidad más candente

Tree Traversal por
Tree TraversalTree Traversal
Tree TraversalMdIsrailFakirGUB
707 vistas14 diapositivas
DFS and BFS por
DFS and BFSDFS and BFS
DFS and BFSsatya parsana
13.1K vistas39 diapositivas
Data structure - Graph por
Data structure - GraphData structure - Graph
Data structure - GraphMadhu Bala
6.4K vistas28 diapositivas
Dijkstra’S Algorithm por
Dijkstra’S AlgorithmDijkstra’S Algorithm
Dijkstra’S Algorithmami_01
41.1K vistas15 diapositivas
Best for b trees por
Best for b treesBest for b trees
Best for b treesDineshRaaja
12.6K vistas46 diapositivas
Graph in data structure por
Graph in data structureGraph in data structure
Graph in data structureAbrish06
43.2K vistas24 diapositivas

La actualidad más candente(20)

Data structure - Graph por Madhu Bala
Data structure - GraphData structure - Graph
Data structure - Graph
Madhu Bala6.4K vistas
Dijkstra’S Algorithm por ami_01
Dijkstra’S AlgorithmDijkstra’S Algorithm
Dijkstra’S Algorithm
ami_0141.1K vistas
Best for b trees por DineshRaaja
Best for b treesBest for b trees
Best for b trees
DineshRaaja12.6K vistas
Graph in data structure por Abrish06
Graph in data structureGraph in data structure
Graph in data structure
Abrish0643.2K vistas
Terminology of tree por RacksaviR
Terminology of treeTerminology of tree
Terminology of tree
RacksaviR1.6K vistas
Depth First Search and Breadth First Search por Nisha Soms
Depth First Search and Breadth First SearchDepth First Search and Breadth First Search
Depth First Search and Breadth First Search
Nisha Soms180 vistas
Dijkstra’s algorithm por faisal2204
Dijkstra’s algorithmDijkstra’s algorithm
Dijkstra’s algorithm
faisal22048.9K vistas
Shortest path algorithms por Amit Rathi
Shortest path algorithmsShortest path algorithms
Shortest path algorithms
Amit Rathi1.8K vistas
Graph traversal-BFS & DFS por Rajandeep Gill
Graph traversal-BFS & DFSGraph traversal-BFS & DFS
Graph traversal-BFS & DFS
Rajandeep Gill1.3K vistas
THREADED BINARY TREE AND BINARY SEARCH TREE por Siddhi Shrivas
THREADED BINARY TREE AND BINARY SEARCH TREETHREADED BINARY TREE AND BINARY SEARCH TREE
THREADED BINARY TREE AND BINARY SEARCH TREE
Siddhi Shrivas8K vistas
A presentation on prim's and kruskal's algorithm por Gaurav Kolekar
A presentation on prim's and kruskal's algorithmA presentation on prim's and kruskal's algorithm
A presentation on prim's and kruskal's algorithm
Gaurav Kolekar10.6K vistas
Graphs in Data Structure por hafsa komal
 Graphs in Data Structure Graphs in Data Structure
Graphs in Data Structure
hafsa komal2.2K vistas

Destacado

Graphss por
GraphssGraphss
Graphssfika sweety
4.1K vistas18 diapositivas
Data Structures, Graphs por
Data Structures, GraphsData Structures, Graphs
Data Structures, GraphsJibrael Jos
482 vistas33 diapositivas
Memory allocation in c por
Memory allocation in cMemory allocation in c
Memory allocation in cPrabhu Govind
3.7K vistas24 diapositivas
Data structure computer graphs por
Data structure computer graphsData structure computer graphs
Data structure computer graphsKumar
4.4K vistas22 diapositivas
Data Structures - Lecture 10 [Graphs] por
Data Structures - Lecture 10 [Graphs]Data Structures - Lecture 10 [Graphs]
Data Structures - Lecture 10 [Graphs]Muhammad Hammad Waseem
6.4K vistas52 diapositivas
Matrix Representation Of Graph por
Matrix Representation Of GraphMatrix Representation Of Graph
Matrix Representation Of GraphAbhishek Pachisia
26.1K vistas8 diapositivas

Destacado(8)

Data Structures, Graphs por Jibrael Jos
Data Structures, GraphsData Structures, Graphs
Data Structures, Graphs
Jibrael Jos482 vistas
Memory allocation in c por Prabhu Govind
Memory allocation in cMemory allocation in c
Memory allocation in c
Prabhu Govind3.7K vistas
Data structure computer graphs por Kumar
Data structure computer graphsData structure computer graphs
Data structure computer graphs
Kumar 4.4K vistas
17. Trees and Graphs por Intro C# Book
17. Trees and Graphs17. Trees and Graphs
17. Trees and Graphs
Intro C# Book259.1K vistas

Similar a Graphs in data structures

Class01_Computer_Contest_Level_3_Notes_Sep_07 - Copy.pdf por
Class01_Computer_Contest_Level_3_Notes_Sep_07 - Copy.pdfClass01_Computer_Contest_Level_3_Notes_Sep_07 - Copy.pdf
Class01_Computer_Contest_Level_3_Notes_Sep_07 - Copy.pdfChristianKapsales1
4 vistas45 diapositivas
10.graph por
10.graph10.graph
10.graphjashobhan pradhan
918 vistas30 diapositivas
graph.pptx por
graph.pptxgraph.pptx
graph.pptxhijigaf
16 vistas44 diapositivas
Graphs por
GraphsGraphs
Graphsamudha arul
178 vistas45 diapositivas
Graphs In Data Structure por
Graphs In Data StructureGraphs In Data Structure
Graphs In Data StructureAnuj Modi
1.1K vistas32 diapositivas
Graphs In Data Structure por
Graphs In Data StructureGraphs In Data Structure
Graphs In Data StructureAnuj Modi
45.6K vistas32 diapositivas

Similar a Graphs in data structures(20)

Class01_Computer_Contest_Level_3_Notes_Sep_07 - Copy.pdf por ChristianKapsales1
Class01_Computer_Contest_Level_3_Notes_Sep_07 - Copy.pdfClass01_Computer_Contest_Level_3_Notes_Sep_07 - Copy.pdf
Class01_Computer_Contest_Level_3_Notes_Sep_07 - Copy.pdf
graph.pptx por hijigaf
graph.pptxgraph.pptx
graph.pptx
hijigaf16 vistas
Graphs In Data Structure por Anuj Modi
Graphs In Data StructureGraphs In Data Structure
Graphs In Data Structure
Anuj Modi1.1K vistas
Graphs In Data Structure por Anuj Modi
Graphs In Data StructureGraphs In Data Structure
Graphs In Data Structure
Anuj Modi45.6K vistas
Lecture 5b graphs and hashing por Victor Palmar
Lecture 5b graphs and hashingLecture 5b graphs and hashing
Lecture 5b graphs and hashing
Victor Palmar1.2K vistas

Último

Inawisdom Quick Sight por
Inawisdom Quick SightInawisdom Quick Sight
Inawisdom Quick SightPhilipBasford
8 vistas27 diapositivas
Enhancing Financial Sentiment Analysis via Retrieval Augmented Large Language... por
Enhancing Financial Sentiment Analysis via Retrieval Augmented Large Language...Enhancing Financial Sentiment Analysis via Retrieval Augmented Large Language...
Enhancing Financial Sentiment Analysis via Retrieval Augmented Large Language...patiladiti752
8 vistas15 diapositivas
PRIVACY AWRE PERSONAL DATA STORAGE por
PRIVACY AWRE PERSONAL DATA STORAGEPRIVACY AWRE PERSONAL DATA STORAGE
PRIVACY AWRE PERSONAL DATA STORAGEantony420421
8 vistas56 diapositivas
Report on OSINT por
Report on OSINTReport on OSINT
Report on OSINTAyonDebnathCertified
6 vistas15 diapositivas
K-Drama Recommendation Using Python por
K-Drama Recommendation Using PythonK-Drama Recommendation Using Python
K-Drama Recommendation Using PythonFridaPutriassa
7 vistas20 diapositivas
Construction Accidents & Injuries por
Construction Accidents & InjuriesConstruction Accidents & Injuries
Construction Accidents & InjuriesBisnar Chase Personal Injury Attorneys
6 vistas5 diapositivas

Último(20)

Enhancing Financial Sentiment Analysis via Retrieval Augmented Large Language... por patiladiti752
Enhancing Financial Sentiment Analysis via Retrieval Augmented Large Language...Enhancing Financial Sentiment Analysis via Retrieval Augmented Large Language...
Enhancing Financial Sentiment Analysis via Retrieval Augmented Large Language...
patiladiti7528 vistas
PRIVACY AWRE PERSONAL DATA STORAGE por antony420421
PRIVACY AWRE PERSONAL DATA STORAGEPRIVACY AWRE PERSONAL DATA STORAGE
PRIVACY AWRE PERSONAL DATA STORAGE
antony4204218 vistas
K-Drama Recommendation Using Python por FridaPutriassa
K-Drama Recommendation Using PythonK-Drama Recommendation Using Python
K-Drama Recommendation Using Python
FridaPutriassa7 vistas
Best Home Security Systems.pptx por mogalang
Best Home Security Systems.pptxBest Home Security Systems.pptx
Best Home Security Systems.pptx
mogalang9 vistas
Listed Instruments Survey 2022.pptx por secretariat4
Listed Instruments Survey  2022.pptxListed Instruments Survey  2022.pptx
Listed Instruments Survey 2022.pptx
secretariat4130 vistas
Analytics Center of Excellence | Data CoE |Analytics CoE| WNS Triange por RNayak3
Analytics Center of Excellence | Data CoE |Analytics CoE| WNS TriangeAnalytics Center of Excellence | Data CoE |Analytics CoE| WNS Triange
Analytics Center of Excellence | Data CoE |Analytics CoE| WNS Triange
RNayak35 vistas
CRM stick or twist workshop por info828217
CRM stick or twist workshopCRM stick or twist workshop
CRM stick or twist workshop
info82821714 vistas
Business administration Project File.pdf por KiranPrajapati91
Business administration Project File.pdfBusiness administration Project File.pdf
Business administration Project File.pdf
KiranPrajapati9110 vistas
LIVE OAK MEMORIAL PARK.pptx por ms2332always
LIVE OAK MEMORIAL PARK.pptxLIVE OAK MEMORIAL PARK.pptx
LIVE OAK MEMORIAL PARK.pptx
ms2332always8 vistas
Underfunded.pptx por vgarcia19
Underfunded.pptxUnderfunded.pptx
Underfunded.pptx
vgarcia1915 vistas
Running PostgreSQL in a Kubernetes cluster: CloudNativePG por Nick Ivanov
Running PostgreSQL in a Kubernetes cluster: CloudNativePGRunning PostgreSQL in a Kubernetes cluster: CloudNativePG
Running PostgreSQL in a Kubernetes cluster: CloudNativePG
Nick Ivanov7 vistas
GDG Cloud Community Day 2022 - Managing data quality in Machine Learning por SARADINDU SENGUPTA
GDG Cloud Community Day 2022 -  Managing data quality in Machine LearningGDG Cloud Community Day 2022 -  Managing data quality in Machine Learning
GDG Cloud Community Day 2022 - Managing data quality in Machine Learning

Graphs in data structures

  • 2. 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)}
  • 3. Applications • electronic circuits • networks (roads, flights, communications) CS16 LAX JFK LAX DFW STL HNL FTL
  • 4. Terminology: Adjacent and Incident • If (v0, v1) is an edge in an undirected graph, – v0 and v1 are adjacent – 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
  • 5. 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 head the out-degree of a vertex v is the number of edges that have v as the tail if di is the degree of a vertex i in a graph G with n vertices and e edges, the number of edges is e di n = − ∑( ) / 0 1 2 Terminology: Degree of a Vertex Why? Since adjacent vertices each count the adjoining edge, it will be counted twice
  • 6. 0 1 2 3 4 5 6 G1 G2 3 2 3 3 1 1 1 1 directed graph in-degree out-degree 0 1 2 G3 in:1, out: 1 in: 1, out: 2 in: 1, out: 0 0 1 2 3 33 3 Examples
  • 7. Terminology: Path • path: sequence of vertices v1,v2,. . .vk such that consecutive vertices vi and vi+1 are adjacent. 7 3 3 3 3 2 a b c d e a b c d e a b e d c b e d c
  • 8. More Terminology • simple path: no repeated vertices • cycle: simple path, except that the last vertex is the same as the first vertex a b c d e b e c a c d a a b c d e
  • 9. Even More Terminology • subgraph: subset of vertices and edges forming a graph • connected component: maximal connected subgraph. E.g., the graph below has 3 connected components. connected not connected •connected graph: any two vertices are connected by some path
  • 10. 0 0 1 2 3 1 2 0 1 2 3(i) (ii) (iii) (iv) (a) Some of the subgraph of G1 0 0 1 0 1 2 0 1 2 (i) (ii) (iii) (iv) (b) Some of the subgraph of G3 0 1 2 3 G1 0 1 2 G3 Subgraphs Examples
  • 11. More… • tree - connected graph without cycles • forest - collection of trees tree forest tree tree tree
  • 12. Connectivity • Let n = #vertices, and m = #edges • A complete 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. • Therefore, if a graph is not complete, m < n(n -1)/2 n = 5 m = (5 ∗ 4)/2 = 10
  • 13. More Connectivity n = #vertices m = #edges • For a tree m = n - 1 n = 5 m = 4 n = 5 m = 3 If m < n - 1, G is not connected
  • 14. Oriented (Directed) Graph • A graph where edges are directed
  • 15. 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 is one in which each edge is a directed pair of vertices, <v0, v1> != <v1,v0> tail head
  • 16. ADT for Graph 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. v has no incident edge. Graph InsertEdge(graph, v1,v2)::= return a graph with new edge between v1 and v2 Graph DeleteVertex(graph, v)::= return a graph in which v and all edges incident to it are removed Graph DeleteEdge(graph, v1, v2)::=return a graph in which the edge (v1, v2) is removed Boolean IsEmpty(graph)::= if (graph==empty graph) return TRUE else return FALSE List Adjacent(graph,v)::= return a list of all vertices that are adjacent to v
  • 18. Adjacency Matrix Let G=(V,E) be a graph with n vertices. The adjacency matrix of G is a two-dimensional n by n array, say adj_mat If the edge (vi, vj) is in E(G), adj_mat[i][j]=1 If there is no such edge in E(G), adj_mat[i][j]=0 The adjacency matrix for an undirected graph is symmetric; the adjacency matrix for a digraph need not be symmetric
  • 19. Examples for Adjacency Matrix 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0             0 1 0 1 0 0 0 1 0           0 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0                           G1 G2 G4 0 1 2 3 0 1 2 1 0 2 3 4 5 6 7 symmetric undirected: n2 /2 directed: n2
  • 20. Merits of Adjacency Matrix From the adjacency matrix, to determine the connection of vertices is easy The degree of a vertex is For a digraph (= directed graph), the row sum is the out_degree, while the column sum is the in_degree adj mat i j j n _ [ ][ ] = − ∑0 1 ind vi A j i j n ( ) [ , ]= = − ∑ 0 1 outd vi A i j j n ( ) [ , ]= = − ∑ 0 1
  • 21. Adjacency Lists (data structures) #define MAX_VERTICES 50 typedef struct node *node_pointer; typedef struct node { int vertex; struct node *link; }; node_pointer graph[MAX_VERTICES]; int n=0; /* vertices currently in use */ Each row in adjacency matrix is represented as an adjacency list.
  • 22. 0 1 2 3 0 1 2 0 1 2 3 4 5 6 7 1 2 3 0 2 3 0 1 3 0 1 2 G1 1 0 2 G3 1 2 0 3 0 3 1 2 5 4 6 5 7 6 G4 0 1 2 3 0 1 2 1 0 2 3 4 5 6 7 An undirected graph with n vertices and e edges ==> n head nodes and 2e list nodes
  • 23. Some Operations degree of a vertex in an undirected graph –# of nodes in adjacency list # of edges in a graph –determined in O(n+e) out-degree of a vertex in a directed graph –# of nodes in its adjacency list in-degree of a vertex in a directed graph –traverse the whole data structure
  • 24. Graph Traversal • Problem: Search for a certain node or traverse all nodes in the graph • Depth First Search – Once a possible path is found, continue the search until the end of the path • Breadth First Search – Start several paths at a time, and advance in each one step at a time
  • 25. Depth-First Search M N O P I J K L E F G H A B C D
  • 26. Exploring a Labyrinth Without Getting Lost • A depth-first search (DFS) in an undirected graph G is like wandering in a labyrinth with a string and a can of red paint without getting lost. • We start at vertex s, tying the end of our string to the point and painting s “visited”. Next we label s as our current vertex called u. • Now we travel along an arbitrary edge (u, v). • If edge (u, v) leads us to an already visited vertex v we return to u. • If vertex v is unvisited, we unroll our string and move to v, paint v “visited”, set v as our current vertex, and repeat the previous steps.
  • 27. Breadth-First Search • Like DFS, a Breadth-First Search (BFS) traverses a connected component of a graph, and in doing so defines a spanning tree with several useful properties. • The starting vertex s has level 0, and, as in DFS, defines that point as an “anchor.” • In the first round, the string is unrolled the length of one edge, and all of the edges that are only one edge away from the anchor are visited. • These edges are placed into level 1 • In the second round, all the new edges that can be reached by unrolling the string 2 edges are visited and placed in level 2. • This continues until every vertex has been assigned a level. • The label of any vertex v corresponds to the length of the shortest path from s to v. 27
  • 28. BFS - A Graphical Representation M N O P I J K L E F G H A B C D 0 M N O P I J K L E F G H A B C D 0 1 28M N O P I J K L E F G H A C DB 0 1 2 M N O P I J K L E F G H A B C D 0 1 2 3 d)c) b)a)
  • 29. More BFS M N O P I J K L E F G H A B C D 4 0 1 2 3 M N O P I J K L E F G H A B C D 4 5 0 1 2 3
  • 30. Applications: Finding a Path • Find path from source vertex s to destination vertex d • Use graph search starting at s and terminating as soon as we reach d – Need to remember edges traversed • Use depth – first search ? • Use breath – first search?
  • 31. DFS vs. BFS E F G B CD A start destination A DFS on A A DFS on BB A DFS on C B C A B Return to call on B D Call DFS on D A B D Call DFS on GG found destination - done! Path is implicitly stored in DFS recursion Path is: A, B, D, G DFS Process
  • 32. DFS vs. BFS E F G B CD A start destination BFS Process A Initial call to BFS on A Add A to queue B Dequeue A Add B frontrear frontrear C Dequeue B Add C, D frontrear D D Dequeue C Nothing to add frontrear G Dequeue D Add G frontrear found destination - done! Path must be stored separately