Beispiel #1
0
        private void btnChayTuDong_Click(object sender, EventArgs e)
        {
            if (Check())
            {
                // kiểm tra time delay
                int timeDelay = 0;
                try
                {
                    timeDelay = Int32.Parse(txtDelay.Text);
                    if (timeDelay < 0)
                    {
                        MessageBox.Show("Time delay phải là số nguyên dương", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }
                }
                catch
                {
                    MessageBox.Show("Time delay phải là số nguyên dương", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }

                btnTamDung.Enabled            = true;
                btnKetThuc.Enabled            = true;
                btnBatDauChayTungBuoc.Enabled = false;

                listDoThi      = Kruskal.Run(Data.Data.graph_Kruskal);
                index          = 0;
                timer.Enabled  = true;
                timer.Interval = timeDelay;
                timer.Start();
                return;
            }
        }
Beispiel #2
0
        public void TestCase4ShouldPass()
        {
            //var textreader = new StreamReader(typeof(PrimTests).Assembly.GetManifestResourceStream("Tests.largeEWG.txt"));
            var result = Kruskal.Run(ReadLines("c:\\work\\largeEWG.txt"));//GetLines(textreader));

            Assert.AreEqual(new Decimal(647.66306955), result);
        }
Beispiel #3
0
        private void btnBatDauChayTungBuoc_Click(object sender, EventArgs e)
        {
            if (btnBatDauChayTungBuoc.Text == "Bắt đầu chạy từng bước")
            {
                if (Check())
                {
                    listDoThi = Kruskal.Run(Data.Data.graph_Kruskal);
                    index     = 0;
                    HienThiDoThi();

                    btnChayTuDong.Enabled      = false;
                    btnPrev.Enabled            = true;
                    btnNext.Enabled            = true;
                    btnStart.Enabled           = true;
                    btnEnd.Enabled             = true;
                    btnBatDauChayTungBuoc.Text = "Kết thúc chạy từng bước";
                }
                return;
            }

            if (btnBatDauChayTungBuoc.Text == "Kết thúc chạy từng bước")
            {
                btnBatDauChayTungBuoc.Text = "Bắt đầu chạy từng bước";
                btnChayTuDong.Enabled      = true;
                btnPrev.Enabled            = false;
                btnNext.Enabled            = false;
                btnStart.Enabled           = false;
                btnEnd.Enabled             = false;
                return;
            }
        }
Beispiel #4
0
        static void Main(string[] args)
        {
            var graph = new Graph <int>();
            var nodes = new List <Node <int> >();
            var edges = new List <Edge <int> >();

            while (true)
            {
                Console.Write("Додати нову вершину?\n-> ");
                if (Console.ReadLine() == "y")
                {
                    nodes.Add(new Node <int>()
                    {
                        Value = 1 + nodes.Count
                    });
                    Console.WriteLine($"Додали вершину {nodes.Last().ToString()}");
                }
                else
                {
                    break;
                }
            }
            while (true)
            {
                Console.Write("Додати нове ребро?\n-> ");
                if (Console.ReadLine() == "y")
                {
                    Console.Write("Номер першої вершини\n-> ");
                    int node1Num = Int32.Parse(Console.ReadLine());
                    Console.Write("Номер другої вершини\n-> ");
                    int node2Num = Int32.Parse(Console.ReadLine());
                    Console.Write("Вага ребра\n-> ");
                    int weight = Int32.Parse(Console.ReadLine());
                    edges.Add(new Edge <int>()
                    {
                        Node1  = nodes[node1Num - 1],
                        Node2  = nodes[node2Num - 1],
                        Weight = weight
                    });
                }
                else
                {
                    break;
                }
            }
            graph.Nodes = nodes;
            graph.Edges = edges;
            Console.WriteLine("Алгоритм Краскала");
            var res = Kruskal.Run(graph);

            ShowCarcass(res);
            Console.WriteLine("Алгоритм Прима");
            var resprim = Prim.Run(graph);

            ShowCarcass(resprim);
            Console.ReadLine();
        }
        private static int RunKruskal(Vertex[] vertices)
        {
            foreach (Vertex v in vertices)
            {
                v.Reset();
            }

            return(Kruskal.Run(vertices).Sum(e => e.Weight));
        }
Beispiel #6
0
        async void _Kruskal()
        {
            Logs.Add(new LogViewModel("KruskalClicked"));
            await exactStop();

            var results = Kruskal.Run(_graph);

            changeColor(results, Colors.Red);
        }
Beispiel #7
0
        public void TestCase2ShouldPass()
        {
            var results = new List <decimal>();

            for (int i = 0; i < 100; i++)
            {
                var result = Kruskal.Run(File.ReadLines("c:\\temp\\homework2_1_2_test2.txt"));
                results.Add(result);
            }
            var minresult = results.Min();

            Assert.AreEqual(new Decimal(10.46351), minresult);
        }
Beispiel #8
0
        public void TestCase3ShouldPass()
        {
            var results = new List <decimal>();

            for (int i = 0; i < 100; i++)
            {
                var result = Kruskal.Run(File.ReadLines("c:\\temp\\tinyEWG.txt"));
                Console.WriteLine("итого: {0}", result);
                results.Add(result);
            }
            var minresult = results.Min();

            Assert.AreEqual(new decimal(1.81), minresult);
        }
Beispiel #9
0
            public void Solve()
            {
                var N       = NextInt();
                var kruskal = new Kruskal(N);

                var xlist = new List <ti2>();
                var ylist = new List <ti2>();


                for (int i = 0; i < N; i++)
                {
                    xlist.Add(NextInt(), i);
                    ylist.Add(NextInt(), i);
                }

                xlist = xlist.OrderBy(x => x.Item1).ToList();
                ylist = ylist.OrderBy(x => x.Item1).ToList();

                var list = new List <ti3>();

                for (int i = 0; i < N - 1; i++)
                {
                    {
                        var s = xlist[i];
                        var t = xlist[i + 1];
                        kruskal.Add(s.Item2, t.Item2, t.Item1 - s.Item1);
                    }
                    {
                        var s = ylist[i];
                        var t = ylist[i + 1];
                        kruskal.Add(s.Item2, t.Item2, t.Item1 - s.Item1);
                    }
                }

                kruskal.Run().WL();
                return;
            }
Beispiel #10
0
        public void TestCase1ShouldPass()
        {
            var result = Kruskal.Run(File.ReadLines("c:\\temp\\homework2_1_2_test.txt"));

            Assert.AreEqual(-16, result);
        }