This Java program is to check whether graph is bipartite using dfs. 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 dfs. 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.Scanner; import java.util.Stack; public class BipartiteDfs { private int numberOfVertices; private Stack<Integer> stack; public static final int NO_COLOR = 0; public static final int RED = 1; public static final int BLUE = 2; public BipartiteDfs(int numberOfVertices) { this.numberOfVertices = numberOfVertices; stack = new Stack<Integer>(); } public boolean isBipartite(int adjacencyMartix[][], int source) { int[] colored = new int[numberOfVertices + 1]; for (int vertex = 1; vertex <= numberOfVertices; vertex++) { colored[vertex] = NO_COLOR; } stack.push(source); colored = RED; int element = source; int neighbours = source; while (!stack.empty()) { element = stack.peek(); neighbours = element; while (neighbours <= numberOfVertices) { if (adjacencyMartix[element][neighbours] == 1&& colored[neighbours] == colored[element]) { return false; } if (adjacencyMartix[element][neighbours] == 1 && colored[neighbours] == NO_COLOR) { colored[neighbours] = (colored[element] == RED) ? BLUE : RED; stack.push(neighbours); element = neighbours; neighbours = 1; continue; } neighbours++; } stack.pop(); } 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(); BipartiteDfs bipartiteDfs = new BipartiteDfs(number_of_nodes); if (bipartiteDfs.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:
Jackson – Change Name of Field
Control the Session with Spring Security
Tips for dealing with HTTP-related problems
Java Program to Check if any Graph is Possible to be Constructed for a Given Degree Sequence
Java Program to Implement Sparse Matrix
Java Program to Implement Quick sort
Wrapper Classes in Java
Java Program to Implement CopyOnWriteArrayList API
Java Web Services – JAX-WS – SOAP
Java Program to Describe the Representation of Graph using Incidence Matrix
Generating Random Dates in Java
How to Change the Default Port in Spring Boot
Java Program to Represent Graph Using 2D Arrays
Spring Security – security none, filters none, access permitAll
Java Program to Check Whether Graph is DAG
Shuffling Collections In Java
Logging in Spring Boot
Java Program to Implement ConcurrentLinkedQueue API
New Features in Java 8
String Processing with Apache Commons Lang 3
Spring Security – Reset Your Password
Java Program to Implement HashSet API
Converting Between Byte Arrays and Hexadecimal Strings in Java
Hướng dẫn sử dụng String Format trong Java
A Guide to the ResourceBundle
Java Program to Implement Vector API
A Comparison Between Spring and Spring Boot
Cài đặt và sử dụng Swagger UI
How to Store Duplicate Keys in a Map in Java?
Java Program to Implement vector
HashMap trong Java hoạt động như thế nào?
Java Program to Implement JobStateReasons API