Java
Java

 

 

This Java program demonstrates the implementation of a graph using both an adjacency list and an adjacency matrix. This allows for a comparison of two primary methods of graph representation in terms of space and time efficiency.

Java Code

import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;

class Graph {
    private int V;   // Number of vertices
    private LinkedList<Integer> adjList[]; // Adjacency List
    private int adjMatrix[][]; // Adjacency Matrix

    public Graph(int V) {
        this.V = V;
        adjList = new LinkedList[V];
        for (int i = 0; i < V; i++) {
            adjList[i] = new LinkedList<>();
        }
        
        adjMatrix = new int[V][V];
    }

    public void addEdgeList(int v, int w) {
        adjList[v].add(w);
        adjList[w].add(v); // Add w to v's list and vice versa for undirected graph
    }

    public void addEdgeMatrix(int v, int w) {
        adjMatrix[v][w] = 1;
        adjMatrix[w][v] = 1; // Mark the edges from v to w and w to v as true
    }

    public void printAdjList() {
        System.out.println("Adjacency List:");
        for (int i = 0; i < V; i++) {
            System.out.print(i + ": ");
            for (int node : adjList[i]) {
                System.out.print(node + " ");
            }
            System.out.println();
        }
    }

    public void printAdjMatrix() {
        System.out.println("Adjacency Matrix:");
        for (int i = 0; i < V; i++) {
            for (int j = 0; j < V; j++) {
                System.out.print(adjMatrix[i][j] + " ");
            }
            System.out.println();
        }
    }
}

public class GraphDemo {
    public static void main(String[] args) {
        Graph g = new Graph(4); // Create a graph with 4 vertices

        g.addEdgeList(0, 1);
        g.addEdgeList(0, 2);
        g.addEdgeList(1, 2);
        g.addEdgeList(2, 3);

        g.addEdgeMatrix(0, 1);
        g.addEdgeMatrix(0, 2);
        g.addEdgeMatrix(1, 2);
        g.addEdgeMatrix(2, 3);

        g.printAdjList();
        g.printAdjMatrix();
    }
}

Explanation of the Code

The program defines a Graph class to represent the graph using both an adjacency list and an adjacency matrix:

  • Graph Constructor: Initializes the adjacency list and matrix for the number of vertices provided.
  • addEdgeList and addEdgeMatrix Methods: These methods are used to add edges between vertices in the adjacency list and matrix, respectively.
  • printAdjList and printAdjMatrix Methods: These methods display the graph as represented by the adjacency list and matrix, showcasing the graph’s structure visually in the console.

This dual representation in a single program provides insight into the trade-offs between the two methods, including the ease of edge insertion and space complexity.

 

By Aditya Bhuyan

I work as a cloud specialist. In addition to being an architect and SRE specialist, I work as a cloud engineer and developer. I have assisted my clients in converting their antiquated programmes into contemporary microservices that operate on various cloud computing platforms such as AWS, GCP, Azure, or VMware Tanzu, as well as orchestration systems such as Docker Swarm or Kubernetes. For over twenty years, I have been employed in the IT sector as a Java developer, J2EE architect, scrum master, and instructor. I write about Cloud Native and Cloud often. Bangalore, India is where my family and I call home. I maintain my physical and mental fitness by doing a lot of yoga and meditation.

Leave a Reply

Your email address will not be published. Required fields are marked *

error

Enjoy this blog? Please spread the word :)