Насколько я понимаю, метод Штрассена для умножения матриц должен быть самым быстрым ... но метод "Разделяй и властвуй" явно самый быстрый в моем тестировании ... Я что-то не так делаю? Или это правильно?
Инструкции были следующими: «Общее время, затраченное на выполнение, делится на количество раз, которое алгоритм выполняет для получения времени, необходимого для решения данного случая»
Так что у меня просто есть отдельный «counter ++» в каждом методе и делю время «записано / counter ++»
Пока вот мои времена: (по порядку сверху / вниз: классика, разделяй и властвуй, страссен) (размер = размер матрицы)
размер 2
Истекшее время: 8660 нано-секунд
Истекшее время: 3849 нано-секунд
Истекшее время: 5377 нано-секунд
размер 4
Истекшее время: 24864 нано-секунды
Истекшее время: 3080 нано-секунд
прошедшего времени: 5229 нано-секунд
размер 8
Истекшее время: 125435 нано-секунд
Истекшее время: 2920 наносекунд
Истекшее время: 5196 нано-секунд
размер 16
Истекшее время: 867149 нано-секунд
Истекшее время: 1559 нано-секунд
Истекшее время: 2853 нано-секунды
размер 32
Истекшее время: 5191721 нано-секунд
Истекшее время: 972 нано-секунды
Истекшее время: 1722 наносекунды
размер 64
Истекшее время: 8155785 нано-секунд
Истекшее время: 874 нано-секунды
Истекшее время: 1696 нано-секунд
ОБРАЗЕЦ ВЫХОДА
Вот пример моего вывода для матрицы размера 4:
1-я случайная сгенерированная матрица:
10 57 33 70
6 12 38 70
20 41 65 98
83 0 31 73
2-я случайная сгенерированная матрица:
11 70 54 79
2 51 38 71
27 53 37 86
48 87 20 41
Классическая матрица умножения:
4475 11446 5327 10545
4476 9136 3586 7464
6761 15462 7003 14099
5254 13804 7089 12216
Прошедшее время: 21232 наносекунды
Матрица умножения «разделяй и властвуй»:
4475 11446 5327 10545
4476 9136 3586 7464
6761 15462 7003 14099
5254 13804 7089 12216
Прошедшее время: 3042 наносекунды
Матрица умножения Штрассена:
4475 11446 5327 10545
4476 9136 3586 7464
6761 15462 7003 14099
5254 13804 7089 12216
Прошедшее время: 5303 наносекунды