![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
ComplexityBoost , Chapter 1. Boost.Icl , Implementation
|
< |
Интервал |
Отдельный |
|
Интервал |
|
||
---|---|---|---|---|---|---|---|
|
|
O(log n) |
O(log n) |
O(log n) |
O(log n) |
O(log n) |
|
< |
best case |
O(log n) |
O(log n) |
O(log n) |
O(log n) |
O(log n) |
|
worst case |
O(n) |
O(n) |
O(n) |
O(n) |
O(n) |
||
amortized |
O(log n) |
O(log n) |
|||||
< |
O(m log(n+m)) |
O(m log(n+m)) |
O(m log(n+m)) |
||||
|
O(m log(n+m)) |
O(m log(n+m)) |
Добавлениеэлементаилипара значений элементавсегда производится влогарифмического времени, гдеnявляется числом интервалов в интервальном контейнере. Та же самая строка сложностей относится к вставке сегмента(интервал или пара значений интервала) влучшем случае, где вставленный сегмент перекрывается только снебольшимчислом интервалов в контейнере.
В наихудшем случае, когда вставленный сегмент перекрывается со всеми интервалами в контейнере, алгоритмы повторяются по всем перекрывающимся сегментам. Используя манипуляции на месте сегментов и подсказанных вставок, можно выполнять все необходимые операции на каждом этапе итерации.постоянное время. Это приводит клинейному времени наихудшего случая.сложность сложения сегментов для всех интервальных контейнеров.
После выполнения добавления наихудшего случая для<interval_set
>или<separate_interval_sets
>добавления интервала, который перекрываетnинтервалов, нам нужноnнеперекрывающихся добавленийлогарифмического времени, прежде чем мы сможем запустить другоеO(n)наихудшего добавления случая. Таким образом, у нас есть толькологарифмическое амортизированное времядля добавления интервала или пары значений интервала.
Для добавленияинтервальных контейнеровсложность составляетO(m log(n+m)]. Так длянаихудшего случая, где размеры контейнераnимравны и оба контейнера охватывают одинаковые диапазоны, сложность добавления контейнера составляетлоглайнар. В других случаях, которые часто происходят в реальных приложениях, производительность может быть намного лучше. Если добавленный контейнер<operand
>намного меньше<object
>и интервалы в<operand
>относительно малы, производительность может быть.логарифмический. Еслиммал по сравнению сnи интервалы в<operand
>велики, производительность имеет тенденцию бытьлинейной.
Статья Complexity раздела Chapter 1. Boost.Icl Implementation может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: Implementation ::
реклама |