Skip to content
geeksforgeeks
  • Courses
    • DSA to Development
    • Get IBM Certification
    • Newly Launched!
      • Master Django Framework
      • Become AWS Certified
    • For Working Professionals
      • Interview 101: DSA & System Design
      • Data Science Training Program
      • JAVA Backend Development (Live)
      • DevOps Engineering (LIVE)
      • Data Structures & Algorithms in Python
    • For Students
      • Placement Preparation Course
      • Data Science (Live)
      • Data Structure & Algorithm-Self Paced (C++/JAVA)
      • Master Competitive Programming (Live)
      • Full Stack Development with React & Node JS (Live)
    • Full Stack Development
    • Data Science Program
    • All Courses
  • Tutorials
    • Data Structures & Algorithms
    • ML & Data Science
    • Interview Corner
    • Programming Languages
    • Web Development
    • CS Subjects
    • DevOps And Linux
    • School Learning
  • Practice
    • Build your AI Agent
    • GfG 160
    • Problem of the Day
    • Practice Coding Problems
    • GfG SDE Sheet
  • Contests
    • Accenture Hackathon (Ending Soon!)
    • GfG Weekly [Rated Contest]
    • Job-A-Thon Hiring Challenge
    • All Contests and Events
  • Number System and Arithmetic
  • Algebra
  • Set Theory
  • Probability
  • Statistics
  • Geometry
  • Calculus
  • Logarithms
  • Mensuration
  • Matrices
  • Trigonometry
  • Mathematics
Open In App
Next Article:
Approximation Algorithms
Next article icon

Matching (Graph Theory)

Last Updated : 30 Sep, 2024
Comments
Improve
Suggest changes
Like Article
Like
Report

Matching (Graph Theory): In graph theory, matching is a fundamental concept used to describe a set of edges without common vertices. Matchings are used in various applications such as network design, job assignments, and scheduling. Understanding matchings is essential for solving problems involving optimal pairings and resource allocation.

Table of Content

  • Matching Definition
  • Types of Matching in Graphic Theory
    • Perfect Matching
    • Maximum Matching
    • Maximum Bipartite Matching
  • Algorithms for Finding Matchings
  • Applications – Matching in Graphic Theory
  • Practice Problems – Matching (Graph Theory)

Matching Definition

A matching in a graph is a set of edges such that no two edges share a common vertex. In other words, matching is a way of pairing up vertices so that each vertex is included in at most one pair.

Matching Example

For a bipartite graph with vertices U={u1,u2,u3} and V={v1,v2,v3}, a maximum matching could be {u1, v2), (u2, v3), (u3, v1).}

Types of Matching in Graphic Theory

Perfect Matching

A perfect matching is a matching where every vertex in the graph is connected to exactly one edge in the matching.

Example: For the bipartite graph G=(U,V,E) where U={u1,u2,u3} and V={v1,v2,v3}, a perfect matching could be M={(u1,v1),(u2,v2),(u3,v3)}

Maximum Matching

A maximum matching is a matching that contains the largest possible number of edges.

Example: For the same graph G, a maximum matching could be M = {(u1,v1),(u2,v2)}, assuming there are no other edges connecting u3 to V.

Maximum Bipartite Matching

In a bipartite graph, a maximum bipartite matching covers the maximum number of vertices in both partitions.

Example: For the bipartite graph GGG, a maximum bipartite matching could be M={(u1,v1),(u2,v2),(u3,v3)}

Read: Graph Theory Basics

Algorithms for Finding Matchings

  1. Hungarian Algorithm
    • The Hungarian algorithm is used to find the maximum matching in a bipartite graph.
    • Steps:
      1. Initialize the matching MMM to be empty.
      2. Find augmenting paths and increase the size of the matching.
      3. Repeat until no more augmenting paths can be found.
  2. Hopcroft-Karp Algorithm
    • The Hopcroft-Karp algorithm is an efficient algorithm for finding maximum matchings in bipartite graphs.
    • Steps:
      1. Perform a breadth-first search to find the shortest augmenting path.
      2. Perform a depth-first search to augment the matching along the path.
      3. Repeat until no more augmenting paths can be found.
  3. Blossom Algorithm
    • The Blossom algorithm, developed by Jack Edmonds, is used to find maximum matchings in general graphs (non-bipartite).
    • Steps:
      1. Find augmenting paths using the concept of blossoms (odd-length cycles).
      2. Contract blossoms into single vertices.
      3. Repeat the process until no more augmenting paths can be found.

