private void btn_start_Click(object sender, EventArgs e)
        {
            alg    = new Algorithm();
            alg.M  = Convert.ToInt32(txtb_stepOfGridX.Text);
            alg.M1 = Convert.ToInt32(txtb_stepOfGridY.Text);
            alg.numberOfCenters = cb_centers.Checked ? dgv.RowCount - 1 : Convert.ToInt32(txtb_numberOfCenters.Text);
            alg.centers         = new MyPoint[alg.numberOfCenters];
            rtb_centers.Text    = null;

            if (!cb_centers.Checked)
            {
                Random r = new Random();
                for (int i = 0; i < alg.numberOfCenters; i++)
                {
                    alg.centers[i].X  = (float)r.NextDouble();
                    alg.centers[i].Y  = (float)r.NextDouble();
                    rtb_centers.Text += String.Format("({0:0.00}; {1:0.00})\n", alg.centers[i].X, alg.centers[i].Y);
                }
            }
            else
            {
                for (int i = 0; i < dgv.RowCount - 1; i++)
                {
                    alg.centers[i].X = float.Parse(dgv.Rows[i].Cells[0].Value.ToString());
                    alg.centers[i].Y = float.Parse(dgv.Rows[i].Cells[1].Value.ToString());
                }
            }

            //rtb_centers.Text += String.Format("\nA1: {0}\nTask_A2: {1}", alg.A1(), alg.Task_A2());
            rtb_centers.Text += String.Format("\nA1: {0}", alg.A1());
            rtb_centers.Text += String.Format("\nA1i: {0}", alg.A1i());
            rtb_centers.Text += String.Format("\nA2i: {0}", alg.A2i());
            if (cb_draw.Checked)
            {
                dt = new DrawingTools();
                dt.DrawPartitioning(pictureBox, alg.numberOfCenters, alg.M, alg.M1, alg.lambda, alg.centers);
            }

            rtb_centers.Enabled = true;
        }