color mapping


import matplotlib.pyplot as plt
import networkx as nx

def valid_assignment(node, color, assignment):
for neighbor in G.neighbors(node):
if neighbor in assignment and assignment[neighbor] == color:
return False
return True

def backtrack(assignment):
if len(assignment) == len(G):
return assignment

unassigned_nodes = [node for node in G.nodes if node not in assignment]
node = unassigned_nodes[0]

for color in colors:
    if valid_assignment(node, color, assignment):
        assignment[node] = color
        result = backtrack(assignment)
        if result:
            return result
        del assignment[node]  # Corrected from 'del assignment'

return None

edges = [
('Andhra Pradesh', 'Telangana'), ('Andhra Pradesh', 'Karnataka'), ('Andhra Pradesh', 'Tamil Nadu'),
('Telangana', 'Karnataka'), ('Telangana', 'Maharashtra'), ('Telangana', 'Chhattisgarh'),
('Maharashtra', 'Goa'), ('Maharashtra', 'Karnataka'), ('Maharashtra', 'Gujarat')
]

colors = ['Red', 'Green', 'Blue']

G = nx.Graph()
G.add_edges_from(edges)

solution = backtrack({})

if solution:
for node, color in solution.items():
print(node, "colored by", color)

pos = nx.spring_layout(G, seed=42, k=0.5)
plt.figure(figsize=(12, 12))
color_map = [solution.get(node, 'Gray') for node in G.nodes]

nx.draw(G, pos, with_labels=True, node_color=color_map, node_size=1500, font_size=10, font_weight='bold')
plt.title("Map Coloring using Backtracking", fontsize=16)
plt.show()

else:
print("Solution not found")