Interface MatchingAlgo


  • public interface MatchingAlgo
    Maximum/minimum matching algorithm.

    Given a graph \(G=(V,E)\), a matching is a sub set of edges \(M\) such that any vertex in \(V\) has at most one adjacent edge in \(M\). A maximum cardinality matching is a matching with the maximum number of edges in \(M\). A maximum/minimum weighted matching is a matching with the maximum/minimum edges weight sum with respect to some weight function. A perfect maximum/minimum weighted matching is a matching with the maximum/minimum edges weight sum out of all the matchings in which each vertex has an adjacent matched edge. Note that the weight of a perfect maximum matching is smaller or equal to the weight of a maximum weight matching.

    Use newInstance() to get a default implementation of this interface. A builder obtained via builder() may support different options to obtain different implementations.

    Author:
    Barak Ugav
    See Also:
    Wikipedia
    • Method Detail

      • computeMaximumMatching

        <V,​E> Matching<V,​E> computeMaximumMatching​(Graph<V,​E> g,
                                                               WeightFunction<E> w)
        Compute the maximum weighted matching of a weighted undirected graph.

        To compute the maximum cardinality (non weighted) matching, pass null instead of the weight function w.

        If g is IntGraph, the returned object is IMatching.

        Type Parameters:
        V - the vertices type
        E - the edges type
        Parameters:
        g - an undirected graph
        w - an edge weight function
        Returns:
        the computed matching
        Throws:
        IllegalArgumentException - if g is a directed graph
      • computeMinimumMatching

        <V,​E> Matching<V,​E> computeMinimumMatching​(Graph<V,​E> g,
                                                               WeightFunction<E> w)
        Compute the minimum weighted matching of a weighted undirected graph.

        If g is IntGraph, the returned object is IMatching.

        Type Parameters:
        V - the vertices type
        E - the edges type
        Parameters:
        g - an undirected graph
        w - an edge weight function
        Returns:
        the computed matching
        Throws:
        IllegalArgumentException - if g is a directed graph
      • computeMaximumPerfectMatching

        <V,​E> Matching<V,​E> computeMaximumPerfectMatching​(Graph<V,​E> g,
                                                                      WeightFunction<E> w)
        Compute the maximum perfect matching of a weighted undirected graph.

        A perfect matching in which each vertex has an adjacent matched edge is assumed to exist in the input graph, and if no such matching exist the behavior is undefined.

        To compute the maximum cardinality (non weighted) perfect matching, pass null instead of the weight function w.

        If g is IntGraph, the returned object is IMatching.

        Type Parameters:
        V - the vertices type
        E - the edges type
        Parameters:
        g - an undirected graph
        w - an edge weight function
        Returns:
        the computed perfect matching
        Throws:
        IllegalArgumentException - if g is a directed graph
      • computeMinimumPerfectMatching

        <V,​E> Matching<V,​E> computeMinimumPerfectMatching​(Graph<V,​E> g,
                                                                      WeightFunction<E> w)
        Compute the minimum perfect matching of a weighted undirected graph.

        A perfect matching in which each vertex has an adjacent matched edge is assumed to exist in the input graph, and if no such matching exist the behavior is undefined.

        To compute the maximum cardinality (non weighted) matching, pass null instead of the weight function w. Note that this is equivalent to computeMaximumPerfectMatching(Graph, WeightFunction).

        If g is IntGraph, the returned object is IMatching.

        Type Parameters:
        V - the vertices type
        E - the edges type
        Parameters:
        g - an undirected graph
        w - an edge weight function
        Returns:
        the computed perfect matching
        Throws:
        IllegalArgumentException - if g is a directed graph
      • newInstance

        static MatchingAlgo newInstance()
        Create a new matching algorithm object.

        This is the recommended way to instantiate a new MatchingAlgo object. The MatchingAlgo.Builder might support different options to obtain different implementations.

        Returns:
        a default implementation of MatchingAlgo