check bipartite graph dfs Algorithm
The check bipartite graph DFS algorithm is a graph traversal technique used to determine if a given graph is bipartite or not. A bipartite graph is a special type of graph where the vertices can be divided into two disjoint sets, such that every edge in the graph connects a vertex from one set to a vertex in the other set. In other words, no two vertices within the same set are connected by an edge. The algorithm utilizes the Depth-First Search (DFS) approach, which navigates through the graph by exploring as deep as possible along each branch before backtracking.
The check bipartite graph DFS algorithm starts by selecting an arbitrary vertex in the graph and assigning it a color (e.g., red). It then visits all the neighboring vertices of the initial vertex and colors them with an alternate color (e.g., blue). The algorithm continues to explore the graph using the DFS approach, alternating the colors for each visited vertex. If, during the traversal, the algorithm encounters a vertex that has already been visited and colored, it checks if the color of the newly visited vertex is the same as the color of the previously visited vertex. If the colors match, the graph is not bipartite. Otherwise, the algorithm continues with the DFS traversal. If all vertices are visited without encountering any conflicting colors, the graph is determined to be bipartite.
# Check whether Graph is Bipartite or Not using DFS
# A Bipartite Graph is a graph whose vertices can be divided into two independent sets,
# U and V such that every edge (u, v) either connects a vertex from U to V or a vertex
# from V to U. In other words, for every edge (u, v), either u belongs to U and v to V,
# or u belongs to V and v to U. We can also say that there is no edge that connects
# vertices of same set.
def check_bipartite_dfs(graph):
visited = [False] * len(graph)
color = [-1] * len(graph)
def dfs(v, c):
visited[v] = True
color[v] = c
for u in graph[v]:
if not visited[u]:
dfs(u, 1 - c)
for i in range(len(graph)):
if not visited[i]:
dfs(i, 0)
for i in range(len(graph)):
for j in graph[i]:
if color[i] == color[j]:
return False
return True
# Adjacency list of graph
graph = {0: [1, 3], 1: [0, 2], 2: [1, 3], 3: [0, 2], 4: []}
print(check_bipartite_dfs(graph))