Skip to main content

Graph in DSA


Graphs and Their Representations

What is a Graph?

  • Graph: A non-linear data structure made up of vertices (nodes) and edges (connections).
  • Vertices: Points in the graph (also called nodes).
  • Edges: Connections between two vertices.
  • Non-linear: Unlike arrays or linked lists, graphs allow different paths to connect vertices.

Applications of Graphs:

  • Social Networks: People as vertices, relationships as edges.
  • Maps/Navigation: Locations as vertices, roads as edges.
  • Internet: Web pages as vertices, hyperlinks as edges.
  • Biology: Neural networks, disease spread modeling.

Graph Representations:

Graph Representation: How a graph is stored in memory. Different representations impact space and speed of operations.

Adjacency Matrix: A 2D array representing edges between vertices.

Types of Graph Representations:

1. Adjacency Matrix:

  • 2D array where cell (i, j) stores information about the edge from vertex i to vertex j.
  • Undirected Graph: Matrix is symmetric (edges go both ways).
  • Directed Graph: Matrix is not symmetric (edges have a direction).
  • Weighted Graph: Values in the matrix can represent edge weights.

Example (undirected graph):

    A B C D
    A 0 1 1 1
    B 1 0 1 1
    C 1 1 0 1
    D 1 1 1 0
    

Example (directed and weighted graph):

    A B C D
    A 0 3 0 0
    B 0 0 2 0
    C 0 0 0 4
    D 0 0 0 0
    

2. Adjacency List:

  • Array of vertices, each having a linked list of adjacent vertices.
  • Efficient for sparse graphs (many vertices with few edges).

Example (undirected graph):

    A -> B, C, D
    B -> A, C
    C -> A, B
    D -> A
    

Example (directed and weighted graph):

    A -> (B,3), (C,1)
    B -> (C,2)
    C -> (D,4)
    D -> (A,4)
    

Summary of Representations:

Adjacency Matrix:

  • Best for dense graphs.
  • Simpler to implement, but consumes more memory.
  • Can represent both directed and weighted graphs.

Adjacency List:

  • Best for sparse graphs.
  • More memory-efficient as it only stores existing edges.
  • Flexible for representing both directed and weighted graphs.

Graphs are essential for representing interconnected data and solving problems like route finding, social network analysis, and web page linking. Understanding different graph representations helps choose the right structure based on the graph's density and the required operations.

How to Assign Weights in Adjacency List:

To assign weights in an Adjacency List representation of a graph, we follow the idea that each edge between vertices (nodes) can have an associated weight (or cost). In the Adjacency List format, each vertex points to a list (or another structure) that contains its neighboring vertices and the weight of the edges connecting them.

Formula for Representing Weights in Adjacency List:

There isn't exactly a "formula" per se, but here's the general approach to represent a weighted edge in an adjacency list:

  • Adjacency List Format: Each vertex has a list (or linked list/array) of tuples, where:
  • First Element of the Tuple: The neighbor vertex (the connected vertex).
  • Second Element of the Tuple: The weight of the edge connecting the two vertices.

Example Breakdown:

Let’s take the example:

    A -> (B, 3), (C, 1)
    B -> (C, 2)
    C -> (D, 4)
    D -> (A, 4)
    

1. A -> (B, 3), (C, 1):

This means there are two edges originating from vertex A:

  • An edge from A to B with weight 3.
  • An edge from A to C with weight 1.

This can be represented as:

    A: [(B, 3), (C, 1)]
    

2. B -> (C, 2):

This means there's one edge originating from vertex B:

  • An edge from B to C with weight 2.

This can be represented as:

    B: [(C, 2)]
    

3. C -> (D, 4):

This means there's one edge originating from vertex C:

  • An edge from C to D with weight 4.

This can be represented as:

    C: [(D, 4)]
    

4. D -> (A, 4):

This means there's one edge originating from vertex D:

  • An edge from D to A with weight 4.

This can be represented as:

    D: [(A, 4)]
    

