示例#1
0
        public static (double[, ], string[, ]) FindShortestPathMatrix(AdjacencyList list)
        {
            _list = list;

            D = _list.GetAdjacencyMatrix();

            F = new string[_list.Length, _list.Length];

            for (int i = 0; i < _list.Length; i++)
            {
                for (int j = 0; j < _list.Length; j++)
                {
                    F[i, j] = _list[j];
                }
            }

            for (int k = 0; k < _list.Length; ++k)
            {
                for (int i = 0; i < _list.Length; ++i)
                {
                    for (int j = 0; j < _list.Length; ++j)
                    {
                        if (D[i, k] + D[k, j] < D[i, j])
                        {
                            D[i, j] = D[i, k] + D[k, j];

                            F[i, j] = F[i, k] + "-> " + F[k, j];
                        }
                    }
                }
            }

            return(D, F);
        }
示例#2
0
        public static AdjacencyList CreateAdjacencyList(string path)
        {
            string[] allStrings = File.ReadAllLines(path);

            AdjacencyList adjacencyList = new AdjacencyList();

            for (int i = 0; i < allStrings.Length; i++)
            {
                string from = allStrings[i].Substring(0, allStrings[i].IndexOf(' '));

                allStrings[i] = allStrings[i].Substring(allStrings[i].IndexOf(' ') + 1);

                string to = allStrings[i].Substring(0, allStrings[i].IndexOf(' '));

                allStrings[i] = allStrings[i].Substring(allStrings[i].IndexOf(' ') + 1);

                int capacity = int.Parse(allStrings[i]);

                adjacencyList.Insert(from, to, new DataEdge()
                {
                    Capacity = capacity, Flow = 0
                });
            }

            return(adjacencyList);
        }
示例#3
0
        public static AdjacencyList CreateAdjacencyList(string path)
        {
            string[] allStrings = File.ReadAllLines(path);

            AdjacencyList adjacencyList = new AdjacencyList();

            for (int i = 0; i < allStrings.Length; i++)
            {
                string fromCity = allStrings[i].Substring(0, allStrings[i].IndexOf(';'));

                allStrings[i] = allStrings[i].Substring(allStrings[i].IndexOf(';') + 1);

                string toCity = allStrings[i].Substring(0, allStrings[i].IndexOf(';'));

                allStrings[i] = allStrings[i].Substring(allStrings[i].IndexOf(';') + 1);

                double weightFromCity;

                try
                {
                    weightFromCity = double.Parse(allStrings[i].Substring(0, allStrings[i].IndexOf(';')));
                }
                catch (Exception e)
                {
                    weightFromCity = Double.PositiveInfinity;
                }

                allStrings[i] = allStrings[i].Substring(allStrings[i].IndexOf(';') + 1);

                double weightToCity;

                try
                {
                    weightToCity = double.Parse(allStrings[i]);
                }
                catch (Exception e)
                {
                    weightToCity = Double.PositiveInfinity;
                }

                adjacencyList.Insert(fromCity, toCity, weightFromCity, weightToCity);
            }

            return(adjacencyList);
        }
示例#4
0
文件: Program.cs 项目: dnbss/Floyd
        static void Main(string[] args)
        {
            AdjacencyList list = FileHandler.CreateAdjacencyList(@"..\..\..\Cities.txt");

            Console.WriteLine("Матрица смежности:");

            for (int i = 0; i < list.GetAdjacencyMatrix().GetLength(0); i++)
            {
                for (int j = 0; j < list.GetAdjacencyMatrix().GetLength(1); j++)
                {
                    Console.Write($"{list.GetAdjacencyMatrix()[i,j]} ");
                }
                Console.WriteLine();
            }
            Console.WriteLine();

            AlgorithmFloyd.FindShortestPathMatrix(list);

            Console.WriteLine("Матрица кратчайших путей:");
            AlgorithmFloyd.PrintShortestPathMatrix();
        }