Image

Почему не существует единственного наилучшего способа хранения информации

Математика структур данных помогает нам понять, как различные системы хранения данных предполагают разные компромиссы между временем, памятью и другими ресурсами. Комментарий Сохранить статью Прочитать позже

На разделенном экране изображен стол с компьютером, клавиатурой, мышью и настольными принадлежностями, такими как растение, кружка кофе, бумага, календарь, наушники. Слева показан аккуратно расставленный стол, где все находится на своих местах, справа — беспорядок, когда все свалено друг на друга.

В сфере хранения данных иногда лучше смириться с некоторым беспорядком.

Введение

Так же, как не существует единственного наилучшего способа организовать книжную полку, не существует и универсального решения для хранения информации.

Рассмотрим простую ситуацию, когда вы создаете новый цифровой файл. Вашему компьютеру необходимо быстро найти место для его сохранения. Если позже вы захотите его удалить, машина должна быстро найти нужные биты для стирания. Исследователи стремятся разработать системы хранения данных, называемые структурами данных, которые обеспечивают баланс между временем, необходимым для добавления данных, временем, необходимым для их последующего удаления, и общим объемом памяти, необходимым для системы.

Чтобы понять эти сложности, представьте, что все ваши книги лежат в ряд на одной длинной полке. Если они рассортированы по алфавиту, вы можете быстро найти любую книгу. Но каждый раз, когда вы приобретаете новую книгу, вам потребуется время, чтобы найти её на нужном месте. И наоборот, если вы размещаете книги там, где есть место, вы экономите время сейчас, но потом их будет трудно найти. Этот компромисс между временем на размещение и временем на поиск может не быть проблемой для библиотеки с одной полкой, но вы можете представить, насколько это может стать обременительным при наличии тысяч книг.

Вместо полки можно расставить 26 ящиков с алфавитными надписями и распределить книги по ящикам в зависимости от первой буквы фамилии автора. Когда вы покупаете новую книгу, вы сразу понимаете, в какой ящик её нужно положить, и когда вам нужно достать книгу, вы сразу же знаете, где её искать. В некоторых ситуациях и вставка, и извлечение книг могут быть намного быстрее, чем если бы вы хранили их на одной длинной полке.

Конечно, у этой системы ящиков есть свои проблемы. Найти нужные книги можно мгновенно только если в каждом ящике по одной книге; в противном случае придётся долго искать. В крайнем случае, если все ваши книги — это произведения Азимова, Этвуд и Остин, вы снова столкнётесь с проблемой одной длинной полки, плюс к этому у вас будет куча пустых ящиков, загромождающих гостиную.

Специалисты по информатике часто изучают структуры данных, называемые хеш-таблицами, которые напоминают более сложные версии этой простой системы ячеек. Хеш-таблицы вычисляют адрес хранения для каждого элемента на основе известного свойства этого элемента, называемого ключом. В нашем примере ключом для каждой книги является первая буква фамилии автора. Но этот простой ключ делает вероятным, что некоторые ячейки будут гораздо полнее других. (Например, у немногих авторов, пишущих на английском языке, фамилия начинается с буквы X.) Лучший подход — начать с полного имени автора, заменить каждую букву в имени числом, соответствующим ее положению в алфавите, сложить все эти числа и разделить сумму на 26. Остаток — это некоторое число от нуля до 25. Используйте это число, чтобы присвоить книге ячейку.

Такое математическое правило преобразования ключа в адрес хранилища называется хеш-функцией. Грамотно разработанная хеш-функция гарантирует, что элементы, как правило, будут распределены относительно равномерно по контейнерам, поэтому вам не придется тратить много времени на поиск в каждом контейнере.

Если вы хотите еще больше сократить время извлечения, вы можете использовать больше контейнеров. Но это приводит к другому компромиссу: эти контейнеры будут занимать место, даже если в итоге окажутся пустыми.

Этот компромисс между пространством и временем является неотъемлемой особенностью хеш-таблиц — это цена, которую приходится платить за избежание противоречия между временем вставки и временем извлечения, которое характерно для более простых структур данных. Спустя более 70 лет после изобретения хеш-таблиц, специалисты по информатике продолжают открывать новые грани их фундаментальных свойств. Недавно они наконец разработали версию, которая обеспечивает идеальный баланс между пространством и временем. А в прошлом году студент опроверг давнее предположение о минимальном времени, необходимом для поиска конкретного элемента в почти заполненной хеш-таблице.

Куча приоритетов

Хеш-таблицы хорошо работают, когда невозможно предсказать, какой фрагмент данных потребуется получить следующим. Но это не всегда так. Представьте, что вы пытаетесь выполнить задачи из списка дел, но вам постоянно назначают новые задачи с разными сроками выполнения. Вы хотите быстро добавлять новые элементы в список дел, но вас не интересует получение этих элементов, пока они не станут для вас первоочередной задачей.

В этом случае лучшим вариантом будет структура данных, называемая кучей. Как следует из названия, куча — это несколько хаотичный подход к хранению данных. По сути, это математическая версия кучи вещей: одни элементы хранятся над другими, и к этим элементам, расположенным выше, легче получить доступ. Элемент с наивысшим приоритетом всегда находится на вершине кучи, откуда его можно мгновенно извлечь. Нижние слои будут более неорганизованными, но вам не нужно беспокоиться об относительном положении этих элементов с низким приоритетом.