Applications – Matching in Graphic Theory

  1. Network Design: Efficient routing and resource allocation.
  2. Job Assignment: Assigning jobs to machines or workers.
  3. Scheduling: Optimal scheduling of tasks.

Practice Problems – Matching (Graph Theory)

Problem 1: Given a graph, determine if a perfect matching exists.

Problem 2: Find all maximum matchings in a given bipartite graph.

Problem 3: Given a graph, find a maximum matching using augmenting paths.

Problem 4: In a bipartite graph, determine the minimum path cover.

Problem 5: Find a maximum weighted matching in a general graph.

Problem 6: Implement the Hungarian algorithm for assignment problems.

Problem 7: Determine if a matching is stable in a given preference list.

Problem 8: Find a maximum matching in a general graph using the Blossom algorithm.

Problem 9: Determine the maximum cardinality matching in a bipartite graph.

Problem 10: Find the minimum edge cover in a bipartite graph.

Related Articles:

  • Bipartite Graph
  • Graph Theory

Conclusion – Matching (Graph Theory)

Matching in graph theory is a fundamental concept with significant applications in optimization and network design. Understanding different types of matchings and algorithms to find them provides efficient solutions to complex problems involving pairings and resource allocation.


Next Article
Approximation Algorithms
https://media.geeksforgeeks.org/auth/avatar.png
GeeksforGeeks
Improve
Article Tags :
  • Engineering Mathematics
  • GATE CS
  • Mathematics
  • Discrete Mathematics

