Skip to content

Latest commit

 

History

History
48 lines (36 loc) · 2.31 KB

File metadata and controls

48 lines (36 loc) · 2.31 KB

Efficient-Stable-Matching-Recomputation-in-Dynamic-Bipartite-Graphs

Problem Statement:
Let G= ((A, B), E) be a bipartite graph. Every vertex v∈V(G) ranks all its neighbors. Let ≻v denote the ordered set of neighbors of v. We say that v prefers u over u′ if u is before u′ in ≻v. Let μ be a matching in G. We say that μ is a stable matching if there is no edge uv /∈μ such that,
i. u prefers v over μ(u) (matched partner of u), and
ii. v prefers u over μ(v) (matched partner of v)
A stable matching can be found in polynomial time using the Gale Shapley algorithm. Suppose that an edge from G is deleted. Design an algorithm to recompute a stable matching efficiently. Further, design an algorithm when a subset of edges from G is deleted.

Modifications in the Gale-Shapley Algorithm:
i. User Interaction.
ii. Validation of Edge Deletions: The code checks whether the specified edges for deletion are part of the initial matching. Only valid edges are deleted.
iii. Updating the Matching: When an edge is deleted, the code frees the involved Set-A and Set-B and modifies their preferences to reflect the deletion. The Set-B becomes free, and the Set-A reverts to being free as well. The preferences of both individuals are updated to remove the deleted partner.

Output:

For the given input.txt, the following output is achieved for multiple edge deletion:

Stable Matchings:
Matchings:
Node 1 (Set-A) --> Node 5 (Set-B)
Node 0 (Set-A) --> Node 6 (Set-B)
Node 3 (Set-A) --> Node 7 (Set-B)

Free nodes in Set-A: node 2
Free nodes in Set-B: node 4

Delete a set of nodes from the stable matching
Enter the number of edges to be deleted: 2

Delete Edge [Set-A -> Set-B]: [1, 5]
Delete Edge [Set-A -> Set-B]: [0, 6]

Matchings:
Node 0 (Set-A) --> Node 4 (Set-B)
Node 2 (Set-A) --> Node 6 (Set-B)
Node 3 (Set-A) --> Node 7 (Set-B)

Free nodes in Set-A: node 1
Free nodes in Set-B: node 5

Time Complexity:

Aspect Amortized Time Complexity
Initialization of Preferences (if we do not pass an input file) O(N2) (One-time)
Gale-Shapley Algorithm (Worst Case) O(N2)
Edge Deletions (Approximate Complexity) O(N)
Overall Amortized Time Complexity O(N2) + O(N2) + O(N) = O(N2)