This Java program is to check whether graph is bipartite using bfs. In the mathematical field of graph theory, a bipartite graph (or bigraph) is a graph whose vertices can be divided into two disjoint sets and such that every edge connects a vertex in to one in that is, and are each independent sets. Equivalently, a bipartite graph is a graph that does not contain any odd-length cycles.
Here is the source code of the Java program to check whether a graph is biparite using bfs. The Java program is successfully compiled and run on a Linux system. The program output is also shown below.
import java.util.InputMismatchException;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class BipartiteBfs
{
private int numberOfVertices;
private Queue<Integer> queue;
public static final int NO_COLOR = 0;
public static final int RED = 1;
public static final int BLUE = 2;
public BipartiteBfs(int numberOfVertices)
{
this.numberOfVertices = numberOfVertices;
queue = new LinkedList<Integer>();
}
public boolean isBipartite(int adjacencyMatrix[][], int source)
{
int[] colored = new int[numberOfVertices + 1];
for (int vertex = 1; vertex <= numberOfVertices; vertex++)
{
colored[vertex] = NO_COLOR;
}
colored = RED;
queue.add(source);
int element, neighbour;
while (!queue.isEmpty())
{
element = queue.remove();
neighbour = 1;
while (neighbour <= numberOfVertices)
{
if (adjacencyMatrix[element][neighbour] == 1 && colored[element]== colored[neighbour])
{
return false;
}
if (adjacencyMatrix[element][neighbour] == 1 && colored[neighbour]== NO_COLOR)
{
colored[neighbour] = (colored[element] == RED ) ? BLUE :RED;
queue.add(neighbour);
}
neighbour++;
}
}
return true;
}
public static void main(String... arg)
{
int number_of_nodes, source;
Scanner scanner = null;
try
{
System.out.println("Enter the number of nodes in the graph");
scanner = new Scanner(System.in);
number_of_nodes = scanner.nextInt();
int adjacency_matrix[][] = new int[number_of_nodes + 1][number_of_nodes + 1];
System.out.println("Enter the adjacency matrix");
for (int i = 1; i <= number_of_nodes; i++)
{
for (int j = 1; j <= number_of_nodes; j++)
{
adjacency_matrix[i][j] = scanner.nextInt();
}
}
for (int i = 1; i <= number_of_nodes; i++)
{
for (int j = 1; j <= number_of_nodes; j++)
{
if(adjacency_matrix[i][j] == 1 && adjacency_matrix[j][i] == 0)
{
adjacency_matrix[j][i] = 1;
}
}
}
System.out.println("Enter the source for the graph");
source = scanner.nextInt();
BipartiteBfs bipartiteBfs = new BipartiteBfs(number_of_nodes);
if (bipartiteBfs.isBipartite(adjacency_matrix, source))
{
System.out.println("The given graph is bipartite");
} else
{
System.out.println("The given graph is not bipartite");
}
} catch (InputMismatchException inputMismatch)
{
System.out.println("Wrong Input format");
}
scanner.close();
}
}
$javac BipartiteBfs.java $java BipartiteBfs Enter the number of nodes in the graph 4 Enter the adjacency matrix 0 1 0 1 1 0 1 0 0 1 0 1 1 0 1 0 Enter the source for the graph 1 The given graph is bipartite
Related posts:
Java Program to implement Bit Set
Java Program to Check if a Given Graph Contain Hamiltonian Cycle or Not
Java Program to Generate a Graph for a Given Fixed Degree Sequence
Java Program to Generate Random Numbers Using Probability Distribution Function
Java Program to Implement HashTable API
Convert String to Byte Array and Reverse in Java
Test a REST API with Java
Java Byte Array to InputStream
Java Program to Implement DelayQueue API
Java Program to Implement Caesar Cypher
A Guide to Java 9 Modularity
Spring Boot with Multiple SQL Import Files
Java Program to Solve the Fractional Knapsack Problem
Java Program to Solve Knapsack Problem Using Dynamic Programming
Java Program to Perform Insertion in a BST
Servlet 3 Async Support with Spring MVC and Spring Security
Guava – Join and Split Collections
Check If Two Lists are Equal in Java
Java Program to Implement LinkedHashSet API
Bootstrapping Hibernate 5 with Spring
Format ZonedDateTime to String
Convert Hex to ASCII in Java
Check If a File or Directory Exists in Java
Extract network card address
Java Program to Implement Stack API
Working with Tree Model Nodes in Jackson
Hướng dẫn Java Design Pattern – Template Method
Hướng dẫn Java Design Pattern – Service Locator
A Guide to JUnit 5
Composition, Aggregation, and Association in Java
Java Program to Find the Minimum Element of a Rotated Sorted Array using Binary Search approach
Java Program to Apply DFS to Perform the Topological Sorting of a Directed Acyclic Graph