Similar Reads

  • Graph Theory Tutorial
    Graph Theory is a branch of mathematics that is concerned with the study of relationships between different objects. A graph is a collection of various vertexes also known as nodes, and these nodes are connected with each other via edges. In this tutorial, we have covered all the topics of Graph The
    1 min read
  • Basics of Graph Theory

    • Graph and its representations
      A Graph is a non-linear data structure consisting of vertices and edges. The vertices are sometimes also referred to as nodes and the edges are lines or arcs that connect any two nodes in the graph. More formally a Graph is composed of a set of vertices( V ) and a set of edges( E ). The graph is den
      12 min read

    • Mathematics | Graph Theory Basics - Set 1
      A Graph is just a way to show connections between things. It is set of edges and vertices where each edge is associated with unordered pair of vertices. Graph is a data structure that is defined by two components : Node or Vertex: It is a point or joint between two lines like people, cities, or webs
      5 min read

    • Types of Graphs with Examples
      A graph is a mathematical structure that represents relationships between objects by connecting a set of points. It is used to establish a pairwise relationship between elements in a given set. graphs are widely used in discrete mathematics, computer science, and network theory to represent relation
      9 min read

    • Walks, Trails, Paths, Cycles and Circuits in Graph
      Walks, trails, paths, cycles, and circuits in a graph are sequences of vertices and edges with different properties. Some allow repetition of vertices and edges, while others do not. In this article, we will explore these concepts with examples. What is Walk?A walk in a graph is a sequence of vertic
      6 min read

    • Graph measurements: length, distance, diameter, eccentricity, radius, center
      A graph is defined as a set of points known as 'Vertices' and a line joining these points is known as 'Edges'. It is a set consisting of where 'V' is vertices and 'E' is edge. Vertices: {A, B, C, D, E, F} Edges: {{A, B}, {A, D}, {A, E}, {B, C}, {C, E}, {C, F}, {D, E}, {E, F}} Graph Measurements: The
      5 min read

    • Articulation Points (or Cut Vertices) in a Graph
      Given an undirected graph with V vertices and E edges (edges[][]), Your task is to return all the articulation points in the graph. If no such point exists, return {-1}. Note: An articulation point is a vertex whose removal, along with all its connected edges, increases the number of connected compo
      15+ min read

    • Bridges in a graph
      Given an undirected Graph, The task is to find the Bridges in this Graph.  An edge in an undirected connected graph is a bridge if removing it disconnects the graph. For a disconnected undirected graph, the definition is similar, a bridge is an edge removal that increases the number of disconnected
      15+ min read

    • Mathematics | Independent Sets, Covering and Matching
      Mathematics | Independent Sets, Covering and Matching1. Independent SetsA set of vertices I is called an independent set if no two vertices in set I are adjacent to each other in other words the set of non-adjacent vertices is called an independent set.It is also called a stable set.The parameter α0
      5 min read

    • Dijkstra's Algorithm to find Shortest Paths from a Source to all
      Given a weighted undirected graph represented as an edge list and a source vertex src, find the shortest path distances from the source vertex to all other vertices in the graph. The graph contains V vertices, numbered from 0 to V - 1. Note: The given graph does not contain any negative edge. Exampl
      12 min read

    • Depth First Search or DFS for a Graph
      In Depth First Search (or DFS) for a graph, we traverse all adjacent vertices one by one. When we traverse an adjacent vertex, we completely finish the traversal of all vertices reachable through that adjacent vertex. This is similar to a tree, where we first completely traverse the left subtree and
      13 min read

    • Breadth First Search or BFS for a Graph
      Given a undirected graph represented by an adjacency list adj, where each adj[i] represents the list of vertices connected to vertex i. Perform a Breadth First Search (BFS) traversal starting from vertex 0, visiting vertices from left to right according to the adjacency list, and return a list conta
      15+ min read

    Tree

    • Introduction to Tree Data Structure
      Tree data structure is a hierarchical structure that is used to represent and organize data in the form of parent child relationship. The following are some real world situations which are naturally a tree. Folder structure in an operating system.Tag structure in an HTML (root tag the as html tag) o
      15+ min read

    • Prim’s Algorithm for Minimum Spanning Tree (MST)
      Prim’s algorithm is a Greedy algorithm like Kruskal's algorithm. This algorithm always starts with a single node and moves through several adjacent nodes, in order to explore all of the connected edges along the way. The algorithm starts with an empty spanning tree. The idea is to maintain two sets
      15+ min read

    • Kruskal’s Minimum Spanning Tree (MST) Algorithm
      A minimum spanning tree (MST) or minimum weight spanning tree for a weighted, connected, and undirected graph is a spanning tree (no cycles and connects all vertices) that has minimum weight. The weight of a spanning tree is the sum of all edges in the tree. In Kruskal's algorithm, we sort all edges
      9 min read

    • Huffman Coding | Greedy Algo-3
      Huffman coding is a lossless data compression algorithm. The idea is to assign variable-length codes to input characters, lengths of the assigned codes are based on the frequencies of corresponding characters. The variable-length codes assigned to input characters are Prefix Codes, means the codes (
      12 min read

    • Tree Traversal Techniques
      Tree Traversal techniques include various ways to visit all the nodes of the tree. Unlike linear data structures (Array, Linked List, Queues, Stacks, etc) which have only one logical way to traverse them, trees can be traversed in different ways. In this article, we will discuss all the tree travers
      7 min read

    • Travelling Salesman Problem using Dynamic Programming
      Given a 2d matrix cost[][] of size n where cost[i][j] denotes the cost of moving from city i to city j. The task is to complete a tour from city 0 (0-based index) to all other cities such that we visit each city exactly once and then at the end come back to city 0 at minimum cost. Note the differenc
      15 min read

    Special Graph

    • Check whether a given graph is Bipartite or not
      Given a graph with V vertices numbered from 0 to V-1 and a list of edges, determine whether the graph is bipartite or not. Note: A bipartite graph is a type of graph where the set of vertices can be divided into two disjoint sets, say U and V, such that every edge connects a vertex in U to a vertex
      9 min read

    Eulerian Graphs

    • Eulerian path and circuit for undirected graph
      Eulerian Path is a path in a graph that visits every edge exactly once. Eulerian Circuit is an Eulerian Path that starts and ends on the same vertex.       How to Find Whether a Given Graph is Eulerian or not? The problem is same as following question. "Is it possible to draw a given graph without l
      15+ min read

    • Fleury's Algorithm for printing Eulerian Path or Circuit
      Eulerian Path is a path in a graph that visits every edge exactly once. Eulerian Circuit is an Eulerian Path that starts and ends on the same vertex. We strongly recommend first reading the following post on Euler Path and Circuit. "https://cdn.geeksforgeeks.org/eulerian-path-and-circuit/" In the ab
      15+ min read

    • Chinese Postman or Route Inspection | Set 1 (introduction)
      Chinese Postman Problem is a variation of Eulerian circuit problem for undirected graphs. An Euler Circuit is a closed walk that covers every edge once starting and ending position is same. Chinese Postman problem is defined for connected and undirected graph. The problem is to find shortest path or
      3 min read

    Matching

    • Matching (Graph Theory)
      Matching (Graph Theory): In graph theory, matching is a fundamental concept used to describe a set of edges without common vertices. Matchings are used in various applications such as network design, job assignments, and scheduling. Understanding matchings is essential for solving problems involving
      4 min read

    • Approximation Algorithms
      Overview :An approximation algorithm is a way of dealing with NP-completeness for an optimization problem. This technique does not guarantee the best solution. The goal of the approximation algorithm is to come as close as possible to the optimal solution in polynomial time. Such algorithms are call
      3 min read

    Coloring

    • Introduction to Graph Coloring
      Graph coloring refers to the problem of coloring vertices of a graph in such a way that no two adjacent vertices have the same color. This is also called the vertex coloring problem. If coloring is done using at most m colors, it is called m-coloring. Chromatic Number:The minimum number of colors ne
      11 min read

    • Edge Coloring of a Graph
      In graph theory, edge coloring of a graph is an assignment of "colors" to the edges of the graph so that no two adjacent edges have the same color with an optimal number of colors. Two edges are said to be adjacent if they are connected to the same vertex. There is no known polynomial time algorithm
      9 min read

    Planar Graph

    • Planar Graphs and Graph Coloring
      Planar graphs and graph coloring are fundamental concepts in graph theory, a branch of mathematics that studies the properties and applications of graphs. A planar graph can be drawn on a plane without any edges crossing, while graph coloring involves assigning colors to vertices such that no two ad
      6 min read

    Directed Graphs

    • Degree Centrality (Centrality Measure)
      Degree In graph theory, the degree (or valency) of a vertex of a graph is the number of edges incident to the vertex, with loops counted twice.[1] The degree of a vertex [Tex] v[/Tex] is denoted [Tex] \deg(v)[/Tex] or [Tex] \deg v[/Tex]. The maximum degree of a graph G, denoted by [Tex]\Delta [/Tex]
      5 min read

    • Check if a graph is Strongly, Unilaterally or Weakly connected
      Given an unweighted directed graph G as a path matrix, the task is to find out if the graph is Strongly Connected or Unilaterally Connected or Weakly Connected. Strongly Connected: A graph is said to be strongly connected if every pair of vertices(u, v) in the graph contains a path between each othe
      12 min read

    • Strongly Connected Components
      Strongly Connected Components (SCCs) are a fundamental concept in graph theory and algorithms. In a directed graph, a Strongly Connected Component is a subset of vertices where every vertex in the subset is reachable from every other vertex in the same subset by traversing the directed edges. Findin
      15+ min read

    • Euler and Hamiltonian Paths
      Euler and Hamiltonian paths are fundamental concepts in graph theory, a branch of mathematics that studies the properties and applications of graphs. An Euler path visits every edge of a graph exactly once, while a Hamiltonian path visits every vertex exactly once. These paths have significant appli
      8 min read

    • Tarjan's Algorithm to find Strongly Connected Components
      A directed graph is strongly connected if there is a path between all pairs of vertices. A strongly connected component (SCC) of a directed graph is a maximal strongly connected subgraph. For example, there are 3 SCCs in the following graph: We have discussed Kosaraju's algorithm for strongly connec
      15+ min read

    • Handshaking Lemma and Interesting Tree Properties
      Introduction Trees are an important concept in graph theory, and understanding their properties is crucial in solving many graph-related problems. In this article, we will explore two important properties of trees - the Handshaking Lemma and interesting tree properties. What is Handshaking Lemma? Ha
      5 min read

    Group Theory

    • Group in Maths: Group Theory
      Group theory is one of the most important branches of abstract algebra which is concerned with the concept of the group. A group consists of a set equipped with a binary operation that satisfies four key properties: specifically, it includes property of closure, associativity, the existence of an id
      13 min read

    • Homomorphism & Isomorphism of Group
      We can say that  "o" is the binary operation on set G if: G is a non-empty set & G * G = { (a,b) : a , b∈ G } and o : G * G --> G. Here, aob denotes the image of ordered pair (a,b) under the function/operation o. Example - "+" is called a binary operation on G (any non-empty set ) if & on
      7 min read

    • Group Isomorphisms and Automorphisms
      In the study of algebraic structures, group isomorphisms and automorphisms play a fundamental role. By defining internal symmetries inside a group (automorphisms) and when two groups have the same structure (isomorphisms), these ideas aid in our understanding of the structure and symmetry of groups.
      7 min read

    • Mathematics | Rings, Integral domains and Fields
      Prerequisite - Mathematics | Algebraic Structure Ring - Let addition (+) and Multiplication (.) be two binary operations defined on a non empty set R. Then R is said to form a ring w.r.t addition (+) and multiplication (.) if the following conditions are satisfied: (R, +) is an abelian group ( i.e c
      7 min read

geeksforgeeks-footer-logo
Corporate & Communications Address:
A-143, 7th Floor, Sovereign Corporate Tower, Sector- 136, Noida, Uttar Pradesh (201305)
Registered Address:
K 061, Tower K, Gulshan Vivante Apartment, Sector 137, Noida, Gautam Buddh Nagar, Uttar Pradesh, 201305
GFG App on Play Store GFG App on App Store
Advertise with us
  • Company
  • About Us
  • Legal
  • Privacy Policy
  • In Media
  • Contact Us
  • Advertise with us
  • GFG Corporate Solution
  • Placement Training Program
  • Languages
  • Python
  • Java
  • C++
  • PHP
  • GoLang
  • SQL
  • R Language
  • Android Tutorial
  • Tutorials Archive
  • DSA
  • Data Structures
  • Algorithms
  • DSA for Beginners
  • Basic DSA Problems
  • DSA Roadmap
  • Top 100 DSA Interview Problems
  • DSA Roadmap by Sandeep Jain
  • All Cheat Sheets
  • Data Science & ML
  • Data Science With Python
  • Data Science For Beginner
  • Machine Learning
  • ML Maths
  • Data Visualisation
  • Pandas
  • NumPy
  • NLP
  • Deep Learning
  • Web Technologies
  • HTML
  • CSS
  • JavaScript
  • TypeScript
  • ReactJS
  • NextJS
  • Bootstrap
  • Web Design
  • Python Tutorial
  • Python Programming Examples
  • Python Projects
  • Python Tkinter
  • Python Web Scraping
  • OpenCV Tutorial
  • Python Interview Question
  • Django
  • Computer Science
  • Operating Systems
  • Computer Network
  • Database Management System
  • Software Engineering
  • Digital Logic Design
  • Engineering Maths
  • Software Development
  • Software Testing
  • DevOps
  • Git
  • Linux
  • AWS
  • Docker
  • Kubernetes
  • Azure
  • GCP
  • DevOps Roadmap
  • System Design
  • High Level Design
  • Low Level Design
  • UML Diagrams
  • Interview Guide
  • Design Patterns
  • OOAD
  • System Design Bootcamp
  • Interview Questions
  • Inteview Preparation
  • Competitive Programming
  • Top DS or Algo for CP
  • Company-Wise Recruitment Process
  • Company-Wise Preparation
  • Aptitude Preparation
  • Puzzles
  • School Subjects
  • Mathematics
  • Physics
  • Chemistry
  • Biology
  • Social Science
  • English Grammar
  • Commerce
  • World GK
  • GeeksforGeeks Videos
  • DSA
  • Python
  • Java
  • C++
  • Web Development
  • Data Science
  • CS Subjects
@GeeksforGeeks, Sanchhaya Education Private Limited, All rights reserved
We use cookies to ensure you have the best browsing experience on our website. By using our site, you acknowledge that you have read and understood our Cookie Policy & Privacy Policy
Lightbox
Improvement
Suggest Changes
Help us improve. Share your suggestions to enhance the article. Contribute your expertise and make a difference in the GeeksforGeeks portal.
geeksforgeeks-suggest-icon
Create Improvement
Enhance the article with your expertise. Contribute to the GeeksforGeeks community and help create better learning resources for all.
geeksforgeeks-improvement-icon
Suggest Changes
min 4 words, max Words Limit:1000

Thank You!

Your suggestions are valuable to us.

What kind of Experience do you want to share?

Interview Experiences
Admission Experiences
Career Journeys
Work Experiences
Campus Experiences
Competitive Exam Experiences