This is a Java Program to Implement Graph Coloring Algorithm. Graph Coloring is a way of coloring the vertices of a undirected graph such that no two adjacent vertices share the same color.
Here is the source code of the Java Program to Implement Graph Coloring Algorithm. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.
/** ** Java Program to Implement Graph Coloring Algorithm **/ import java.util.Scanner; /** Class GraphColoring **/ public class GraphColoring { private int V, numOfColors; private int[] color; private int[][] graph; /** Function to assign color **/ public void graphColor(int[][] g, int noc) { V = g.length; numOfColors = noc; color = new int[V]; graph = g; try { solve(0); System.out.println("No solution"); } catch (Exception e) { System.out.println("\nSolution exists "); display(); } } /** function to assign colors recursively **/ public void solve(int v) throws Exception { /** base case - solution found **/ if (v == V) throw new Exception("Solution found"); /** try all colours **/ for (int c = 1; c <= numOfColors; c++) { if (isPossible(v, c)) { /** assign and proceed with next vertex **/ color[v] = c; solve(v + 1); /** wrong assignement **/ color[v] = 0; } } } /** function to check if it is valid to allot that color to vertex **/ public boolean isPossible(int v, int c) { for (int i = 0; i < V; i++) if (graph[v][i] == 1 && c == color[i]) return false; return true; } /** display solution **/ public void display() { System.out.print("\nColors : "); for (int i = 0; i < V; i++) System.out.print(color[i] +" "); System.out.println(); } /** Main function **/ public static void main (String[] args) { Scanner scan = new Scanner(System.in); System.out.println("Graph Coloring Algorithm Test\n"); /** Make an object of GraphColoring class **/ GraphColoring gc = new GraphColoring(); /** Accept number of vertices **/ System.out.println("Enter number of verticesz\n"); int V = scan.nextInt(); /** get graph **/ System.out.println("\nEnter matrix\n"); int[][] graph = new int[V][V]; for (int i = 0; i < V; i++) for (int j = 0; j < V; j++) graph[i][j] = scan.nextInt(); System.out.println("\nEnter number of colors"); int c = scan.nextInt(); gc.graphColor(graph, c); } }
Graph Coloring Algorithm Test Enter number of vertices 10 Enter matrix 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 1 1 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 1 1 0 0 0 0 0 0 0 1 0 1 1 0 0 Enter number of colors 3 Solution exists Colors : 1 2 1 2 3 2 1 3 3 2
Related posts:
Java – Reader to InputStream
Netflix Archaius with Various Database Configurations
Intro to Inversion of Control and Dependency Injection with Spring
Loại bỏ các phần tử trùng trong một ArrayList như thế nào?
Hướng dẫn sử dụng biểu thức chính quy (Regular Expression) trong Java
Java Program to Implement Segment Tree
Java Program to Implement Max Heap
Java Program to Find Strongly Connected Components in Graphs
Java Program to Represent Linear Equations in Matrix Form
Introduction to the Java NIO Selector
Spring Boot - Sending Email
Simultaneous Spring WebClient Calls
TreeSet và sử dụng Comparable, Comparator trong java
A Guide to Spring Boot Admin
Java Program to Implement Randomized Binary Search Tree
Java Program to Find Nearest Neighbor for Dynamic Data Set
Java String to InputStream
Configuring a DataSource Programmatically in Spring Boot
Java Program to Implement Karatsuba Multiplication Algorithm
How to Remove the Last Character of a String?
Java Program to Implement Attribute API
Hướng dẫn Java Design Pattern – Proxy
Sử dụng CountDownLatch trong Java
Java Program to Implement Suffix Array
LinkedHashSet trong java
Hướng dẫn sử dụng Printing Service trong Java
Using JWT with Spring Security OAuth
Lớp TreeMap trong Java
Tiêu chuẩn coding trong Java (Coding Standards)
Introduction to Spring Cloud Stream
Java Program to Evaluate an Expression using Stacks
Guide to DelayQueue