Jump to content

Мягкая куча

В информатике мягкая куча это вариант простой структуры данных кучи , которая имеет постоянную амортизированную временную сложность для 5 типов операций. Это достигается путем тщательного «искажения» (увеличения) ключей не более чем постоянного числа значений в куче.

Определение и производительность

[ редактировать ]

Операции с постоянным временем: [1] [2]

  • create ( S ): создать новую мягкую кучу
  • вставить ( S , x ): вставить элемент в мягкую кучу.
  • meld ( S , S' ): объединить содержимое двух мягких куч в одну, уничтожив обе.
  • delete ( S , x ): удалить элемент из мягкой кучи.
  • findmin ( S ): получить элемент с минимальным ключом в мягкой куче.

Другие кучи, такие как кучи Фибоначчи, достигают большинства этих границ без каких-либо повреждений, но не могут обеспечить постоянную границу времени для критической операции удаления . Величиной коррупции можно управлять выбором параметра. , но чем меньше это значение, тем больше времени требуется на вставки: выраженное с использованием нотации Big-O , амортизированное время будет для частоты ошибок . [1] [2] Некоторые версии мягких куч позволяют операциям создания , вставки и объединения в худшем случае выполнять постоянное время, обеспечивая амортизированную, а не наихудшую производительность только для findmin и delete. [3] Как и в случае с сортировкой сравнением , эти алгоритмы получают доступ к ключам только путем сравнения; если разрешены арифметические операции над целочисленными ключами, то зависимость времени от можно свести к или (с рандомизацией) . [4]

Точнее, гарантия ошибки, обеспечиваемая мягкой кучей, заключается в следующем: каждая мягкая куча инициализируется параметром , выбранный между 0 и 1/2. Тогда в любой момент времени оно будет содержать не более поврежденные ключи, где — это количество элементов, вставленных на данный момент. Обратите внимание, что это не гарантирует, что только фиксированный процент ключей, находящихся в данный момент в куче, будет поврежден: в неудачной последовательности вставок и удалений может случиться так, что все элементы в куче будут иметь поврежденные ключи. Точно так же нет никакой гарантии, что в последовательности элементов, извлеченных из кучи с помощью findmin и delete , только фиксированный процент будет иметь поврежденные ключи: в неудачном сценарии из кучи извлекаются только поврежденные элементы. Когда ключ поврежден, значение, сохраненное для него в программной клавише, превышает его первоначально заданное значение; коррупция никогда не сможет уменьшить ценность какого-либо ключа. Операция findmin находит минимальное значение среди сохраненных в данный момент ключей, включая поврежденные. [1] [2]

Мягкая куча была разработана Бернаром Шазелем в 2000 году. Термин «коррупция» в структуре является результатом того, что Шазель назвал «совместным использованием автомобилей» в мягкой куче. Каждый узел в мягкой куче содержит связанный список ключей и один общий ключ. Общий ключ — это верхняя граница значений ключей в связанном списке. Как только ключ добавляется в связанный список, он считается поврежденным, поскольку его значение больше никогда не будет актуальным ни в одной из операций с мягкой кучей: сравниваются только общие ключи. Именно это делает мягкие кучи «мягкими»; нельзя быть уверенным, что какая-либо конкретная ценность, заложенная в него, будет искажена. Целью этих искажений является эффективное снижение информационной энтропии данных, позволяя структуре данных преодолеть теоретические информационные барьеры, касающиеся кучи. [1]

Приложения

[ редактировать ]

Несмотря на свои ограничения и непредсказуемый характер, мягкие кучи полезны при разработке детерминированных алгоритмов. Например, они использовались для достижения наилучшей на сегодняшний день сложности поиска минимального остовного дерева . [5] Другие проблемы, эффективное решение которых было упрощено с помощью мягких куч, включают в себя поиск наименьший элемент в нескольких классах структурированных наборов значений, включая деревья с кучей, отсортированные матрицы и суммы . [6]

Другим простым примером является алгоритм выбора , позволяющий найти самый маленький из группы цифры: [1]

  • Инициализировать мягкую кучу с частотой ошибок , что позволяет повредить не более 33% вставленных ключей.
  • Вставить все элементы в кучу.
  • Повторить раз: выполните операцию findmin и удалите возвращаемый ключ.
  • Позволять быть удаленным элементом, правильный ключ которого является наибольшим.
  • Сравнивать всем заданным элементам, разбейте их на подмножество меньше, чем и подмножество больше, чем , размещая элементы, равные в первое подмножество, если они были удалены, и во второе подмножество в противном случае.
  • Рекурсивно вызвать тот же алгоритм выбора в подмножестве, содержащем самый маленький.

После этапа сравнения алгоритма первое из двух подмножеств содержит все удаленные ключи, поэтому оно включает как минимум элементы.Среди элементы, которые не были удалены, максимум испорчены, так что по крайней мере являются неповрежденными. Все эти неповрежденные и неудаленные элементы должны принадлежать второму подмножеству, поскольку они больше или равны значению мягкой кучи (возможно, поврежденному) , что, в свою очередь, больше истинного значения . Таким образом, оба подмножества содержат от 33% до 66% элементов. Поскольку каждый уровень рекурсии уменьшает размер задачи в постоянный коэффициент, общее время работы алгоритма может быть ограничено геометрической прогрессией , показывая, что оно . [1]

  1. ^ Jump up to: а б с д и ж Шазель, Бернар (ноябрь 2000 г.). «Мягкая куча: примерная очередь с приоритетами и оптимальной частотой ошибок» (PDF) . Журнал АКМ . 47 (6): 1012–1027. CiteSeerX   10.1.1.5.9705 . дои : 10.1145/355541.355554 . S2CID   12556140 .
  2. ^ Jump up to: а б с Каплан, Хаим; Цвик, Ури (2009). «Упрощенная реализация и анализ мягких куч Шазель» . Материалы девятнадцатого ежегодного симпозиума ACM – SIAM по дискретным алгоритмам . Общество промышленной и прикладной математики. стр. 477–485. CiteSeerX   10.1.1.215.6250 . дои : 10.1137/1.9781611973068.53 . ISBN  978-0-89871-680-1 .
  3. ^ Каплан, Хаим; Тарьян, Роберт Э .; Цвик, Ури (2013). «Мягкие кучи упрощенные». SIAM Journal по вычислительной технике . 42 (4): 1660–1673. дои : 10.1137/120880185 . МР   3084181 .
  4. ^ Торуп, Миккель ; Замир, Ор; Цвик, Ури (2019). «Динамические упорядоченные наборы с приблизительными запросами, приблизительными кучами и мягкими кучами». В Байере, Кристель; Хацигианнакис, Иоаннис; Флоккини, Паола; Леонарди, Стефано (ред.). 46-й Международный коллоквиум по автоматам, языкам и программированию, ICALP 2019, 9–12 июля 2019 г., Патры, Греция . ЛИПИ. Том. 132. Замок Дагштуль – Центр информатики Лейбница. стр. 95:1–95:13. doi : 10.4230/LIPICS.ICALP.2019.95 .
  5. ^ Шазель, Бернар (2000). «Алгоритм минимального остовного дерева со сложностью типа, обратной Аккерману» . Журнал АКМ . 47 (6): 1028–1047. дои : 10.1145/355541.355562 . МР   1866456 .
  6. ^ Каплан, Хаим; Козма, Ласло; Замир, Ор; Цвик, Ури (2019). «Выбор из кучи, матриц с сортировкой по строкам и X + Y с использованием мягких куч». В Файнмане, Джереми Т.; Митценмахер, Майкл (ред.). 2-й симпозиум по простоте алгоритмов, SOSA 2019, 8–9 января 2019 г., Сан-Диего, Калифорния, США . ОАСИ. Том. 69. Замок Дагштуль – Центр информатики Лейбница. стр. 5:1–5:21. doi : 10.4230/OASICS.SOSA.2019.5 .
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 6d41e35577538968ea6232ff5f9f6fd2__1722262740
URL1:https://arc.ask3.ru/arc/aa/6d/d2/6d41e35577538968ea6232ff5f9f6fd2.html
Заголовок, (Title) документа по адресу, URL1:
Soft heap - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)