Сложность времени для вставки k элементов в двоичную кучу, содержащую n элементов

Какова временная сложность вставки k новых элементов в двоичную кучу, содержащую уже n элементов? У меня есть ограничение, что мне нужно вставить k элементов в 0 (k + Log n) сложности.

Подсказка: используйте восходящий подход, аналогичный тому, который используется для построения кучи.


person user2454830    schedule 08.05.2014    source источник
comment
Чтобы вставить 1 элемент, вам нужно log n раз. Таким образом, чтобы вставить k элементов, это будет O (k log n).   -  person Mohit Jain    schedule 19.01.2015


Ответы (1)


На этот вопрос нет простого ответа.

Вставка двоичной кучи будет иметь среднюю сложность O(1) и в худшем случае O(log N). Сложность останется в пределах этой границы независимо от k, но фактическое время, необходимое для завершения операции (не временная сложность; я полагаю, вы можете путать термины), будет зависеть от реализации, платформы и направления ветра.

Ближе к конкретному ответу с точки зрения времени является то, что время, необходимое для вставки k элементов, в лучшем случае будет линейно пропорционально k, а в худшем случае пропорционально log (x), интегрированному от N до k+N. Для N, значительно превышающего k, мы можем аппроксимировать время, затрачиваемое на пропорционально k log N.

Для получения дополнительной информации см.: http://en.wikipedia.org/wiki/Binary_heap.

person quant    schedule 08.05.2014
comment
Так почему же ответ сложнее, чем просто: O(k) для среднего и O(k log(n)) для наихудшего случая? - person Andriy Tylychko; 08.05.2014
comment
Поскольку k log (N) пропорционально времени, затраченному на первую вставку, умноженному на k, это хорошее приближение для k ‹‹ N, которое не указывается в OP. Фактическая сумма будет пропорциональна log N для первой вставки, log (N+1) для второй, и так до тех пор, пока мы не дойдем до log (N+k). Таким образом, общее затраченное время равно интегралу по этому диапазону, умноженному на k. - person quant; 08.05.2014
comment
Итак, у нас есть O (k log (n + k)) - person Andriy Tylychko; 08.05.2014
comment
@AndyT, это хуже, чем в худшем случае... - person quant; 08.05.2014
comment
Как вы поняли, что средняя сложность вставки равна O(1)? Похоже, это наилучший случай. Худший случай действительно O(log n). - person Jim Mischel; 08.05.2014
comment
@JimMischel смотрите ссылку внизу поста. - person quant; 10.05.2014
comment
Вы знаете, я много раз просматривал эту страницу и никогда не замечал обсуждения средней сложности. Я просто знал, что вставка в двоичную кучу - это O (log n). Спасибо, что заставил меня это прочитать. - person Jim Mischel; 11.05.2014