Алгоритмы восстановления зависимостей.
Тема 8.
В ряде случаев неизвестна структура программы, и можно лишь определить время ее работы при различных размерах входных данных T(N) (сек.)
Для построения аналитической зависимости сложности программы оценивают функцию T(N) на некотором интервале [Nmin, Nmax]. Затем проводят аппроксимацию найденной кривой некоторой аналитической функции с изменением параметров функции и оценкой ошибки аппроксимации.
Как правило, в качестве такой функции используют известные функции временной сложности: O(n!), O(XN), O(NX), O(logN), O().
Этого достаточно для приближенной оценки сложности.
Если известны несколько функций аппроксимации, дающие примерно одинаковую точность, то выбирают ту из них, которая имеет минимальную сложность в качестве W(N), а с максимальной сложностью – в качестве O(N).
Пример 1:
В результате эксперимента над программой была получена таблица временных сложностей:
N | T1, сек. | T2, сек. |
~ 0,1 | ~ 0,1 | |
1,5 | 2,3 | |
3,9 | 5,9 | |
7,6 | 11,9 | |
6,1 | ||
В результате поиска аппроксимации функции была получена следующая аналитическая зависимость:
Пример 2: