public State GetFullGraphFormFile(ImportStructureDto import) { var firstLineElCount = import.PeaksWeight.Count; var states = new List <State>(firstLineElCount); for (var i = 0; i < firstLineElCount; i++) { states.Add(new State(i, import.PeaksWeight.ElementAt(i))); } for (var i = 0; i < import.AdjacencyMatrix.Count; i++) { var currLine = import.AdjacencyMatrix.ElementAt(i).Split(',').Select(int.Parse).ToList(); var currPeak = states.ElementAt(i); currPeak.Edges.Capacity = firstLineElCount; for (var j = 0; j < currLine.Count(); j++) { if (j == i || currLine[j] == default) { continue; } var currEdge = new Edge(states[j]); currPeak.Edges.Add(currEdge); } } Graph = states; return(states.First()); }
public State GenerateGraph(int peakCount, int maxPath = 0, bool saveAsFile = true) { var c = new int[peakCount, peakCount]; var random = new Random(); var peaksWeight = new int[peakCount]; for (int i = 0; i < peakCount; i++) { for (int j = 0; j < peakCount; j++) { if (i == j) { continue; } var isEdged = random.Next(1, 13) % 13 == 1; if (!isEdged) { continue; } c[i, j] = random.Next(1, 100); } } if (maxPath == 0) { maxPath = (peakCount * 2) / 3; } var adjencyMatrixAsStringArray = new List <string>(peakCount); for (var i = 0; i < peakCount; i++) { var row = new int[peakCount]; for (int j = 0; j < peakCount; j++) { row[j] = c[i, j]; } adjencyMatrixAsStringArray.Add(string.Join(',', row)); } var import = new ImportStructureDto() { AdjacencyMatrix = adjencyMatrixAsStringArray, PathLength = maxPath, PeaksWeight = peaksWeight }; if (saveAsFile) { var json = JsonConvert.SerializeObject(import, Formatting.Indented); File.WriteAllText($@"../../../../Import/Jsons/{Guid.NewGuid()}.json", json); } return(GetFullGraphFormFile(import)); }