Class StronglyStableMarriage<T>

  • Type Parameters:
    T - the type of the record.
    All Implemented Interfaces:
    Assigner<T>, BipartiteMatcher<T>

    public final class StronglyStableMarriage<T>
    extends AbstractStableMarriage<T>
    Implements a strongly stable matching based on the stable marriage with indifference.

    "A matching is strongly stable if there is no couple x, y such that x strictly prefers y to his/her partner, and y either strictly prefers x to his/her partner or is indifferent between them."[1]

    The preference list may be incomplete if some pairs absolutely do not want to matched. However, in this case, there may be fewer matches than elements.

    [1] Irving, Robert W. (1994-02-15). "Stable marriage and indifference". Discrete Applied Mathematics. 48 (3): 261–272. doi:10.1016/0166-218X(92)00179-P.

    • Constructor Detail

      • StronglyStableMarriage

        public StronglyStableMarriage()
    • Method Detail

      • createMatcher

        protected AbstractStableMarriage.Matcher createMatcher​(java.util.List<? extends java.util.Queue<java.util.List<java.lang.Integer>>> mensFavoriteWomen,
                                                               java.util.List<? extends java.util.Queue<java.util.List<java.lang.Integer>>> womensFavoriteMen)
        Specified by:
        createMatcher in class AbstractStableMarriage<T>
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • equals

        public boolean equals​(java.lang.Object o)
        Overrides:
        equals in class java.lang.Object
      • canEqual

        protected boolean canEqual​(java.lang.Object other)
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object