Простейшая реализация этой базовой идеи использует математический объект, называемый бинарным деревом, которое представляет собой сеть узлов особой формы: наверху находится единственный узел, и каждый узел соединен с двумя узлами, расположенными непосредственно под ним.

Представим себе бинарное дерево, содержащее элементы списка дел. Каждый узел может хранить один элемент, и каждый элемент помечен числом, обозначающим срок его выполнения. Элементы с высоким приоритетом получают меньшие номера.

Бинарное дерево, содержащее узлы с числами. На вершине находится узел с числом один, который разветвляется ниже на узел «три» и узел «пять». Узел «три» далее делится на узлы с числами «восемь» и «четыре», а узел «пять» далее делится на узел «семь» и незаполненный узел.Бинарное дерево, содержащее узлы с числами. На вершине находится узел с числом один, который разветвляется ниже на узел «три» и узел «пять». Узел «три» далее делится на узлы с числами «восемь» и «четыре», а узел «пять» далее делится на узел «семь» и незаполненный узел.

Каждый новый предмет помещается в пустое место на текущем самом нижнем слое.

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

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

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

Эта процедура гарантирует, что задача с наивысшим приоритетом всегда будет подниматься наверх. Более того, процедура чрезвычайно быстрая. Даже в кошмарном сценарии, когда у вас в списке дел 1000 задач и постоянно появляются новые, хранение их в куче гарантирует, что для перемещения каждой новой задачи на соответствующую позицию потребуется не более девяти обменов. Как только вы завершите самую срочную задачу и удалите её из кучи, вы сможете быстро поднять новую задачу с наивысшим приоритетом из нижележащего слоя.

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

В интернете полно книг по самосовершенствованию, полных противоречивых советов о том, как лучше организовать свои вещи. Если компьютерная наука чему-то и учит, так это тому, что идеального решения не существует — у каждого подхода есть свои компромиссы. Но если для вас одни вещи важнее других, не бойтесь оставить после себя немного беспорядка.

Источник: www.quantamagazine.org

❌ Нет тегов для этой статьи

ОСТАВЬТЕ СВОЙ КОММЕНТАРИЙ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Каталог бесплатных опенсорс-решений, которые можно развернуть локально и забыть о подписках

галерея

Фото сгенерированных лиц: исследование показывает, что люди не могут отличить настоящие лица от сгенерированных
Нейросети построили капитализм за трое суток: 100 агентов Claude заперли…
Скетч: цифровой осьминог и виртуальный мир внутри компьютера с человечком.
Сцена с жестами пальцами, где один жест символизирует "VPN", а другой "KHP".
‼️Paramount купила Warner Bros. Discovery — сумма сделки составила безумные…
Скриншот репозитория GitHub "Claude Scientific Skills" AI для научных исследований.
Структура эффективного запроса Claude с элементами задачи, контекста и референса.
Эскиз и готовая веб-страница платформы для AI-дизайна в современном темном режиме.
ideipro logotyp
Image Not Found
Звёздное небо с галактиками и туманностями, космос, Вселенная, астрофотография.

Система оповещения обсерватории Рубина отправила 800 000 сигналов в первую ночь наблюдений.

Астрономы будут получать оповещения о небесных явлениях в течение нескольких минут после их обнаружения. Теренс О'Брайен, редактор раздела «Выходные». Публикации этого автора будут добавляться в вашу ежедневную рассылку по электронной почте и в ленту новостей на главной…

Мар 2, 2026
Женщина с длинными тёмными волосами в синем свете, нейтральный фон.

Расследование в отношении 61-фунтовой машины, которая «пожирает» пластик и выплевывает кирпичи.

Обзор компактного пресса для мягкого пластика Clear Drop — и что будет дальше. Шон Холлистер, старший редактор Публикации этого автора будут добавляться в вашу ежедневную рассылку по электронной почте и в ленту новостей на главной странице вашего…

Мар 2, 2026
Черный углеродное волокно с текстурой плетения, отражающий свет.

Материал будущего: как работает «бессмертный» композит

Учёные из Университета штата Северная Каролина представили композит нового поколения, способный самостоятельно восстанавливаться после серьёзных повреждений.  Речь идёт о модифицированном армированном волокном полимере (FRP), который не просто сохраняет прочность при малом весе, но и способен «залечивать» внутренние…

Мар 2, 2026
Круглый экран с изображением замка и горы, рядом электронная плата.

Круглый дисплей Waveshare для креативных проектов

Круглый 7-дюймовый сенсорный дисплей от Waveshare создан для разработчиков и дизайнеров, которым нужен нестандартный экран.  Это IPS-панель с разрешением 1 080×1 080 пикселей, поддержкой 10-точечного ёмкостного сенсора, оптической склейкой и защитным закалённым стеклом, выполненная в круглом форм-факторе.…

Мар 2, 2026

Впишите свой почтовый адрес и мы будем присылать вам на почту самые свежие новости в числе самых первых