36 lines
3.3 KiB
Markdown
36 lines
3.3 KiB
Markdown
# Лабораторная работа №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.
|
||
- Для маленьких матриц параллелизм может быть неэффективен из-за накладных расходов.
|
||
|
||
|
||
#### Демонстрация
|
||
Доступна по [ссылке](https://drive.google.com/file/d/1XkkIvRzfLpiqzkJjBeTQHF-VMr9KhkeA/view?usp=sharing)
|