![]()  | 
![]() ![]() ![]() ![]()  | 
![]()  | 
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 ::
реклама  |