# Отчет. Лабораторная работа 6

## Описание
В рамках лабораторной работы была реализована программа, которая производит вычисление детерминанта матрицы
с применением последовательного и паралелльного алгоритма.

В качестве способа нахождения определителя матрицы был выбран алгоритм нахождения путем разложения по столбцу (строке). 
При данном подходе определитель находится как сумма произведений элементов выбранной строки на их алгебраические дополнения.
Была произведена небольшая оптимизация алгоритма - выбор строки для разложения основывался на количестве нулевых элементов в ней. 
Чем больше нулей в строке - тем меньше будет выполняться подзадач в алгоритме.

Результаты представлены на следующих изображениях:

![results](images/results.PNG)

Как мы можем увидеть, производительность паралелльной реализации на маленьких матрицах ниже, чем у последовательного подхода, 
это связано с дополнительными действиями по созданию и управлению потоками. Однако с увеличением размера матриц мы можем 
наблюдать увеличение производительности. Но на больших размерах (от 12х12) матриц алгоритм становится довольно медленным 
вне зависимости от применения многопоточности.

## Как запустить
Необходимо иметь установленную JDK 21. Можно воспользоваться встроенным в нее компилятором (javac), а затем запустить исполняемый файл (java)
или запускать из среды разработки.

## Видео-отчет
Работоспособность лабораторной работы можно оценить в следующем [видео](https://disk.yandex.ru/i/-sWDKdW3Q-vbHg).