|
1 |
| -# Graph Coloring Problem |
2 |
| -This project consists in the implementation of algorithms to solve the NP-hard problem of Minimum Graph Coloring. |
3 |
| - |
4 |
| -An heuristic algorithm along with an exact algorithm will be implemented. |
| 1 | +# Minimum Graph Coloring Problem |
| 2 | + |
| 3 | +   |
| 4 | + |
| 5 | +> Status: Developing ⚠️ |
| 6 | +
|
| 7 | + |
| 8 | +## Table of Contents |
| 9 | + |
| 10 | + - [Description](#1-description) |
| 11 | + - [Requirements](#2-requirements) |
| 12 | + - [Compilation](#3-compilation) |
| 13 | + - [How to run it](#4-how-to-run-it) |
| 14 | + - [Roadmap](#5-roadmap) |
| 15 | + - [License](#6-license) |
| 16 | + |
| 17 | + |
| 18 | +## 1. Description |
| 19 | + |
| 20 | +The Minimum Graph Coloring is a well-known NP-Hard combinatorial optimization problem that consists on assigning the least number of different colors to the vertices of a graph such that every two adjacent vertices are colored with distinct colors. |
| 21 | + |
| 22 | +This project aims to find the chromatic number of an undirected graph. |
| 23 | + |
| 24 | +Three heuristic algorithms were implemented, one based on Simulated Annealing metaheuristic, along with two exact algorithms. |
| 25 | + |
| 26 | +The DIMACS graphs are used as instance files. Available [here](https://mat.tepper.cmu.edu/COLOR04/INSTANCES/) and [here](https://unsat.github.io/npbench/graphcoloring.html). |
| 27 | + |
| 28 | +## 2. Requirements |
| 29 | +You should have [Java JDK 11](https://www.oracle.com/java/technologies/downloads/#java11) installed on your computer. |
| 30 | + |
| 31 | + |
| 32 | +## 3. Compilation |
| 33 | + |
| 34 | + |
| 35 | + |
| 36 | +You should open the command line and and then open the directory on which you extracted the project. |
| 37 | + |
| 38 | +Being on NP-Hard directory, you should execute the following code on the command line: |
| 39 | + |
| 40 | +- cd src |
| 41 | +- cd Classes |
| 42 | +- javac *.java |
| 43 | + |
| 44 | +## 4. How to run it |
| 45 | + |
| 46 | +Access the directory _src_ through the command line and then type _java Classes.Application_ and execute it. |
| 47 | + |
| 48 | +### 4.1 Instance File |
| 49 | + |
| 50 | +As soon as you run the program, you'll be asked to type the name of a instance file to compute its chromatic number. |
| 51 | + |
| 52 | +You should write the file name along with ".txt" at the end. |
| 53 | + |
| 54 | +>Example: david.txt |
| 55 | +
|
| 56 | +### 4.2 Running exact algorithms |
| 57 | + |
| 58 | +You'll also be asked whether you'd like or not to run the Brute Force and Backtracking exact algorithms. |
| 59 | + |
| 60 | +For those you'd like to run, it is enough to type "yes". |
| 61 | + |
| 62 | +### 4.3 Setting up Simulated Annealing parameters |
| 63 | + |
| 64 | +Before running the heuristic based on Simulated Annealing, you'll be asked to set the initial temperature (T_0), the iterations per temperature (L) and the cooling rate (alpha). |
| 65 | + |
| 66 | +## 5. Roadmap |
| 67 | + |
| 68 | +Features to be added and corrected in the future: |
| 69 | + |
| 70 | +- Change the random neighbor method of Simulated Annealing as it has not improved the solution quality. |
| 71 | + |
| 72 | + |
| 73 | +## 6. License |
| 74 | + |
| 75 | +[](https://lbesson.mit-license.org/) |
| 76 | + |
| 77 | +[MIT licensed.]("https://github.com/1DanielSC/BinarySearchTree/blob/main/LICENSE") |
0 commit comments