Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added the program to check Bipartite Graph #1095

Merged
merged 2 commits into from
Nov 5, 2024
Merged

Conversation

shuvojitss
Copy link
Contributor

@shuvojitss shuvojitss commented Nov 5, 2024

Pull Request for PyVerse 💡

Requesting to submit a pull request to the PyVerse repository.


Issue Title

Please enter the title of the issue related to your pull request.
Bipartite graph

  • I have provided the issue title.

Info about the Related Issue

What's the goal of the project?
Given an adjacency list / matrix representing a graph with V vertices indexed from 0, the task is to determine whether the graph is bipartite or not. You can use queue data structure to check the graph.

  • I have described the aim of the project.

Name

Please mention your name.
Shuvojit Samanta

  • I have provided my name.

GitHub ID

Please mention your GitHub ID.
shuvojitss

  • I have provided my GitHub ID.

Email ID

Please mention your email ID for further communication.
[email protected]

  • I have provided my email ID.

Identify Yourself

Mention in which program you are contributing (e.g., WoB, GSSOC, SSOC, SWOC).
GSSOC

  • I have mentioned my participant role.

Closes

Enter the issue number that will be closed through this PR.
Closes: #1078

  • I have provided the issue number.

Describe the Add-ons or Changes You've Made

Give a clear description of what you have added or modified.

Algorithm Steps to Check if a Graph is Bipartite:

  1. Initialize Colors: Create an array color of size V (number of vertices) and initialize all elements to -1, indicating that no vertices have been colored.

  2. BFS for Each Component: For each vertex start from 0 to V-1:

    • If color[start] is not -1, continue to the next vertex (this vertex is already colored).
  3. Start BFS:

    • Initialize a queue and push the start vertex into it.
    • Color start with color 0.
  4. Process the Queue:

    • While the queue is not empty, dequeue a vertex and check its neighbors:
      • Color uncolored neighbors with the opposite color.
      • If a neighbor has the same color as the current vertex, return false (the graph is not bipartite).
  5. Completion: If all vertices are processed without conflicts, return true (the graph is bipartite).

  • I have described my changes.

Type of Change

Select the type of change:

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Code style update (formatting, local variables)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • This change requires a documentation update

How Has This Been Tested?

Describe how your changes have been tested.
I have tested it in all python editors and its working. I am providing a sample input output to describe it.

Sample Input:

Enter the number of vertices: 5
Enter the adjacency matrix:
0 1 1 0 0
1 0 0 1 0
1 0 0 1 0
0 1 1 0 1
0 0 0 1 0

Sample Output:

The graph is bipartite.

Explainataion of Sample:

Diagrammatic representation of the above input:

   0 ---- 1
   |      |
   2 ---- 1 --- 4                            

To determine if the graph is bipartite, we can attempt to color the vertices using two colors. The following coloring can be used:

  • Color Vertex 0 with color 0.
  • Color Vertex 1 and Vertex 2 with color 1 (neighbors of Vertex 0).
  • Color Vertex 3 with color 0 (neighbor of Vertices 1 and 2).
  • Color Vertex 4 with color 1 (neighbor of Vertex 3).

Since we can assign colors such that no two adjacent vertices share the same color, the graph is confirmed to be bipartite.

  • I have described my testing process.

Checklist

Please confirm the following:

  • My code follows the guidelines of this project.
  • I have performed a self-review of my own code.
  • I have commented my code, particularly wherever it was hard to understand.
  • I have made corresponding changes to the documentation.
  • My changes generate no new warnings.
  • I have added things that prove my fix is effective or that my feature works.
  • Any dependent changes have been merged and published in downstream modules.

Copy link

github-actions bot commented Nov 5, 2024

👋 Thank you for opening this pull request! We're excited to review your contribution. Please give us a moment, and we'll get back to you shortly!

Feel free to join our community on Discord to discuss more!

@UTSAVS26 UTSAVS26 merged commit 7c2b34b into UTSAVS26:main Nov 5, 2024
1 of 23 checks passed
@UTSAVS26 UTSAVS26 added Contributor Denotes issues or PRs submitted by contributors to acknowledge their participation. Status: Approved PRs that have passed review and are approved for merging. level1 gssoc-ext labels Nov 5, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Contributor Denotes issues or PRs submitted by contributors to acknowledge their participation. gssoc-ext level1 Status: Approved PRs that have passed review and are approved for merging.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Code Addition Request]: Add the program to check Bipartite graph
2 participants