The graph coloring problem is a classic combinatorial optimization problem where the goal is to assign colors to vertices of a graph in such a way that no two adjacent vertices share the same color.