DAS_2024_1/mochalov_danila_lab_6
2024-11-08 20:55:07 +04:00
..
main.py mochalov_danila_lab_6 is ready 2024-11-08 20:55:07 +04:00
readme.md mochalov_danila_lab_6 is ready 2024-11-08 20:55:07 +04:00
screenshot.png mochalov_danila_lab_6 is ready 2024-11-08 20:55:07 +04:00

Лабораторная работа №6

ПИбд-42. Мочалов Данила.

Выполнение

Реализованы два алгоритма вычисления определителя квадратной матрицы: обычный (рекурсивный) и параллельный. Параллельный алгоритм использует multiprocessing.Pool для разделения вычислений миноров между несколькими процессами.

Результаты бенчмарков:

Тесты проведены для матриц размером 9x9, 10x10 и 11x11 с разным количеством процессов (1, 2, 4). Большие размеры не использовались из-за высокой вычислительной сложности рекурсивного алгоритма. Результаты представлены в таблице:

Размер матрицы Алгоритм Кол-во процессов Время (сек.)
9x9 Обычный - 0.24
9x9 Параллельный 1 0.39
9x9 Параллельный 2 0.25
9x9 Параллельный 4 0.20
10x10 Обычный - 2.37
10x10 Параллельный 1 2.47
10x10 Параллельный 2 1.42
10x10 Параллельный 4 0.85
11x11 Обычный - 26.02
11x11 Параллельный 1 25.90
11x11 Параллельный 2 14.15
11x11 Параллельный 4 7.21

Анализ

  • Рекурсивный алгоритм имеет экспоненциальную сложность, что делает его очень медленным для матриц больших размеров.
  • Параллельный алгоритм с одним процессом работает примерно с той же скоростью (или чуть медленнее), что и последовательный, из-за накладных расходов на создание и управление процессами.
  • С увеличением размера матрицы и количества процессов эффективность параллельного алгоритма возрастает. Наиболее заметное ускорение достигается при использовании 4 процессов для матрицы 11x11.
  • Для маленьких матриц параллелизм может быть неэффективен из-за накладных расходов.

Демонстрация

Доступна по ссылке