public void Load(MatrixAdjacency matrix, T[] values) { _list = new INodeMinMax <T> [matrix.CountAll + 1]; for (int i = 0; i < _list.Length; i++) { _list[i] = new NodeMinMax <T>(i); } for (int i = 0; i < matrix.CountKey; i++) { if (matrix.ContainsKey(i) == true) { for (int j = 0; j < matrix[i].Length; j++) { _list[matrix[i][j]].Parent = _list[i]; _list[i].AddChild(_list[matrix[i][j]]); } } } Head = _list[0]; for (int i = _list.Length - values.Length, j = 0; i < _list.Length; i++, j++) { _list[i].Value = values[j]; } }
public MatrixAdjacencyToConsole(MatrixAdjacency matrixAdjacency) { Console.Write("\t"); Console.Write("|"); Console.Write("\t"); for (int vertice = 0; vertice < matrixAdjacency.VerticeCount(); vertice++) { Console.Write(String.Format("V{0}", vertice)); Console.Write("\t"); } Console.WriteLine("|"); for (int vertice = 0; vertice < matrixAdjacency.VerticeCount(); vertice++) { Console.Write(String.Format("V{0}", vertice)); Console.Write("\t"); Console.Write("|"); Console.Write("\t"); for (int verticel = 0; verticel < matrixAdjacency.VerticeCount(); verticel++) { Console.Write(matrixAdjacency.Matrix[vertice, verticel]); Console.Write("\t"); } Console.WriteLine("|"); } }
public void TestGraphRandom() { LinkedList <int> routerExpected = new LinkedList <int>(); routerExpected.AddLast(0); routerExpected.AddLast(1); routerExpected.AddLast(3); routerExpected.AddLast(4); MatrixAdjacency matrixIncidence = new MatrixAdjacency(5); int verticeStart = 0; int verticeEnd = 4; matrixIncidence.AddEdge(0, 2); matrixIncidence.AddEdge(0, 1); matrixIncidence.AddEdge(1, 3); matrixIncidence.AddEdge(3, 4); LinkedList <int> routerAtual = new Simplex(matrixIncidence).run(verticeStart, verticeEnd); string routerExpectedString = ConvertCollection <int> .ToString(routerExpected); string routerAtualString = ConvertCollection <int> .ToString(routerAtual); Assert.AreEqual(routerExpectedString, routerAtualString, null, "The routers no are equals"); }
private static void Main(string[] args) { ILoadable loader = new LoaderDefault(); IParserMatrixAdjacency parser = new ParserMatrixAdjacency(":", " "); var parserValues = new ParserValues(" "); IMatrixAdjacency matrixAdjacency = parser.Parse(loader.Load(args[0])); int[] values = parserValues.Parse(loader.Load(args[1])); MatrixAdjacency mat = (MatrixAdjacency)matrixAdjacency; Tree <int> tree = new Tree <int>(); tree.Load(mat, values); INodeMinMax <int> .Min = int.MinValue; INodeMinMax <int> .Max = int.MaxValue; MinMaxPriority priority = new TakeTurns(PriorityType.MAX); DFS <int> dfs = new DFS <int>(tree); dfs.Start(priority); Console.WriteLine(" "); MinMaxPruning <int> dfs2 = new MinMaxPruning <int>(tree); dfs2.Start(priority); Console.WriteLine(" "); DFSDebug <int> dfsDebug = new DFSDebug <int>(tree); dfsDebug.Start(priority); }
public static string Simplex() { int verticeStart = 0; int verticeEnd = 4; MatrixAdjacency matrixIncidence = new MatrixAdjacency(5); matrixIncidence.AddEdge(0, 2); matrixIncidence.AddEdge(0, 1); matrixIncidence.AddEdge(1, 3); matrixIncidence.AddEdge(3, 4); //matrixIncidence.AddEdge(0, 1); //matrixIncidence.AddEdge(1, 4); //matrixIncidence.AddEdge(0, 2); //matrixIncidence.AddEdge(2, 3); //matrixIncidence.AddEdge(3, 4); //matrixIncidence.ToConsole(); LinkedList <int> router = new Simplex(matrixIncidence).run(verticeStart, verticeEnd); Console.WriteLine("=============================================="); Console.WriteLine(router.ToString()); Console.WriteLine("=============================================="); if (router != null) { Console.WriteLine("::EURECA:::"); while (router.Count > 0) { Console.Write(string.Format(" -> vertice[{0}]", router.First())); router.RemoveFirst(); } } else { Console.WriteLine("DON'T CRY"); } Console.ReadKey(); return(""); }