Table of Contents

    Graph Concept

    Chapter 18.8

    Graph Concept in Data Structures

    Learn what a graph is in data structures, how vertices and edges represent relationships, different types of graphs, graph representation methods, graph traversal basics, and how graphs are used in real-world systems such as maps, social networks, computer networks, recommendation systems, and route finding.

    Introduction

    A graph is an important non-linear data structure used to represent relationships between objects. A graph is made up of vertices and edges. Vertices represent objects, and edges represent connections between those objects.

    Unlike arrays, linked lists, stacks, and queues, graphs do not store data in a simple linear order. Unlike trees, graphs do not always follow a strict parent-child hierarchy. In a graph, one object can be connected to many other objects in different ways.

    Graphs are extremely useful because many real-world systems are based on relationships. For example, cities are connected by roads, people are connected in social networks, computers are connected in networks, web pages are connected by links, and students may be connected through friendships or group projects.

    "A graph is a non-linear data structure made of vertices and edges, used to represent relationships between objects."

    Simple Definition of Graph

    A graph is a data structure that contains a set of nodes and connections between those nodes. The nodes are called vertices, and the connections are called edges.

    In simple words:

    • A graph stores objects and relationships.
    • Objects are represented using vertices or nodes.
    • Connections are represented using edges.
    • A vertex can be connected to many other vertices.
    • Graphs are useful for network-like problems.
    • Graphs can represent routes, friendships, links, dependencies, and connections.
    GRAPH CONCEPT
    Graph = Vertices + Edges + Relationships
    Important: A graph is useful when the main focus is not just storing data, but also understanding how different pieces of data are connected.

    Why Do We Need Graphs?

    Graphs are needed because many real-world problems involve complex relationships. Simple linear data structures cannot naturally represent these relationships. Trees can represent hierarchy, but graphs can represent more general connections.

    For example, a road map cannot always be represented as a simple tree because one city can be connected to many other cities, and there may be multiple paths between two cities. A graph can represent such connections naturally.

    Without Graph

    • Complex relationships are difficult to represent.
    • Road maps and networks are hard to model.
    • Finding paths between objects becomes difficult.
    • Social connections cannot be represented naturally.
    • Dependency relationships become confusing.
    • Network-based problems become harder to solve.

    With Graph

    • Relationships can be represented clearly.
    • Networks can be modeled naturally.
    • Paths between objects can be found.
    • Social connections are easier to represent.
    • Dependencies can be organized properly.
    • Route-finding and connection-based problems become easier to solve.

    Prerequisites

    Before learning graphs, students should understand basic data structures and problem-solving concepts. Graphs are more advanced than arrays, linked lists, stacks, queues, and trees, so a strong foundation is helpful.

    Prerequisite Topic Why It Is Needed
    Arrays / Lists Graphs can be represented using lists and arrays.
    Linked List Concept Adjacency lists may use linked-list-like structures.
    Queue Breadth-First Search uses a queue.
    Stack Depth-First Search can use a stack or recursion.
    Tree Concept Trees are special graph-like structures, so tree knowledge helps.
    Loops and Conditions Used for visiting vertices and checking connections.
    Basic Algorithm Thinking Graph problems often involve traversal, searching, and path finding.

    Real-World Analogy of Graph

    A very common real-world example of a graph is a road map. In a road map, cities can be treated as vertices, and roads between cities can be treated as edges.

    If Kolkata is connected to Delhi, Mumbai, and Chennai by routes, then Kolkata is a vertex connected to other vertices through edges. A graph can help answer questions such as:

    • Is there a route between two cities?
    • What is the shortest route?
    • How many cities are directly connected?
    • Which cities can be reached from a starting city?

    Graph as a Road Map

    Cities are vertices, and roads are edges. The graph shows how cities are connected and helps find possible routes between them.

    Real-World Object Graph Concept Explanation
    City Vertex / Node Represents one location.
    Road Edge Represents connection between two cities.
    Distance Weight Represents cost or length of connection.
    One-way road Directed edge Connection has one direction.
    Two-way road Undirected edge Connection works both ways.

    Vertices and Edges

    The two most important parts of a graph are vertices and edges.

    1

    Vertex / Node

    Represents an object or entity

    A vertex is a point in a graph. It may represent a city, person, computer, web page, course, product, or any object.

    2

    Edge

    Represents a connection or relationship

    An edge connects two vertices. It may represent a road, friendship, network cable, hyperlink, dependency, or relationship.

    GRAPH PARTS
    Vertex represents object   |   Edge represents connection

    Basic Graph Example

    Consider the following graph:

    
    A ----- B
    |       |
    |       |
    C ----- D
    

    In this graph:

    • A, B, C, and D are vertices.
    • A-B is an edge.
    • A-C is an edge.
    • B-D is an edge.
    • C-D is an edge.

    This graph shows that A is connected to B and C, while D is connected to B and C.

    Important Graph Terms

    To understand graphs properly, students should know the following important terms.

    Term Meaning Example
    Vertex / Node A point or object in a graph. A city in a map.
    Edge A connection between two vertices. A road between two cities.
    Adjacent Vertices Vertices directly connected by an edge. A and B are adjacent if A-B exists.
    Degree Number of edges connected to a vertex. If A has 3 connections, degree of A is 3.
    Path A sequence of vertices connected by edges. A → B → D
    Cycle A path that starts and ends at the same vertex. A → B → D → C → A
    Weight Cost or value assigned to an edge. Distance between two cities.
    Connected Graph A graph where every vertex can be reached from another vertex. All cities are connected by some route.
    Disconnected Graph A graph where some vertices are not reachable from others. Two separate road networks.

    Directed and Undirected Graph

    Graphs can be classified based on whether edges have direction or not.

    1

    Undirected Graph

    Edges have no direction

    In an undirected graph, if A is connected to B, then B is also connected to A. The connection works both ways.

    
    A ----- B
    

    This means A is connected to B and B is connected to A.

    2

    Directed Graph

    Edges have direction

    In a directed graph, an edge goes from one vertex to another in a specific direction. If A points to B, it does not always mean B points to A.

    
    A -----> B
    

    This means there is a direction from A to B.

    Basis Undirected Graph Directed Graph
    Edge Direction No direction. Has direction.
    Connection Meaning Two-way connection. One-way or directional connection.
    Example Friendship relation. Following someone on social media.
    Representation A -- B A -> B

    Weighted and Unweighted Graph

    Graphs can also be classified based on whether edges have values or costs.

    1

    Unweighted Graph

    Edges have no cost or weight

    In an unweighted graph, all connections are treated equally.

    
    A ----- B
    
    2

    Weighted Graph

    Edges have cost, distance, or weight

    In a weighted graph, each edge has a value. This value may represent distance, time, cost, priority, or strength of relationship.

    
    A --5-- B
    

    Here, the edge between A and B has weight 5.

    Example: In a road map, edge weight can represent distance between cities. In a network, edge weight can represent delay or cost.

    Types of Graphs

    There are different types of graphs depending on direction, weight, connection, and structure.

    Graph Type Meaning Example
    Undirected Graph Edges have no direction. Friendship network.
    Directed Graph Edges have direction. Web page links.
    Weighted Graph Edges have weights or costs. Road map with distances.
    Unweighted Graph Edges have no weights. Simple connection graph.
    Connected Graph Every vertex is reachable from every other vertex. Fully connected road network.
    Disconnected Graph Some vertices are not connected. Separate groups in a network.
    Cyclic Graph Contains at least one cycle. A circular route.
    Acyclic Graph Contains no cycle. Dependency structure without loop.

    Graph Representation

    A graph can be represented in different ways inside a computer. The two most common methods are:

    • Adjacency Matrix
    • Adjacency List

    The choice depends on the number of vertices, number of edges, and what operations need to be performed.

    Adjacency Matrix

    An adjacency matrix uses a table or two-dimensional array to represent graph connections. If two vertices are connected, the matrix value is usually 1. If they are not connected, the value is 0.

    Example graph:

    
    A ----- B
    |       |
    C ----- D
    

    Adjacency matrix:

    A B C D
    A 0 1 1 0
    B 1 0 0 1
    C 1 0 0 1
    D 0 1 1 0
    Useful When The graph is dense, meaning there are many edges between vertices.
    Limitation It may use more memory when the graph has many vertices but few edges.

    Adjacency List

    An adjacency list stores each vertex along with a list of its neighboring vertices. It is often more memory efficient for graphs that have fewer edges.

    Example graph:

    
    A ----- B
    |       |
    C ----- D
    

    Adjacency list:

    
    A -> B, C
    B -> A, D
    C -> A, D
    D -> B, C
    
    Useful When The graph is sparse, meaning there are fewer edges compared to possible connections.

    Adjacency Matrix vs Adjacency List

    Basis Adjacency Matrix Adjacency List
    Storage Format 2D table or matrix. List of neighbors for each vertex.
    Memory Usage Can use more memory. Usually uses less memory for sparse graphs.
    Checking Edge Fast edge checking. May require searching neighbor list.
    Best For Dense graphs. Sparse graphs.
    Beginner Understanding Easy to visualize as table. Easy to understand as connection list.

    Graph Traversal

    Graph traversal means visiting vertices of a graph in a systematic way. Since graphs can have many connections and cycles, traversal needs careful handling to avoid visiting the same vertex again and again.

    The two most common graph traversal algorithms are:

    • Breadth-First Search also called BFS
    • Depth-First Search also called DFS
    GRAPH TRAVERSAL
    BFS uses Queue   |   DFS uses Stack or Recursion

    Breadth-First Search

    Breadth-First Search, or BFS, visits vertices level by level. It first visits the starting vertex, then visits all its direct neighbors, then neighbors of those neighbors, and so on.

    BFS commonly uses a queue.

    
    // Conceptual BFS logic
    
    start from a vertex
    mark it as visited
    put it into queue
    
    while queue is not empty:
        remove front vertex
        visit all unvisited neighbors
        add them to queue
    

    BFS is useful for finding the shortest path in an unweighted graph.

    Depth-First Search

    Depth-First Search, or DFS, explores as far as possible along one path before backtracking and trying another path.

    DFS can be implemented using a stack or recursion.

    
    // Conceptual DFS logic
    
    visit current vertex
    mark it as visited
    
    for each unvisited neighbor:
        perform DFS on that neighbor
    

    DFS is useful for path finding, cycle detection, connected components, and backtracking problems.

    Java Example: Basic Graph Using Adjacency List

    The following Java example shows a simple graph using an adjacency list concept.

    Prerequisites: To understand this example, you should know arrays, lists, maps, loops, and basic Java syntax.
    
    import java.util.*;
    
    public class Main {
        public static void main(String[] args) {
    
            Map<String, List<String>> graph = new HashMap<>();
    
            graph.put("A", Arrays.asList("B", "C"));
            graph.put("B", Arrays.asList("A", "D"));
            graph.put("C", Arrays.asList("A", "D"));
            graph.put("D", Arrays.asList("B", "C"));
    
            for (String vertex : graph.keySet()) {
                System.out.println(vertex + " -> " + graph.get(vertex));
            }
        }
    }
    

    In this example, each vertex stores a list of connected vertices.

    JavaScript Example: Basic Graph Using Object

    JavaScript can represent a graph using an object where each key is a vertex and each value is an array of neighboring vertices.

    Prerequisites: To understand this example, you should know JavaScript objects, arrays, loops, and console output.
    
    const graph = {
        A: ["B", "C"],
        B: ["A", "D"],
        C: ["A", "D"],
        D: ["B", "C"]
    };
    
    for (const vertex in graph) {
        console.log(vertex + " -> " + graph[vertex]);
    }
    

    This example represents a simple undirected graph using an adjacency list style.

    Real-World Example: Student Friendship Network

    In a student management system or learning platform, students may be connected through friendships, group projects, or collaboration networks.

    
    Rahul -> Ayesha, John
    Ayesha -> Rahul, Priya
    John -> Rahul
    Priya -> Ayesha
    

    Here, each student is a vertex, and each friendship or collaboration is an edge.

    Real-World Example: Road Map

    A road map is one of the most common graph examples. Cities are vertices and roads are edges. If the road has a distance, then the graph becomes a weighted graph.

    
    Kolkata --1500km-- Delhi
    Kolkata --1900km-- Mumbai
    Delhi   --1400km-- Mumbai
    

    This type of graph can be used to find the shortest route or cheapest route.

    Real-World Example: Computer Network

    In a computer network, computers, routers, and servers can be represented as vertices. Network connections can be represented as edges.

    
    Computer A ---- Router
    Computer B ---- Router
    Router -------- Server
    

    Graphs help model how devices are connected and how data can travel between them.

    Real-World Example: Web Pages

    The web can be represented as a directed graph. Web pages are vertices, and hyperlinks are directed edges. If Page A links to Page B, there is a directed edge from A to B.

    
    Home Page -> Courses Page
    Courses Page -> Programming Page
    Courses Page -> Database Page
    

    Search engines use graph-based ideas to understand links between pages.

    Common Applications of Graphs

    Graphs are used in many real-world software systems and computer science problems.

    Application How Graph is Used
    Maps and Navigation Cities and roads are represented as vertices and edges.
    Social Networks People are vertices and friendships or follows are edges.
    Computer Networks Devices are vertices and connections are edges.
    Recommendation Systems Users, products, and interests can be connected.
    Web Search Web pages and hyperlinks form a directed graph.
    Course Prerequisites Courses can be connected based on dependency.
    Project Dependencies Tasks can be connected by dependency relationships.
    AI and Knowledge Graphs Concepts and relationships can be modeled as graph structures.

    Advantages of Graphs

    Graphs are powerful because they can represent complex relationships naturally.

    Benefits of Graphs

    • Represent complex relationships clearly.
    • Useful for network-based problems.
    • Can model routes and paths.
    • Useful for social networks and recommendation systems.
    • Supports traversal algorithms like BFS and DFS.
    • Can represent directed and undirected relationships.
    • Can represent weighted relationships such as distance or cost.
    • Useful for dependency management.
    • Important in maps, AI, networking, databases, and search engines.
    • Helps solve path-finding and connectivity problems.

    Limitations of Graphs

    Graphs are useful, but they can be complex to understand and implement, especially for beginners.

    More Complex Than Linear Structures Graphs are harder than arrays, stacks, queues, and linked lists because connections can be many-to-many.
    Memory Usage Some graph representations, such as adjacency matrix, may use more memory.
    Traversal Needs Care Graphs can have cycles, so algorithms must track visited vertices.
    Algorithm Complexity Advanced graph algorithms such as shortest path and minimum spanning tree can be challenging.

    Graph vs Tree

    Trees and graphs are both non-linear data structures, but they are not the same. A tree is a special type of graph with a hierarchy and no cycles.

    Basis Tree Graph
    Structure Hierarchical. Network-like.
    Root Has one root node. Usually no fixed root.
    Relationship Parent-child relationship. General connections between vertices.
    Cycles No cycles. Can have cycles.
    Example Folder structure. Road map or social network.

    Graph vs Linked List

    A linked list is a linear data structure where each node points to the next node. A graph is non-linear, and a vertex can connect to multiple vertices.

    Basis Linked List Graph
    Structure Linear. Non-linear.
    Connection Usually one next connection. Multiple connections possible.
    Use Case Sequential data. Network and relationship data.
    Example Train coaches. Social network.

    When Should You Use a Graph?

    A graph should be used when the problem involves relationships, connections, routes, or networks.

    Use Graph When

    • You need to represent connections between objects.
    • You need to model a network.
    • You need to find paths or routes.
    • You need to represent social relationships.
    • You need to model dependencies between tasks.
    • You need to represent web links.
    • You need to find shortest path or reachable nodes.
    • You need to analyze complex relationships.

    Common Mistakes Beginners Make

    Beginners often find graphs difficult because graphs can have many connections, directions, weights, and cycles.

    Common Mistakes

    • Confusing graph with tree.
    • Thinking every graph must have a root.
    • Forgetting that graphs can have cycles.
    • Confusing vertex and edge.
    • Ignoring direction in directed graphs.
    • Ignoring weights in weighted graphs.
    • Not marking visited vertices during traversal.
    • Using adjacency matrix when adjacency list would be better for sparse graphs.

    Better Approach

    • Start with simple undirected graphs.
    • Draw graph diagrams before coding.
    • Understand vertices and edges clearly.
    • Learn directed and undirected graphs separately.
    • Learn weighted graphs after unweighted graphs.
    • Practice adjacency list and adjacency matrix.
    • Use visited tracking during traversal.
    • Practice BFS and DFS with small examples.

    Best Practices for Learning Graphs

    Graphs become easier when students learn them visually. Drawing vertices and edges helps understand how connections work.

    Recommended Practices

    • Start with real-world examples like maps and social networks.
    • Draw graph diagrams before writing code.
    • Understand vertex and edge clearly.
    • Learn undirected graphs first.
    • Then learn directed graphs.
    • Then learn weighted graphs.
    • Practice adjacency list representation.
    • Practice adjacency matrix representation.
    • Learn BFS using queue.
    • Learn DFS using stack or recursion.
    • Always track visited vertices during traversal.
    • Compare graph with tree to understand the difference.

    Mini Practice Activity

    Complete the following practice tasks to strengthen your understanding of graph concepts.

    Task Description Expected Learning
    Task 1 Draw a graph with four vertices: A, B, C, and D. Understand vertices.
    Task 2 Add edges A-B, A-C, B-D, and C-D. Understand edges and connections.
    Task 3 Write the adjacency list of your graph. Practice graph representation.
    Task 4 Create an adjacency matrix for the same graph. Practice matrix representation.
    Task 5 Identify whether the graph is directed or undirected. Understand graph types.
    Task 6 Give three real-world examples of graphs. Connect graph concept with real life.

    Frequently Asked Questions

    1. What is a graph in data structures?

    A graph is a non-linear data structure made up of vertices and edges. It is used to represent relationships between objects.

    2. What is a vertex?

    A vertex, also called a node, is an object or point in a graph.

    3. What is an edge?

    An edge is a connection between two vertices in a graph.

    4. What is an undirected graph?

    An undirected graph is a graph where edges have no direction. The connection works both ways.

    5. What is a directed graph?

    A directed graph is a graph where edges have direction from one vertex to another.

    6. What is a weighted graph?

    A weighted graph is a graph where edges have values such as distance, cost, or time.

    7. What is graph traversal?

    Graph traversal means visiting vertices of a graph in a systematic way.

    8. What are BFS and DFS?

    BFS stands for Breadth-First Search and visits vertices level by level. DFS stands for Depth-First Search and explores deeply along one path before backtracking.

    9. What is the difference between tree and graph?

    A tree is hierarchical and usually has one root with no cycles. A graph is more general and can have cycles, directions, weights, and many types of connections.

    10. Where are graphs used in real life?

    Graphs are used in maps, social networks, computer networks, web links, recommendation systems, project dependencies, and route-finding applications.

    Summary

    A graph is a non-linear data structure used to represent relationships between objects. It consists of vertices and edges. Vertices represent objects, and edges represent connections between those objects.

    Graphs are useful for modeling networks, routes, relationships, dependencies, and connections. Common examples include road maps, social networks, computer networks, web pages, recommendation systems, and course prerequisite systems.

    Important graph concepts include vertex, edge, degree, path, cycle, weight, directed graph, undirected graph, weighted graph, adjacency matrix, adjacency list, BFS, and DFS. Understanding graphs prepares students for advanced algorithms such as shortest path, minimum spanning tree, network flow, and graph search algorithms.

    Key Takeaway

    A graph is a powerful data structure used to represent connected data. It is made of vertices and edges. Graphs are ideal for problems involving relationships, networks, routes, dependencies, and connections.