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")