Динамические проблемы в теории вычислительной сложности — это проблемы, сформулированные в терминах изменения входных данных. В наиболее общем виде проблема этой категории обычно формулируется следующим образом:
Задачи этого класса имеют следующие показатели сложности:
Общий набор вычислений для динамической задачи называется динамическим алгоритмом .
Многие алгоритмические задачи, сформулированные в терминах фиксированных входных данных (в данном контексте называемые статическими задачами и решаемые статическими алгоритмами ), имеют содержательные динамические версии.
Инкрементные алгоритмы , или онлайн-алгоритмы , — это алгоритмы, в которых допускается только добавление элементов, возможно, начиная с пустых/тривиальных входных данных.
Декрементные алгоритмы — это алгоритмы, в которых допускается только удаление элементов, начиная с инициализации полной структуры данных.
Если разрешены как добавления, так и удаления, алгоритм иногда называют полностью динамическим .
Задача может быть решена за O(N) времени.
Хорошо известным решением этой проблемы является использование самобалансирующегося бинарного дерева поиска . Оно занимает место O(N), может быть изначально построено за время O(N log N) и обеспечивает время вставки, удаления и запроса в O(log N).
Для заданного графа сохранить его параметры, такие как связность, максимальная степень, кратчайшие пути и т. д., когда разрешены вставка и удаление его ребер. [1]