/// <summary> /// Returns a list of Max BiPartite Match Edges /// </summary> /// <param name="graph"></param> /// <returns></returns> public List <MatchEdge <T> > GetMaxBiPartiteMatching(Graph <T> graph) { //check if the graph is BiPartite by coloring 2 colors var mColorer = new MColorer <T, int>(); var colorResult = mColorer.Color(graph, new int[] { 1, 2 }); if (colorResult.CanColor == false) { throw new Exception("Graph is not BiPartite."); } return(getMaxBiPartiteMatching(graph, colorResult.Partitions)); }
/// <summary> /// Returns a list of Max BiPartite Match Edges. /// </summary> public List <MatchEdge <T> > GetMaxBiPartiteMatching(IGraph <T> graph) { if (this.@operator == null) { throw new ArgumentException("Provide an operator implementation for generic type T during initialization."); } //check if the graph is BiPartite by coloring 2 colors var mColorer = new MColorer <T, int>(); var colorResult = mColorer.Color(graph, new int[] { 1, 2 }); if (colorResult.CanColor == false) { throw new Exception("Graph is not BiPartite."); } return(getMaxBiPartiteMatching(graph, colorResult.Partitions)); }