public void ContractGraph_Graph2_test1() { var g = GetGraph2(); var blossom = new List <Edge <int> > { new Edge <int>(1, 2), new Edge <int>(2, 4), new Edge <int>(1, 4), }; var matching = new List <Edge <int> > { new Edge <int>(4, 1), new Edge <int>(0, 3), }; var contractedGraph = EdmondsAlgorithm.ContractGraph(g, blossom, out int superVertex, matching); Assert.IsFalse(IsSuperVertexMatched(superVertex, matching)); Assert.IsTrue(IsContractedGraphCorrect(contractedGraph, blossom, superVertex)); }
public void ContractGraph_Graph1() { var g = GetGraph1(); var blossom = new List <Edge <int> > { new Edge <int>(0, 4), new Edge <int>(0, 1), new Edge <int>(1, 4), }; var matching = new List <Edge <int> > { new Edge <int>(4, 1), new Edge <int>(2, 3), }; var contractedGraph = EdmondsAlgorithm.ContractGraph(g, blossom, out int superVertex, matching); Assert.IsFalse(IsSuperVertexMatched(superVertex, matching)); Assert.AreEqual(contractedGraph.EdgeCount, g.EdgeCount - blossom.Count); }