Ім'я файлу: TPZSAP_lab_1.docx Розширення: docx Розмір: 1087кб. Дата: 16.01.2024 скачати Пов'язані файли: курсовая мерчандайзинг.docx ВАРІАНТ 3 ВІДПОВІДІ.docx Реферат №1.docx Система орфографічних вправ.doc лаб 2 Карита.docx лабораторна 3.docx лабораторна 4.docx ЕП-2.2 Федосенко.docx Биполярный транзистор КТ3107 - StudentLib.com.doc Практична робота 4 (1).doc Практична робота 4 (2).doc Практична робота 4 (3).doc Практична робота 4 (4).doc full_166850588223930.docx ЗБТв221 Залюбівська обмін речовин.pptx ТЕМА 5.docx курсовая важно!.docx Новий Документ Microsoft Office Word (2).docx Медовець О.І_стаття_Фарм.doc СРСР.docx Ендокрина_система_Скемська_Сніжана.docx Порівняння_Борисп_та_бровар_Правки_29_01.docx Анілін (1).pptx Код програми: import numpy as np def matrix_one_input(first_matrix_values, first_matrix_connections): matrix = np.zeros((5, 5), dtype=int) for row_index in range(5): for column_index in range(5): first_index = first_matrix_values.index(column_index + 1) second_index = first_matrix_values.index(row_index + 1) index1 = min(first_index, second_index) index2 = max(first_index, second_index) slice_sum = sum(first_matrix_connections[index1:index2]) matrix[row_index, column_index] = slice_sum return matrix def matrix_two_create(second_matrix_chunks): matrix = np.zeros((5, 5), dtype=int) for row_index in range(5): for column_index in range(5): for chunk in second_matrix_chunks: if int(chunk[0]) == min(row_index + 1, column_index + 1) and int(chunk[1]) == max(row_index + 1, column_index + 1): matrix[row_index, column_index] = int(chunk[2]) return matrix def matrix_multiplication(first_matrix, second_matrix): result = 0 for i in range(5): for j in range(5): result += first_matrix[i][j] * second_matrix[i][j] return result def main(): first_matrix_values = list(map(int, input().split()))[:5] first_matrix_connections = list(map(int, input().split()))[:4] second_matrix_connections = list(map(int, input().split())) second_matrix_chunks = [second_matrix_connections[i:i + 3] for i in range(0, len(second_matrix_connections), 3)] start_efficiency_placing = 0 final_efficiency_placing = 0 first_matrix = np.zeros((5, 5), dtype=int) final_matrix1 = np.zeros(5, dtype=int) second_matrix = np.zeros((5, 5), dtype=int) final_matrix2 = np.zeros(5, dtype=int) initial_indexes_vector = {} for index, value in enumerate(first_matrix_values): initial_indexes_vector[value - 1] = index first_matrix = matrix_one_input(first_matrix_values, first_matrix_connections) final_matrix1 = np.sum(first_matrix, axis=1) second_matrix = matrix_two_create(second_matrix_chunks) final_matrix2 = np.sum(second_matrix, axis=1) start_efficiency_placing = matrix_multiplication(first_matrix, second_matrix) // 2 final_matrix_values = np.zeros(5, dtype=int) first_matrix_vector = {} second_matrix_vector = {} copy_of_first_final_matrix = np.copy(final_matrix1) copy_of_second_final_matrix = np.copy(final_matrix2) for _ in range(5): min_value1 = np.min(copy_of_first_final_matrix) min_index1 = np.argmin(copy_of_first_final_matrix) first_matrix_vector[min_index1] = min_value1 copy_of_first_final_matrix[min_index1] = 999 min_value2 = np.min(copy_of_second_final_matrix) min_index2 = np.argmin(copy_of_second_final_matrix) second_matrix_vector[min_index2] = min_value2 copy_of_second_final_matrix[min_index2] = 999 for _ in range(5): index2_key = max(second_matrix_vector, key=second_matrix_vector.get) second_matrix_vector[index2_key] = 0 index1_key = min(first_matrix_vector, key=first_matrix_vector.get) first_matrix_vector[index1_key] = 999 position = initial_indexes_vector[index1_key] final_matrix_values[position] = first_matrix_values[initial_indexes_vector[index2_key]] for val in final_matrix_values: print(f"{val} ", end="") first_final_matrix = matrix_one_input(list(final_matrix_values), first_matrix_connections) final_efficiency_placing = matrix_multiplication(first_final_matrix, second_matrix) // 2 efficiency = ((start_efficiency_placing - final_efficiency_placing) / start_efficiency_placing) * 100 print(f"Algorithm efficiency: {efficiency} %") def print_matrix(matrix): for row in matrix: for val in row: print(f"{val} ", end="") print() if __name__ == "__main__": main() Виведення результатів: Висновок: Отже, у наведеному прикладі метод зворотного розміщення елементів виявився ефективним на -20%. |