public static void Solve() { for (; Config_matrix.Piececount < Config_matrix.L - 1; Config_matrix.Piececount++) { do { Config_matrix.LocalDegreeCount(); InternalLinksCount(); ExternalLinksCount(); ConnectivityCount(); DeltaCount(); } while (SwapResult.Flag); int[,] savearr = new int[Config_matrix.N - Config_matrix.M, Config_matrix.N - Config_matrix.M]; for (int i = Config_matrix.M; i < Config_matrix.N; i++) { for (int j = Config_matrix.M; j < Config_matrix.N; j++) { savearr[i - Config_matrix.M, j - Config_matrix.M] = Config_matrix.AdjMatrixC[i, j]; } } Config_matrix.N -= Config_matrix.M; Config_matrix.AdjMatrixC = new int[Config_matrix.N, Config_matrix.N]; for (int i = 0; i < Config_matrix.N; i++) { for (int j = 0; j < Config_matrix.N; j++) { Config_matrix.AdjMatrixC[i, j] = savearr[i, j]; } } } }
private void local_degree_show() { Config_matrix.LocalDegreeCount(); for (int i = 0; i < Config_matrix.N; i++) { adj_matrix_data_grid[adj_matrix_data_grid.ColumnCount - 2, i].Value = Config_matrix.LocalDegree[i]; } }
private void btn_apply_changes_Click(object sender, EventArgs e) { Config_matrix.N = int.Parse(text_block_num_of_elem.Text); Config_matrix.L = int.Parse(text_block_num_of_blocks.Text); Config_matrix.M = int.Parse(text_block_num_of_elem_in_blocks.Text); Config_matrix.MatrixCreate(); Config_matrix.ResultMatrixCreate(); create_data_grid(); for (int i = 0; i < adj_matrix_data_grid.ColumnCount; i++) { for (int j = 0; j < adj_matrix_data_grid.RowCount; j++) { adj_matrix_data_grid[i, j].Value = 0; } } adj_matrix_data_grid.AllowUserToAddRows = false; btn_start_algorithm.Enabled = true; btn_simmetry.Enabled = true; create_result_table(); }
private void btn_start_algorithm_Click(object sender, EventArgs e) { adj_matrix_data_grid.Enabled = false; adj_matrix_data_grid.ForeColor = Color.Gray; if (Config_matrix.Piececount >= Config_matrix.L - 1) { for (int i = 0; i < Config_matrix.M; i++) { if (i != Config_matrix.M - 1) { result_table[0, Config_matrix.Piececount].Value += Config_matrix.VertexShape[i + Config_matrix.M * Config_matrix.Piececount] + "; "; } else { result_table[0, Config_matrix.Piececount].Value += Config_matrix.VertexShape[i + Config_matrix.M * Config_matrix.Piececount]; } } Config_matrix.InternalLinksInResultMatrixCount(); Config_matrix.ExternalLinksInResultMatrixCount(); btn_start_algorithm.Enabled = false; btn_open_result.Enabled = true; return; } Algorithm.InternalLinksCount(); Algorithm.ExternalLinksCount(); Algorithm.ConnectivityCount(); Algorithm.DeltaCount(); Algorithm.SwapVertex(); for (int i = 0; i < Config_matrix.N; i++) { for (int j = 0; j < Config_matrix.N; j++) { adj_matrix_data_grid[j, i].Value = Config_matrix.AdjMatrixC[i, j]; //Config_matrix.ResultAdjMatrixC[i + Config_matrix.M * Config_matrix.Piececount, // j + Config_matrix.M * Config_matrix.Piececount] = Config_matrix.AdjMatrixC[i, j]; } } string save = adj_matrix_data_grid.Columns[SwapResult.I].Name; adj_matrix_data_grid.Columns[SwapResult.I].Name = adj_matrix_data_grid.Columns[SwapResult.J + Config_matrix.M].Name; adj_matrix_data_grid.Columns[SwapResult.J + Config_matrix.M].Name = save; adj_matrix_data_grid.Rows[SwapResult.I].HeaderCell.Value = adj_matrix_data_grid.Rows[SwapResult.J + Config_matrix.M].HeaderCell.Value; adj_matrix_data_grid.Rows[SwapResult.J + Config_matrix.M].HeaderCell.Value = save; local_degree_show(); connectivity_show(); if (!SwapResult.Flag) { int[,] savearr = new int[Config_matrix.N - Config_matrix.M, Config_matrix.N - Config_matrix.M]; for (int i = Config_matrix.M; i < Config_matrix.N; i++) { for (int j = Config_matrix.M; j < Config_matrix.N; j++) { savearr[i - Config_matrix.M, j - Config_matrix.M] = Config_matrix.AdjMatrixC[i, j]; } } for (int i = 0; i < Config_matrix.N; i++) { for (int j = 0; j < Config_matrix.N; j++) { Config_matrix.ResultAdjMatrixC[i + Config_matrix.M * Config_matrix.Piececount, j + Config_matrix.M * Config_matrix.Piececount] = Config_matrix.AdjMatrixC[i, j]; } } Config_matrix.N -= Config_matrix.M; Config_matrix.AdjMatrixC = new int[Config_matrix.N, Config_matrix.N]; for (int i = 0; i < Config_matrix.N; i++) { for (int j = 0; j < Config_matrix.N; j++) { Config_matrix.AdjMatrixC[i, j] = savearr[i, j]; } } for (int i = 0; i < Config_matrix.M; i++) { if (i != Config_matrix.M - 1) { result_table[0, Config_matrix.Piececount].Value += Config_matrix.VertexShape[i + Config_matrix.M * Config_matrix.Piececount] + "; "; } else { result_table[0, Config_matrix.Piececount].Value += Config_matrix.VertexShape[i + Config_matrix.M * Config_matrix.Piececount]; } } Config_matrix.Piececount++; create_data_grid(); for (int i = 0; i < Config_matrix.N; i++) { for (int j = 0; j < Config_matrix.N; j++) { adj_matrix_data_grid[j, i].Value = Config_matrix.AdjMatrixC[i, j]; } } local_degree_show(); connectivity_show(); } }