Ім'я файлу: 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%.
скачати

© Усі права захищені
написати до нас