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 Solve TSP Using Minimum Spanning Trees
Spring 5 WebClient
Java Program to Perform LU Decomposition of any Matrix
Guide to java.util.concurrent.BlockingQueue
What is Thread-Safety and How to Achieve it?
A Guide to Spring Cloud Netflix – Hystrix
Spring Data JPA and Null Parameters
Convert Hex to ASCII in Java
Hướng dẫn Java Design Pattern – Chain of Responsibility
HttpAsyncClient Tutorial
Java Program to Compute DFT Coefficients Directly
Java Program to Implement Dijkstra’s Algorithm using Set
Java Program to Implement Randomized Binary Search Tree
A Guide to @RepeatedTest in Junit 5
Comparing getPath(), getAbsolutePath(), and getCanonicalPath() in Java
Spring MVC Async vs Spring WebFlux
Spring Boot Gradle Plugin
Java Program to Generate a Graph for a Given Fixed Degree Sequence
Extract links from an HTML page
Custom HTTP Header with the HttpClient
Configuring a DataSource Programmatically in Spring Boot
Spring Boot - Admin Server
Java Program to Perform the Sorting Using Counting Sort
Java Program to Implement Variable length array
Spring RestTemplate Error Handling
Java Program to Implement WeakHashMap API
Reactive WebSockets with Spring 5
Java – Get Random Item/Element From a List
Guide to Java 8 groupingBy Collector
Overflow and Underflow in Java
Spring Cloud – Securing Services
Spring Boot - Hystrix