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:
Spring Boot - Sending Email
Spring Boot - Admin Client
HandlerAdapters in Spring MVC
Java Program to Check Whether it is Weakly Connected or Strongly Connected for a Directed Graph
How to Read a Large File Efficiently with Java
Guide to Guava Table
Java Program to Perform Uniform Binary Search
Anonymous Classes in Java
Lập trình hướng đối tượng (OOPs) trong java
Registration – Activate a New Account by Email
Java Program to Implement Bucket Sort
Hướng dẫn Java Design Pattern – Bridge
Java Program to Implement Dijkstra’s Algorithm using Queue
Java Program to Implement Binomial Tree
Servlet 3 Async Support with Spring MVC and Spring Security
Java Program to Implement Multi-Threaded Version of Binary Search Tree
Java Program to Solve a Matching Problem for a Given Specific Case
Calling Stored Procedures from Spring Data JPA Repositories
Tạo ứng dụng Java RESTful Client với thư viện Retrofit
Using Custom Banners in Spring Boot
Java Program to Implement Find all Forward Edges in a Graph
@Order in Spring
Disable Spring Data Auto Configuration
Hướng dẫn Java Design Pattern – Adapter
So sánh HashSet, LinkedHashSet và TreeSet trong Java
Wiring in Spring: @Autowired, @Resource and @Inject
Most commonly used String methods in Java
Spring Boot - Tomcat Port Number
Spring MVC + Thymeleaf 3.0: New Features
Introduction to PCollections
Spring Data JPA and Null Parameters
Java Program to Perform Insertion in a BST