private SingleMeasurementResult(Automaton <BDD> originalAutomaton, PDLPred generatedFormula, Automaton <BDD> generatedAutomaton, HashSet <char> alphabet) { this.generatedFormula = generatedFormula; CharSetSolver solver = new CharSetSolver(); DFAEditScript editScript = DFAEditDistance.GetDFAOptimalEdit(originalAutomaton, generatedAutomaton, alphabet, solver, 100, new System.Text.StringBuilder()); if (editScript != null) { this.editDistance = editScript.script.Count; } else { this.editDistance = int.MaxValue; } this.densityDiff = DFADensity.GetDFADifferenceRatio(originalAutomaton, generatedAutomaton, alphabet, solver); }
public void TestMethod1() { var solver = new CharSetSolver(BitWidth.BV64); List <char> alph = new List <char> { 'a', 'b' }; HashSet <char> al = new HashSet <char>(alph); PDLPred phi1 = new PDLContains("b"); var dfa1 = phi1.GetDFA(al, solver); PDLPred phi2 = new PDLModSetEq(new PDLPredSet("x", new PDLAtPos('b', new PDLPosVar("x"))), 2, 1); var dfa2 = phi2.GetDFA(al, solver); StringBuilder sb = new StringBuilder(); DFAEditDistance.GetDFAOptimalEdit(dfa1, dfa2, al, solver, 3000, sb); Console.WriteLine(sb); }