Graphs
What is a graph?
• A data structure that consists of a set of nodes
(vertices) and a set of edges that relate the nodes
to each other
• The set of edges describes relationships among the
vertices
Formal definition of graphs
• A graph G is defined as follows:
G=(V,E)
V(G): a finite, nonempty set of vertices
E(G): a set of edges (pairs of vertices)
Directed vs. undirected graphs
• When the edges in a graph have no
direction, the graph is called undirected
• When the edges in a graph have a direction,
the graph is called directed (or digraph)
Directed vs. undirected graphs
(cont.)
E(Graph2) = {(1,3) (3,1) (5,9) (9,11)
(5,7)
Warning: if the graph is
directed, the order of the
vertices in each edge is
important !!
• Trees are special cases of graphs!!
Trees vs graphs
Graph terminology
• Adjacent nodes: two nodes are adjacent if
they are connected by an edge
• Path: a sequence of vertices that connect
two nodes in a graph
• Complete graph: a graph in which every
vertex is directly connected to every other
vertex
5 is adjacent to 7
7 is adjacent from 5
• What is the number of edges in a complete
directed graph with N vertices?
N * (N-1)
Graph terminology (cont.)
• What is the number of edges in a complete
undirected graph with N vertices?
N * (N-1) / 2
Graph terminology (cont.)
Graph terminology (cont.)
• Multi-graph
• Cycle
• Loop
• Weighted graph: a graph in which each edge
carries a value
Graph terminology (cont.)
Graph implementation
• Array-based implementation
– A 1D array is used to represent the vertices
– A 2D array (adjacency matrix) is used to
represent the edges
Array-based implementation-
Adjacency Matrix
Graph implementation (cont.)
• Linked-list implementation
– A 1D array is used to represent the vertices
– A list is used for each vertex v which contains the
vertices which are adjacent from v (adjacency list)
Linked-list implementation
Adjacency Matrix for Un-
Weighted Graphs
1. Adjacency Matrix
2. Matrix for edges
3. Matrix for 2 length paths
4. Matrix for 3 length paths
5. Matrix for n length paths
6. Path Matrix
7. Completely Connected Graph
Graph searching
• Problem: find a path between two nodes of
the graph (e.g., Austin and Washington)
• Methods: Depth-First-Search (DFS) or
Breadth-First-Search (BFS)
Depth-First-Search (DFS)
• What is the idea behind DFS?
– Travel as far as you can down a path
– Back up as little as possible when you reach a
"dead end" (i.e., next vertex has been "marked"
or there is no next vertex)
• DFS can be implemented efficiently using a
stack
DFS
• Algorithm:
Starting Node is A
1. Initialize all nodes to ready state(Status=1)
2. Push starting nose A onto Stack and change its status to
waiting state (Status=2).
3.Repeat steps 4 & 5 until STACK is empty.
4. Pop Top node N. Process N and change its Status to the processed
state (Status=3).
5.Push onto Stack all the neighbors of N that are still in ready state
and change their state as waiting state(State=2).
6. Exit.
Breadth-First-Searching (BFS)
• What is the idea behind BFS?
– Look at all possible paths at the same depth
before you go at a deeper level
– Back up as far as possible when you reach a
"dead end" (i.e., next vertex has been "marked"
or there is no next vertex)
BFS
• Algorithm:
Starting Node is A
1. Initialize all nodes to ready state(Status=1)
2. Push starting nose A onto Queue and change its status to
waiting state (Status=2).
3.Repeat steps 4 & 5 until Queue is empty.
4. Remove the front node N. Process N and change its Status to the
processed state (Status=3).
5.Add to the rear of Queue all the neighbors of N that are still in
ready state and change their state to waiting (State=2).
6. Exit.
• Examples of Both DFS & BFS.

Data structure computer graphs

  • 1.
  • 2.
    What is agraph? • A data structure that consists of a set of nodes (vertices) and a set of edges that relate the nodes to each other • The set of edges describes relationships among the vertices
  • 3.
    Formal definition ofgraphs • A graph G is defined as follows: G=(V,E) V(G): a finite, nonempty set of vertices E(G): a set of edges (pairs of vertices)
  • 4.
    Directed vs. undirectedgraphs • When the edges in a graph have no direction, the graph is called undirected
  • 5.
    • When theedges in a graph have a direction, the graph is called directed (or digraph) Directed vs. undirected graphs (cont.) E(Graph2) = {(1,3) (3,1) (5,9) (9,11) (5,7) Warning: if the graph is directed, the order of the vertices in each edge is important !!
  • 6.
    • Trees arespecial cases of graphs!! Trees vs graphs
  • 7.
    Graph terminology • Adjacentnodes: two nodes are adjacent if they are connected by an edge • Path: a sequence of vertices that connect two nodes in a graph • Complete graph: a graph in which every vertex is directly connected to every other vertex 5 is adjacent to 7 7 is adjacent from 5
  • 8.
    • What isthe number of edges in a complete directed graph with N vertices? N * (N-1) Graph terminology (cont.)
  • 9.
    • What isthe number of edges in a complete undirected graph with N vertices? N * (N-1) / 2 Graph terminology (cont.)
  • 10.
    Graph terminology (cont.) •Multi-graph • Cycle • Loop
  • 11.
    • Weighted graph:a graph in which each edge carries a value Graph terminology (cont.)
  • 12.
    Graph implementation • Array-basedimplementation – A 1D array is used to represent the vertices – A 2D array (adjacency matrix) is used to represent the edges
  • 13.
  • 14.
    Graph implementation (cont.) •Linked-list implementation – A 1D array is used to represent the vertices – A list is used for each vertex v which contains the vertices which are adjacent from v (adjacency list)
  • 15.
  • 16.
    Adjacency Matrix forUn- Weighted Graphs 1. Adjacency Matrix 2. Matrix for edges 3. Matrix for 2 length paths 4. Matrix for 3 length paths 5. Matrix for n length paths 6. Path Matrix 7. Completely Connected Graph
  • 17.
    Graph searching • Problem:find a path between two nodes of the graph (e.g., Austin and Washington) • Methods: Depth-First-Search (DFS) or Breadth-First-Search (BFS)
  • 18.
    Depth-First-Search (DFS) • Whatis the idea behind DFS? – Travel as far as you can down a path – Back up as little as possible when you reach a "dead end" (i.e., next vertex has been "marked" or there is no next vertex) • DFS can be implemented efficiently using a stack
  • 19.
    DFS • Algorithm: Starting Nodeis A 1. Initialize all nodes to ready state(Status=1) 2. Push starting nose A onto Stack and change its status to waiting state (Status=2). 3.Repeat steps 4 & 5 until STACK is empty. 4. Pop Top node N. Process N and change its Status to the processed state (Status=3). 5.Push onto Stack all the neighbors of N that are still in ready state and change their state as waiting state(State=2). 6. Exit.
  • 20.
    Breadth-First-Searching (BFS) • Whatis the idea behind BFS? – Look at all possible paths at the same depth before you go at a deeper level – Back up as far as possible when you reach a "dead end" (i.e., next vertex has been "marked" or there is no next vertex)
  • 21.
    BFS • Algorithm: Starting Nodeis A 1. Initialize all nodes to ready state(Status=1) 2. Push starting nose A onto Queue and change its status to waiting state (Status=2). 3.Repeat steps 4 & 5 until Queue is empty. 4. Remove the front node N. Process N and change its Status to the processed state (Status=3). 5.Add to the rear of Queue all the neighbors of N that are still in ready state and change their state to waiting (State=2). 6. Exit.
  • 22.
    • Examples ofBoth DFS & BFS.