Я не специалист по сложности времени, но я могу попытаться помочь вам.
Если я правильно понял, ваш алгоритм применяет N фильтров к вашим данным, возможно уменьшая данные каждый раз. Каждый фильтр применяется линейно к каждому элементу набора данных. Мы будем работать над сложностью в худшем случае, так как ее легче вычислить / понять.
Давайте использовать обозначения:
n: длина вашего набора данных до применения фильтра 1. Поскольку ваши фильтры могут только уменьшить размер вашего набора данных, в худшем случае, когда ни один фильтр не уменьшает набор данных, то есть каждый фильтр применяется к n элементам.
T: сложность вашего алгоритма
Ci: сложность i-го фильтра. Поскольку я не знаю, какие данные вы используете, я не могу быть более точным.
M: количество фильтров
Итак, имеем:
T (n, M) = n C1 + n C2 + ... + n * CM
Теперь, когда вы не знаете, какова сложность фильтра, мы не можем углубиться, так как он может сильно варьироваться. Например, если фильтр применяется к целым числам и является просто порогом, сложность составляет O (1), но если он должен проверить, является ли число a простым числом, это O (log (a) ^ 6) ...
Но если вы можете оценить наихудшую сложность среди всех ваших фильтров C_worst, используя большие обозначения Oh, мы можем получить оценку:
T (n, M) = O (M n C_worst)
Пример для целых чисел: если a - это максимум вашего набора данных, а фильтр с наихудшей сложностью является линейным на целочисленном входе, мы имеем T (n, M, a) = O (M n a)