private void OptimalResultSequencesCalculation(AlgoritmModel algModel) { algModel.SequenceDaDbDc = CalculateDSequence(algModel.MatrixDic); algModel.OptimalResultElementsFromSequence = GetOptimalValuesFromDSequence(algModel.SequenceDaDbDc); foreach (var optimalElement in algModel.OptimalResultElementsFromSequence) { algModel.OptimalSequence.Add(optimalElement.Key); var newAlgModel = new AlgoritmModel() { OptimalSequence = new List <string>(), MatrixDic = new Dictionary <string, List <int> >(), OptimalSequencesResult = new List <List <string> >() }; if (algModel.InnerAlgoritmModel == null) { algModel.InnerAlgoritmModel = new List <AlgoritmModel>(); } newAlgModel.OptimalSequencesResult.Add(algModel.OptimalSequence); newAlgModel.MatrixDic = GetTempMatrixDic(algModel.MatrixDic); newAlgModel.MatrixDic.Remove(optimalElement.Key); newAlgModel.OptimalSequence = GetTempOptimalSequence(algModel.OptimalSequence); if (newAlgModel.MatrixDic.Count == 0) { _optimalSequencesResult.Add(newAlgModel.OptimalSequence); return; } algModel.InnerAlgoritmModel.Add(newAlgModel); OptimalResultSequencesCalculation(algModel.InnerAlgoritmModel.Last()); algModel.OptimalSequence.Remove(algModel.OptimalSequence.Last()); } }
public Tuple <AlgoritmModel, List <List <string> > > GetOptimalResultSequences() { var optimalSequence = new List <string>(); var matrixDic = GetTempMatrixDic(_mainMatrixDic); _rootModel = new AlgoritmModel() { OptimalSequence = optimalSequence, MatrixDic = matrixDic }; OptimalResultSequencesCalculation(_rootModel); return(Tuple.Create(_rootModel, _optimalSequencesResult)); }