How to Assign Weights?

  • Identify the Edge: First, you need to know which two vertices are connected by the edge.
  • Determine the Weight: Then, you need the weight (or cost) of that edge. The weight is usually provided in the problem (or computed based on some logic, like distance or time).
  • Create the Tuple: For each edge, you store a tuple (neighbor, weight) in the list associated with the source vertex.

General Steps to Add Weighted Edges:

  1. Create a list or dictionary for the adjacency list.
  2. For each vertex:
    • Store a list of tuples representing its neighbors and the weights of the edges connecting them.
  3. For each edge:
    • Add a tuple (neighbor_vertex, edge_weight) to the list of the source vertex.

Example in Python Code:

    # Adjacency list representation using a dictionary
    graph = {
        'A': [('B', 3), ('C', 1)],  # A -> B with weight 3, A -> C with weight 1
        'B': [('C', 2)],             # B -> C with weight 2
        'C': [('D', 4)],             # C -> D with weight 4
        'D': [('A', 4)]              # D -> A with weight 4
    }

    # Display the adjacency list
    for vertex, edges in graph.items():
        print(f"{vertex} -> {edges}")
    

When to Use Weights in Graphs?

  • Shortest Path Algorithms: In algorithms like Dijkstra’s Algorithm or Bellman-Ford, weights are used to find the least-cost path between vertices.
  • Network Flow: In problems like maximum flow in networks, weights represent the capacity of edges.
  • Route Planning: In maps or GPS systems, weights could represent distances or travel times between locations.

Summary:

  • The weight of an edge is just a value associated with a tuple (neighbor, weight) in an adjacency list.
  • Weights can represent any cost or distance between two vertices (e.g., time, distance, cost).
  • The structure you use (Adjacency List or Matrix) depends on the size and sparsity of your graph. For sparse graphs, an Adjacency List with weighted edges is more efficient.

Summary




Contact Us

Name

Email *

Message *

Popular Posts

UGC NET Electronic Science Previous Year Question Papers with Solutions

Download Papers and Solutions Exam Pattern Preparation Tips FAQs More Home / Engineering & Other Exams / UGC NET 2026 PYQ ๐Ÿ“Š Exam Highlights: Electronic Science (88) Feature Details Junior Research Fellowship (JRF) ₹37,000 + HRA per month Eligibility M.Sc/M.Tech in Electronics (55%) Validity of Certificate JRF (3 Years) | Lectureship (Lifetime) ๐Ÿ“ฅ Download UGC NET Electronics PDFs Complete collection of previous year question papers, answer keys and explanations for Subject Code 88. Start Downloading ๐Ÿ“‚ View All Question Papers June 2026 - Question Paper Download PDF June 202...

CMOS Logic Gates: Inverter, NAND, and NOR

CMOS Logic Gates: Inverter, NAND, and NOR Complementary metal–oxide–semiconductor (CMOS) technology forms the backbone of modern digital IC design. Patented by Frank Wanlass in 1963 ( US patent 3,356,858 ), CMOS enables low-power, high-speed, and noise-immune logic circuits. CMOS gates, including inverters, NAND, and NOR, are widely used in both large-scale and small-scale integrated circuits due to their efficiency and versatility. CMOS Inverter A CMOS inverter consists of a complementary pair of PMOS and NMOS transistors. The PMOS transistor connects to the supply voltage V DD , while the NMOS connects to ground. The input voltage V IN controls both gates, and the output voltage V OUT is taken from the connected drains. CMOS inverters are highly energy-efficient and produce minimal heat due to their comple...

Coherent vs. Non-Coherent Demodulation

  For demodulation In general: 1. Synchronous (coherent) demodulation Receiver generates a local carrier/oscillator . It combines/multiplies the received signal with that carrier. Then a filter extracts the message. Received signal ↓ × Local oscillator ↓ Low-pass filter ↓ Message So yes, carrier multiplication is a common implementation of synchronous demodulation . 2. Asynchronous (non-coherent) demodulation Receiver doesn't need a phase-synchronized local carrier . It uses properties of the received signal itself to recover the information. For ASK , an envelope detector is the classic example: ASK signal ↓ Diode + RC ↓ Envelope ↓ Comparator ↓ Data Modulation Synchronous demodulation Non-coherent/asynchronous demodulation ASK/OOK Local carrier + multiplier Envelope detector AM Product detector Envelope detector FSK Coherent correlator/mixer Frequency discriminator, filters, etc. PSK Local synchronized carrier + multiplier Differential/n...

