In this program you are required to implement a random undirected graph and determine if the graph is bipartite or not using BFS. Here, we work with three colors for the vertices: gray (not visited), [blue, red] (opposite colors)
- Request the user to determine the order (|V|) and size (|E|) of the graph.
- Generate |E| random edges into the adjacency matrix/list (Adj) to make a random undirected graph. (Make sure to have a symmetric matrix)
- Print the resulting adjacency matrix/list.
- Implement 2 functions: Explore and Is_bipartite
- In Explore function,
- For each vertex (v) initialize color = gray.
- Start from the first vertex and call Is_bipartite on that.
- Next, go to the next unexplored vertex (having gray color), and call Is_bipartite
- Repeat step c. until every vertex is explored/colored or a not bipartite graph is detected.
- Now to implement our second function (Is_bipartite), you need to change your BFS function in lab a. Keep popping each vertex from Q. (call it u)
- Go to the adjacency list of u, (adj(u)), and for each neighbor (v):
- If v. color == gray, assign an opposite color to v and push it into the Q. (Example: u.color is blue, and v.color is gray we set v.color = red)
- Else if v.color == u.color: Stop the entire code and print NOT bipartite.
- Print the color of all the vertices.
Reviews
There are no reviews yet.