protected void CreateTArbSeqCFGEqsSet() { linEquationContext.TArbSeqCFGLinProgEqsSet = DAGLinEquationsSet.CreateEqsSetForDAG( linEquationContext.TCPELinProgMatrix, meapContext.TArbSeqCFG, tapeSegContext.TArbSeqCFGUnusedNodes); { SortedDictionary <long, RationalNumber> coeffs = new(); long sNodeId = meapContext.TArbSeqCFG.GetSourceNodeId(); long sNodeVar = linEquationContext.TArbSeqCFGLinProgEqsSet.NodeToVar[sNodeId]; coeffs[sNodeVar] = RationalNumber.Const_1; long equation = linEquationContext.TCPELinProgMatrix.AddEquation(coeffs, EquationKind.Equal, RationalNumber.Const_1); linEquationContext.TArbSeqCFGLinProgEqsSet.AddEquation(equation); } { SortedDictionary <long, RationalNumber> coeffs = new(); long tNodeId = meapContext.TArbSeqCFG.GetSinkNodeId(); long tNodeVar = linEquationContext.TArbSeqCFGLinProgEqsSet.NodeToVar[tNodeId]; coeffs[tNodeVar] = RationalNumber.Const_1; long equation = linEquationContext.TCPELinProgMatrix.AddEquation(coeffs, EquationKind.Equal, RationalNumber.Const_1); linEquationContext.TArbSeqCFGLinProgEqsSet.AddEquation(equation); } }
public override bool CreateTCPEPLinProgEqsSet() { tcpeLinProgEqsSet = new DAGLinEquationsSet(linEquationContext.TCPELinProgMatrix, meapContext.TArbSeqCFG); CreateTArbSeqCFGEqsSet(); CreateCommoditiesEquationsSet(); linEquationContext.KSetZetaLinProgEqsSets = new SortedDictionary <long, DAGLinEquationsSet>(); foreach (KeyValuePair <long, SortedSet <long> > p in tapeSegContext.KSetZetaSubset) { linEquationContext.KSetZetaLinProgEqsSets.Add(p.Key, CreateKZetaEquationsSet(p.Value)); } CreateCommIsEqualToCFGEqsSet(); Trace(); linEquationContext.TCPELinProgEqsSet = tcpeLinProgEqsSet; return(true); }