Страницы

Поиск по вопросам

вторник, 9 октября 2018 г.

Программно определить вычислительную сложность неизвестного алгоритма JS

Есть функция f : неизвестный алгоритм принимающий на вход одномерный массив . Есть коллекция массивов различной длины data каждый из которых передаю в f. Необходимо написать функцию результатом которой будет строка оценивающая вычислительную сложность алгоритма в f. Функция должна различать O(n), O(n2), O(n3), O(ln(n))
Есть ли пример как программно вычисляется вычислительная сложность алгоритма? Буду благодарен любым ссылкам и материалам, желательно с простейшими примерами.


Ответ

Грубо - если данные достаточно разных размеров - отличающиеся на порядки - можно пытаться построить зависимость времени работы от размера и посмотреть, для какого из вариантов корреляция будет выше.
Но обычно вмешивается столько других факторов, что сказать абсолютно точно абсолютно уверенно практически нереально. Например, при T=N + 0.00000001*N^2 при том, что алгоритм - O(N2), эксперимент при реальных N даст O(N)...

Комментариев нет:

Отправить комментарий