$ \ Phi_1= 1 $ или $ \ phi_1= 2 $ для dynamic $ \ text {table-state} $, где $ \ phi_i $ - это потенциальная функция после $ i $ Th Thap, согласно CLR
Вопрос
Ниже приходит следующее из раздела Динамические таблицы , Введение в алгоритмы 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 $ .
Если
$$ \ 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 >.
В этой ситуации стоимость
Мы видим, что $ \ 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 $Я не совсем понимаю, где я делаю ошибку.
Решение
Вы поймали экземпляр печально известной ошибки в этом популярном учебном заведении, имя которого мы не будем упоминаться снова.
Чтобы повторить, правильно, что «стоимость
Первый $ \ 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 $ , правильное значение.