示例#1
0
        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];
            }
        }
示例#2
0
        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");
        }
示例#4
0
        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("");
        }