При выполнении операции
Операция
При операции
Утверждение.
Время выполнения операции
где $$k$$ — количество верхних пустых элементов.
При операции
Операция
Операция
Операция
| УДАЛИТЬ УЗЕЛ | $$O(1)$$ |
| НАЙТИ ЭЛЕМЕНТ С МИНИМАЛЬНЫМ КЛЮЧОМ | $$O(k \max\{1, \log n/(k + 1)\})$$ |
| УДАЛИТЬ ЭЛЕМЕНТ С МИНИМАЛЬНЫМ КЛЮЧОМ | $$O(k \max\{1, \log n / (k + 1)\})$$ |
| СЛИТЬ | $$O(1)$$ |
| ВСТАВИТЬ | $$O(1)$$ |
| ОБРАЗОВАТЬ ОЧЕРЕДЬ | $$O(n)$$ |
| УМЕНЬШИТЬ КЛЮЧ | $$O(1)$$ |
Определим потенциал коллекции куч как общее количество содержащихся в ней тяжелых узлов. Пусть $$P_j$$ — потенциал коллекции после выполнения $$j$$ -й операции.
Утверждение. Время $$T$$ выполнения $$m$$ операций СЛИТЬ, примененных к коллекции, состоящей из $$(m + 1)$$ куч с нулевым потенциалом, является величиной $$O(m \log n)$$, где $$n$$ — общее количество узлов в коллекции.
Доказательство. Пусть $$i$$ -я операция заключается в слиянии куч $$h_1$$ и $$h_2$$ в результирующую кучу $$h$$. Пусть перед ее выполнением $$H_1$$ и $$H_2$$ — количества тяжелых узлов в правых путях куч $$h_1$$ и $$h_2$$ соответственно, $$L_1$$ и $$L_2$$ — количества легких узлов в этих путях, $$Q_1$$, $$Q_2$$ — количества тяжелых узлов в остальных частях куч.
Время выполнения этой операции с точностью до постоянного множителя оценивается сверху величиной $$C_i = (H_1 + L_1) + (H_2 + L_2)$$.
Подсчитаем изменение $$\Dl P_i$$ потенциала при ее выполнении. Имеем$$\eq*{ P_{i-1} = H_1 + Q_1 + H_2 + Q_2. }$$
По завершении этой операции тяжелые узлы правых путей становятся легкими, их количество равно $$H_1 + H_2$$. Легкие узлы правых путей могут как стать тяжелыми, так и остаться легкими, их будет не более $$L_1 + L_2$$ штук, а количества тяжелых узлов в остальной части обоих деревьев $$Q_1 + Q_2$$ не изменились. Следовательно, количество $$P_i$$ тяжелых узлов после выполнения операции удовлетворяет неравенству
$$\eq*{ P_i \le L_1 + Q_1 + L_2 + Q_2. }$$Таким образом, получаем изменение потенциала
$$\Dl P_i = P_i - P_{i - 1} \le (L_1 + Q_1 + L_2 + Q_2) - (H_1 + Q_1 + H_2 + Q_2) = L_1 + L_2 - H_1 - H_2$$и, следовательно,
$$\eq*{ C_i + \Dl P_i \le (H_1 + L_1 + H_2 + L_2) + (L_1 + L_2 - H_1 - H_2) = 2(L_1 + L_2). }$$Из определения легкого узла следует, что количество $$L_i$$ легких узлов в куче $$h_i$$ $$(i = 1, 2)$$ не превосходит логарифма количества $$n_i$$ узлов в этой куче.
Следовательно,$$\eq*{ C_i+ \Dl P_i \le 2(L_1 + L_2) \le 2(\log n_1 + \log n_2) \le 2\log n_{12} \le 2\log n, }$$ где $$n_{12} = n_1 + n_2$$, а $$n$$ — общее количество узлов в исходных $$m$$ кучах.
Суммируя левую и правую части последнего неравенства по $$i = 1, 2\dts m$$, получаем, что величина $$T$$ с точностью до постоянного множителя оценивается сверху величиной, пропорциональной $$2m \log n$$, то есть принадлежит $$O(m \log n)$$.
Величина $$2\log n$$ является амортизационной оценкой времени выполнения операции СЛИТЬ, то есть величиной $$O(\log n)$$.
Замечание. Вначале коллекция, состоящая из $$m + 1$$ куч, к которым применяются $$m$$ операций СЛИТЬ, может иметь произвольное количество узлов, в сумме равное $$n$$. Важно, чтобы потенциал каждой из них, следовательно, и суммарный потенциал был равен нулю, то есть кучи не должны первоначально иметь тяжелых узлов.
Это могут быть, например, кучи, целиком являющиеся левыми путями. Крайний случай — это куча высоты $$h$$ с минимальным количеством узлов, не имеющая тяжелых узлов, а также это могут быть кучи с заполненным последним уровнем узлов. Другой крайний случай — это куча высоты $$h$$ с максимальным количеством узлов, не имеющая тяжелых узлов. Остальные варианты являются промежуточными.
Особое значение имеет случай, когда каждая из $$m + 1$$ начальных куч состоит из единственного узла.
Итак, для всех коллекций таких куч амортизационное время выполнения одной операции СЛИТЬ является величиной $$O(\log n)$$, где $$n$$ — общее количество их узлов.
| Операция | Верхняя оценка | Амортизационная оценка |
|---|---|---|
| СЛИТЬ | $$O(n)$$ | $$O(\log n)$$ |
| ВСТАВИТЬ | $$O(n)$$ | $$O(\log n)$$ |
| УДАЛИТЬ_МИНИМУМ | $$O(n)$$ | $$O(\log n)$$ |
| НАЙТИ_МИНИМУМ | $$O(1)$$ | $$O(1)$$ |
При выполнении операции
Операция
При операции
Утверждение.
Время выполнения операции
где $$k$$ — количество верхних пустых элементов.
При операции
Операция
Операция
Операция
| УДАЛИТЬ УЗЕЛ | $$O(1)$$ |
| НАЙТИ ЭЛЕМЕНТ С МИНИМАЛЬНЫМ КЛЮЧОМ | $$O(k \max\{1, \log n/(k + 1)\})$$ |
| УДАЛИТЬ ЭЛЕМЕНТ С МИНИМАЛЬНЫМ КЛЮЧОМ | $$O(k \max\{1, \log n / (k + 1)\})$$ |
| СЛИТЬ | $$O(1)$$ |
| ВСТАВИТЬ | $$O(1)$$ |
| ОБРАЗОВАТЬ ОЧЕРЕДЬ | $$O(n)$$ |
| УМЕНЬШИТЬ КЛЮЧ | $$O(1)$$ |
Определим потенциал коллекции куч как общее количество содержащихся в ней тяжелых узлов. Пусть $$P_j$$ — потенциал коллекции после выполнения $$j$$ -й операции.
Утверждение. Время $$T$$ выполнения $$m$$ операций СЛИТЬ, примененных к коллекции, состоящей из $$(m + 1)$$ куч с нулевым потенциалом, является величиной $$O(m \log n)$$, где $$n$$ — общее количество узлов в коллекции.
Доказательство. Пусть $$i$$ -я операция заключается в слиянии куч $$h_1$$ и $$h_2$$ в результирующую кучу $$h$$. Пусть перед ее выполнением $$H_1$$ и $$H_2$$ — количества тяжелых узлов в правых путях куч $$h_1$$ и $$h_2$$ соответственно, $$L_1$$ и $$L_2$$ — количества легких узлов в этих путях, $$Q_1$$, $$Q_2$$ — количества тяжелых узлов в остальных частях куч.
Время выполнения этой операции с точностью до постоянного множителя оценивается сверху величиной $$C_i = (H_1 + L_1) + (H_2 + L_2)$$.
Подсчитаем изменение $$\Dl P_i$$ потенциала при ее выполнении. Имеем$$\eq*{ P_{i-1} = H_1 + Q_1 + H_2 + Q_2. }$$
По завершении этой операции тяжелые узлы правых путей становятся легкими, их количество равно $$H_1 + H_2$$. Легкие узлы правых путей могут как стать тяжелыми, так и остаться легкими, их будет не более $$L_1 + L_2$$ штук, а количества тяжелых узлов в остальной части обоих деревьев $$Q_1 + Q_2$$ не изменились. Следовательно, количество $$P_i$$ тяжелых узлов после выполнения операции удовлетворяет неравенству
$$\eq*{ P_i \le L_1 + Q_1 + L_2 + Q_2. }$$Таким образом, получаем изменение потенциала
$$\Dl P_i = P_i - P_{i - 1} \le (L_1 + Q_1 + L_2 + Q_2) - (H_1 + Q_1 + H_2 + Q_2) = L_1 + L_2 - H_1 - H_2$$и, следовательно,
$$\eq*{ C_i + \Dl P_i \le (H_1 + L_1 + H_2 + L_2) + (L_1 + L_2 - H_1 - H_2) = 2(L_1 + L_2). }$$Из определения легкого узла следует, что количество $$L_i$$ легких узлов в куче $$h_i$$ $$(i = 1, 2)$$ не превосходит логарифма количества $$n_i$$ узлов в этой куче.
Следовательно,$$\eq*{ C_i+ \Dl P_i \le 2(L_1 + L_2) \le 2(\log n_1 + \log n_2) \le 2\log n_{12} \le 2\log n, }$$ где $$n_{12} = n_1 + n_2$$, а $$n$$ — общее количество узлов в исходных $$m$$ кучах.
Суммируя левую и правую части последнего неравенства по $$i = 1, 2\dts m$$, получаем, что величина $$T$$ с точностью до постоянного множителя оценивается сверху величиной, пропорциональной $$2m \log n$$, то есть принадлежит $$O(m \log n)$$.
Величина $$2\log n$$ является амортизационной оценкой времени выполнения операции СЛИТЬ, то есть величиной $$O(\log n)$$.
Замечание. Вначале коллекция, состоящая из $$m + 1$$ куч, к которым применяются $$m$$ операций СЛИТЬ, может иметь произвольное количество узлов, в сумме равное $$n$$. Важно, чтобы потенциал каждой из них, следовательно, и суммарный потенциал был равен нулю, то есть кучи не должны первоначально иметь тяжелых узлов.
Это могут быть, например, кучи, целиком являющиеся левыми путями. Крайний случай — это куча высоты $$h$$ с минимальным количеством узлов, не имеющая тяжелых узлов, а также это могут быть кучи с заполненным последним уровнем узлов. Другой крайний случай — это куча высоты $$h$$ с максимальным количеством узлов, не имеющая тяжелых узлов. Остальные варианты являются промежуточными.
Особое значение имеет случай, когда каждая из $$m + 1$$ начальных куч состоит из единственного узла.
Итак, для всех коллекций таких куч амортизационное время выполнения одной операции СЛИТЬ является величиной $$O(\log n)$$, где $$n$$ — общее количество их узлов.
| Операция | Верхняя оценка | Амортизационная оценка |
|---|---|---|
| СЛИТЬ | $$O(n)$$ | $$O(\log n)$$ |
| ВСТАВИТЬ | $$O(n)$$ | $$O(\log n)$$ |
| УДАЛИТЬ_МИНИМУМ | $$O(n)$$ | $$O(\log n)$$ |
| НАЙТИ_МИНИМУМ | $$O(1)$$ | $$O(1)$$ |
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.