$ \ Phi_1= 1 $ или $ \ phi_1= 2 $ для dynamic $ \ text {table-state} $, где $ \ phi_i $ - это потенциальная функция после $ i $ Th Thap, согласно CLR

cs.stackexchange https://cs.stackexchange.com/questions/128199

Вопрос

Ниже приходит следующее из раздела Динамические таблицы , Введение в алгоритмы cormen. эт. al.


В следующем псевдокоде мы предполагаем, что $ t $ - это объект, представляющий таблицу. Поле $ Таблица [t] $ содержит указатель на блок хранения, представляющий таблицу. Поле $ num [t] $ содержит количество элементов в таблице, а поле $ Size [T] $ - это общее количество слотов в таблице. Первоначально таблица пуста: $ num [t]= Размер [t]= 0 $ .

$ \ text {Таблица-вставка (t, x)} $

$ 1 \ Quad \ Text {Если $ size [t]= 0 $} $

$ 2 \ Quad \ Quad \ Text {Затем распределить $ table [t] $ с $ 1 $ slot} $

$ 3 \ Quad \ Quad Size [T] \ левовида 1 $

$ 4 \ Quad \ Text {Если} NUM [T]= Размер [t] $

$ 5 \ Quad \ Quad \ Text {Затем выделите $ new {\ text {-}} Таблица $ с $ 2 \ CDOT Размер [t] $ Слоты} $ $

$ 6 \ Quad \ Quad \ Quad \ Text {Вставьте все элементы в $ Table [T] $ на $ new {\ text {-}} Таблица $} $

$ 7 \ Quad \ Quad \ Quad \ Text {Бесплатный $ Таблица [T] $} $

$ 8 \ Quad \ Quad \ Quad Table [T] \ adverakraw Новый {\ Text {-}} Таблица $

$ 9 \ Quad \ Quad \ Quad Size [t] \ левовидник 2 \ размер CDOT [T] $

$ 10 \ Quad \ text {insert $ x $ на $ таблицу [t] $} $

$ 11 \ Quad Num [t] \ \ \ fendararrow num [t] + 1 $

Для амортизированного анализа для последовательности $ n $ $ \ text {Таблица} $ Потенциальная функция, которая они выбирают следующим образом,

$$ \ phi (t)= 2.num [t] --size [t] $$

Для анализа амортизированной стоимости $ i $ th $ \ text {Таблица} $ Работа, мы позволяем $ num_i $ обозначают количество элементов, хранящихся в таблице после $ i $ Операция, $ size_i $ обозначает общий размер таблицы после $ i $ Th action $ \ phi_i $ Обозначим потенциал после $ i $ Th.

Первоначально у нас есть $ num_0= 0, size_0= 0 $ и $ \ phi_0= 0 $ .

Если $ i $ it action не вызывает расширение, то у нас есть $ size_i= size_ {II} $ и $ num_i= num_ {i-1} +1 $ , амортизированная стоимость операции $ \ widehat {c_i} $ - это амортизированная стоимость и $ C_I $ - это общая стоимость.

$$ \ sidehat {c_i}= c_i + \ phi_i- \ phi_ {i-1}= 3 \ text {(детали не показаны)} $$ < / P >.

Если $ i $ th action, вызывает расширение, то у нас есть $ size_i= 2. size_ {i-1} $ и $ size_ {i-1}= num_ {i-1}= num_i -1 $ , так что еще раз, < / P >.

$$ \ sidehat {c_i}= c_i + \ phi_i- \ phi_ {i-1}= 3 \ text {(детали не показаны)} $$ < / P >.


Теперь проблема в том, что они не делают расчетов для $ \ widehat {c_1} $ , ситуация для первой вставки Элемент в таблице (линия 1,2,3,10,11 кода выполняется только).

В этой ситуации стоимость $ C_1= 1 $ , $ \ phi_0= 0 $ и $ num_1= size_1= 1 \ Подразумевает \ phi_1= 2.1-1= 1 $

Мы видим, что $ \ phi_1= 1 \ tag 1 $

Так, $$ \ widehat {c_1}= c_1 + \ phi_1- \ phi_0= 2 $$

Но текст говорит, что амортизированная стоимость - $ 3 $ , (я чувствую, что они должны были сказать, что амортизированная стоимость - это максимум $ 3 $ , от того, что я могу понять)

Более того на участке ниже,

 Сюжет

Текст представляет графически $ \ phi_1= 2 $ Какой вид противоречит

ER "> $ (1) $ , но согласно графике, если мы предположим, что $ \ phi_1= 2 $ тогда $ \ widehat {c_i}= 3, \ forall i $

Я не совсем понимаю, где я делаю ошибку.

Это было полезно?

Решение

Вы поймали экземпляр печально известной ошибки в этом популярном учебном заведении, имя которого мы не будем упоминаться снова.

Чтобы повторить, правильно, что «стоимость $ C_1= 1 $ , $ \ phi_0= 0 $ < / span> "," $ num_1= size_1= 1 $ $ \ Предполагается $ $ \ phi_1= 2 \ cdot1-1= 1 $ " и " $ \ hat {c_1}= $ $ C_1 + \ phi_1- \ phi_0 $ $= 2 $ ". Неверно указывать, что $ \ widehat c_i= 3 $ для всех $ i $ .

Первый $ \ text {t} \ scriptsize {\ text {spreate}} \ small \ text {-i} \ scriptsize \ text {nsert} $ Эксплуатация действительно особенная. Он не рассматривается как расширение, событие, которое определяется как «, в которых выполняется 5-9». Однако он не поддерживает $ size_i= size_ {I-1} $ , либо. Поэтому ни один вычислений для $ \ widehat {c_i} $ в учебнике подходит для $ \ widehat {c_1} $ .

Эта ошибка сбивает с толку, учитывая, что мы склонны полностью доверять примерным учебником, где столько внимания было уделено деталям и правильности.

С другой стороны, эта ошибка не очень важная, поскольку, как вы отмечали, она все еще удерживает, что «амортизированная стоимость не более 3».

Кстати, если вы посмотрите на рисунку в конце вопроса, он показывает потенциал в конце первого $ \ text {t} \ scriptsize { \ Text {Seip}} \ Small \ Text {-i} \ scriptsize \ text {nsert} $ Работа, $ \ phi_1= 1 $ , правильное значение.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с cs.stackexchange
scroll top