Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FEATURE REQUEST] <Java Implementation of Graph Coloring Problem> #4722

Closed
amaan14999 opened this issue Oct 8, 2023 · 4 comments
Closed

Comments

@amaan14999
Copy link

What would you like to Propose?

Proposal: Addition of Graph Coloring Problem algorithm under, https://github.com/TheAlgorithms/Java/tree/master/src/main/java/com/thealgorithms/greedyalgorithms

Filename: GraphColoring.java

Overview

The graph coloring problem asks to assign colors to the vertices of a graph in such a way that no two adjacent vertices share the same color. The objective is often to color the graph with as few colors as possible.

More Details

https://en.wikipedia.org/wiki/Graph_coloring

Issue details

The greedy coloring algorithm is a straightforward approach to solve this problem. Here's a basic outline of the greedy algorithm:

  1. Ordering the Vertices: Although not strictly necessary, the algorithm can start by ordering the vertices in some fashion. Different orderings may produce different results. A common ordering is by the degree of the vertices, but the simplest is just the order in which the vertices are given.
  2. Coloring: Start with the first vertex and assign it the first color. Then move to the next vertex.
    For each subsequent vertex, look at its neighbors and determine what colors have already been assigned. Assign the smallest possible color that hasn't been used by its neighbors.

Pseudo Code:

Algorithm GreedyGraphColoring(G):
    Input: A graph G with V vertices
    Output: A color assignment for each vertex

    Initialize an array color[] of size V and set all to -1 (indicating uncolored)
    Initialize an array available[] of size V and set all to False (indicating all colors are initially available)
    
    Assign color[0] = 0  // Assign the first color to the first vertex
    
    FOR vertex u from 1 to V-1 DO
        FOR each vertex i from 0 to V-1 DO
            IF there's an edge between u and i AND color[i] is not -1 THEN
                SET available[color[i]] = True
            END IF
        END FOR

        // Find the first available color
        clr = 0
        WHILE clr < V AND available[clr] is True DO
            INCREMENT clr
        END WHILE

        Assign color[u] = clr

        Reset available[] to False for the next iteration
    END FOR

    RETURN color

END Algorithm

Additional Information

No response

@Souradeephazra123
Copy link

I want to do this problem

@thestbar
Copy link

thestbar commented Oct 9, 2023

@amaan14999 Hello, if no one is working on this I can implement it!

Copy link

github-actions bot commented Nov 9, 2023

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

@github-actions github-actions bot added the stale label Nov 9, 2023
Copy link

github-actions bot commented Jan 7, 2024

Please reopen this issue once you add more information and updates here. If this is not the case and you need some help, feel free to seek help from our Gitter or ping one of the reviewers. Thank you for your contributions!

@github-actions github-actions bot closed this as completed Jan 7, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants