public void TestSimpleGraphLabelling() { string graphString = "0:1,1:2"; SimpleGraph graph = new SimpleGraph(graphString); SimpleGraphSignature signature = new SimpleGraphSignature(graph); int[] labels = signature.GetCanonicalLabels(); Assert.IsTrue(IsIdentity(labels)); }
//[TestMethod()] public void IsomorphicPair() { SimpleGraph a = new SimpleGraph("5:7,6:7,0:6,1:6,2:5,3:5,0:4,1:4,2:4,3:4,0:3,2:3,0:1,1:2"); SimpleGraph b = new SimpleGraph("5:7,6:7,0:6,2:6,1:5,3:5,0:4,1:4,2:4,3:4,0:3,1:3,0:2,1:2"); SimpleGraphSignature sigA = new SimpleGraphSignature(a); SimpleGraphSignature sigB = new SimpleGraphSignature(b); Assert.AreEqual(sigA.ToCanonicalString(), sigB.ToCanonicalString()); }
public void TmpOrbitsTest() { SimpleGraph a = new SimpleGraph("5:7,6:7,0:6,1:6,2:5,3:5,0:4,1:4,2:4,3:4,0:3,2:3,0:1,1:2"); // SimpleGraph b = new SimpleGraph("5:7,6:7,0:6,2:6,1:5,3:5,0:4,1:4,2:4,3:4,0:3,1:3,0:2,1:2"); SimpleGraphSignature sigA = new SimpleGraphSignature(a); foreach (var cls in sigA.GetSymmetryClasses()) { Console.Out.WriteLine(cls); } }
public void BowtieaneTest() { SimpleGraph bowtie = SimpleGraphFactory.MakeBowtieane(); string tmp = new SimpleGraphSignature(bowtie).SignatureStringForVertex(6); Console.Out.WriteLine(tmp); Console.Out.WriteLine("----------------------------------------"); string tmp2 = new SimpleGraphSignature(bowtie).SignatureStringForVertex(2); Console.Out.WriteLine(tmp2); }
public void TestChain() { string chain = "0:1,1:2,2:3,3:4"; SimpleGraphSignature signature = SignatureFromString(chain); string uncanonizedString = signature.ToCanonicalString(); // TODO : FIXME - maximal / minimal problem // string maxSignature = signature.GetGraphSignature(); string maxSignature = signature.GetMaximalSignature(); Assert.AreEqual(uncanonizedString, maxSignature); }
// XXX DOES NOT YET WORK - reconstructed graph may be isomorphic, // but not automorphic public void Reconstruct(SimpleGraph graph) { SimpleGraphSignature signature = new SimpleGraphSignature(graph); foreach (var symmetryClass in signature.GetSymmetryClasses()) { string signatureString = symmetryClass.GetSignatureString(); ColoredTree tree = AbstractVertexSignature.Parse(signatureString); SimpleGraphBuilder builder = new SimpleGraphBuilder(); SimpleGraph reconstruction = builder.FromTree(tree); Assert.AreEqual(reconstruction.ToString(), graph.ToString()); } }
public void SignatureHeightTest() { SimpleGraph g = SimpleGraphFactory.MakeCuneane(); SimpleGraphSignature signature = new SimpleGraphSignature(g); for (int h = 1; h < g.GetVertexCount(); h++) { for (int i = 0; i < g.GetVertexCount(); i++) { string sig = signature.SignatureStringForVertex(i, h); Console.Out.WriteLine(h + "\t" + i + "\t" + sig); } } }
public void TestColoredTreeRoundtrip() { string signatureString = "[.]([.]([.,0])[.]([.,0]))"; ColoredTree tree = SimpleVertexSignature.Parse(signatureString); Assert.AreEqual(signatureString, tree.ToString()); SimpleGraphBuilder builder = new SimpleGraphBuilder(); SimpleGraph graph = builder.FromTree(tree); SimpleGraphSignature graphSignature = new SimpleGraphSignature(graph); string canonicalString = graphSignature.ToCanonicalString(); Assert.AreEqual(signatureString, canonicalString); }
public int[] GetLabels(SimpleGraph graph) { SimpleGraphSignature signature = new SimpleGraphSignature(graph); return(signature.GetCanonicalLabels()); }