Online Simulator for Frequency Modulatiuon and Demodulation

FM Modulation Simulator Frequency Modulation (FM) In Frequency Modulation, the frequency of the carrier signal varies in accordance with the message signal's amplitude. s FM (t) = A c cos(ฯ‰ c t + k f ∫m(t)dt) where ฯ‰ = 2ฯ€f & k f = Frequency Sensitivity Modulation index, ฮฒ = (k f * A m ) / f m Change the parameter values to see the effect. Message Freq (Hz) 1 Carrier Freq (Hz) Message Amplitude (Am) Kf (sensitivity): 50 Perform FM Demodulation ๐Ÿงช Experiment for Students: ...

OFDM Symbols and Subcarriers Explained

This article explains how OFDM (Orthogonal Frequency Division Multiplexing) symbols and subcarriers work. It covers modulation, mapping symbols to subcarriers, subcarrier frequency spacing, IFFT synthesis, cyclic prefix, and transmission. Step 1: Modulation First, modulate the input bitstream. For example, with 16-QAM , each group of 4 bits maps to one QAM symbol. Suppose we generate a sequence of QAM symbols: s0, s1, s2, s3, s4, s5, …, s63 Step 2: Mapping Symbols to Subcarriers Assume N sub = 8 subcarriers. Each OFDM symbol in the frequency domain contains 8 QAM symbols (one per subcarrier): Mapping (example) OFDM symbol 1 → s0, s1, s2, s3, s4, s5, s6, s7 OFDM symbol 2 → s8, s9, s10, s11, s12, s13, s14, s15 … OFDM sym...

(Filters) Free MATLAB alternative for signal analysis

Advanced Signal Filters Upload CSV (1st Col) or Audio (WAV, MP3, etc.) Generate Messy Signal (20Hz + 50Hz + 150Hz) No Operation FFT (Spectrum) Amplitude Modulation (AM) Double Sideband Supressed Carrier (DSBSC) Pulse Amplitude Modulation (PAM) Flat Top PAM Filters - LPF, HPF, BPF, Notch Principal Component Analysis (PCA) Cross Spectrum Filter Type: Signal Cleaner ...

Interactive Sallen-Key filter Simulation (2nd order LPF)

  Sallen-Key Filter Explained: Why It’s the Most Popular Second-Order Low-Pass Filter Sallen-Key Filter Explained: Why It’s the Most Popular Second-Order Low-Pass Filter (With Math) If you're learning analog electronics, active filters, or preparing for engineering interviews and exams, you've probably come across the Sallen-Key filter . But what exactly is it, and why do engineers prefer it over simply cascading RC low-pass filters? Live Interactive Simulator Adjust the component values to see the real-time frequency response (Bode Plot). R1 (kฮฉ): 10 R2 (kฮฉ): 10 C1 (nF): 10 C2 (nF): 10 ...

Online Simulator for ASK, FSK, and PSK Signal Generation

Interactive Digital Signal Processing (DSP) Tutorial and Simulator for ASK, FSK, and BPSK modulation techniques. Try our new Digital Signal Processing Simulator!   •   Interactive ASK, FSK, and BPSK tools updated for 2025. Start Now Digital Modulation Visualizer: ASK, FSK, & BPSK Simulator Learn and visualize binary modulation techniques (ASK, FSK, BPSK) in real-time with adjustable carrier and sampling parameters. Perfect for DSP students and engineers. ๐Ÿ“ก ASK Simulator ๐Ÿ“ถ FSK Simulator ๐ŸŽš️ BPSK Simulator ๐Ÿ“š More Topics ASK Modulator FSK Modulator BPSK Modulator Demodulation More Topics 1. ASK (Ampli...