Вопросы с тегом «data-structures»

Вопросы о способах хранения данных, чтобы их можно было выгодно использовать в алгоритмах.

92
Каковы причины для изучения различных алгоритмов / структур данных, служащих одной и той же цели?

Я задавался вопросом об этом вопросе, так как я был студентом. Это общий вопрос, но я приведу примеры ниже. Я видел много алгоритмов - например, для задач с максимальным потоком я знаю около 3 алгоритмов, которые могут решить эту проблему: Ford-Fulkerson, Edmonds-Karp & Dinic, причем Dinic...

71
(Когда) поиск по хеш-таблице O (1)?

Часто говорят, что поиск в хеш-таблице работает в постоянное время: вы вычисляете значение хеш-функции, которое дает вам индекс для поиска в массиве. Все же это игнорирует столкновения; в худшем случае каждый предмет попадает в одно и то же ведро, и время поиска становится линейным (...

58
Почему лучше использовать простое число в качестве мода в функции хеширования?

Если у меня есть список значений ключей от 1 до 100, и я хочу организовать их в массив из 11 блоков, меня научили формировать функцию мода H=kmod 11H=kmod 11 H = k \bmod \ 11 Теперь все значения будут размещены один за другим в 9 строк. Например, в первом сегменте будет . Во втором будет и т....

46
Почему красно-черные деревья так популярны?

Кажется, что везде, где я смотрю, структуры данных реализуются с использованием красно-черных деревьев ( std::setв C ++, SortedDictionaryв C # и т. Д.) Только что покрыв (a, b), красно-черные и AVL деревья в своем классе алгоритмов, вот что я получил (также из бесед с профессорами, просмотра...

46
Существует ли приоритетная очередь с экстрактами ?

Существует множество структур данных, которые реализуют интерфейс очереди приоритетов: Вставить: вставить элемент в структуру Get-Min: вернуть самый маленький элемент в структуре Extract-Min: удалить самый маленький элемент в структуре Распространенными структурами данных, реализующими этот...

41
Представьте себе красно-черное дерево. Всегда ли есть последовательность вставок и удалений, которая ее создает?

Давайте предположим следующее определение красно-черного дерева: Это двоичное дерево поиска. Каждый узел окрашен в красный или черный цвет. Корень черный. Два узла, соединенные ребром, не могут быть одновременно красными. Здесь должно быть хорошее определение листа NIL, как на вики. Лист NIL...

41
Эффективные структуры данных для построения быстрой проверки орфографии

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

35
Почему данные в информатике считаются дискретными?

Я понимаю, что «структура» данных полностью зависит от булевой алгебры, но: Почему данные считаются дискретным математическим объектом, а не непрерывным? С этим связано: Какие недостатки или инварианты нарушаются при структурировании данных как непрерывного объекта в измерениях?ррr Я не эксперт в...

32
Повлияет ли аппаратное обеспечение / реализация на временную / пространственную сложность алгоритмов?

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

31
В чем разница между осевшими деревьями и попытками Патриции?

Я узнаю о радикальных деревьях (иначе говоря, сжатых попытках) и попытках Патриции, но я нахожу противоречивую информацию о том, действительно ли они одинаковы. Основное дерево может быть получено из обычного (несжатого) дерева путем объединения узлов с их родителями, когда узлы являются...

30
Хеш-таблицы против бинарных деревьев

При реализации словаря («Я хочу просмотреть данные клиентов по их идентификаторам»), типичными структурами данных являются хеш-таблицы и двоичные деревья поиска. Я знаю, например, что библиотека C ++ STL реализует словари (они называют их картами), используя (сбалансированные) деревья двоичного...

30
Не все красно-черные деревья сбалансированы?

Интуитивно понятно, что «сбалансированные деревья» должны быть деревьями, где левое и правое поддеревья в каждом узле должны иметь «примерно одинаковое» количество узлов. Конечно, когда мы говорим о том, что красно-черные деревья * (см. Определение в конце) сбалансированы, мы на самом деле имеем в...

28
Генерация комбинаций из набора пар без повторения элементов

У меня есть набор пар. Каждая пара имеет форму (x, y), так что x, y принадлежат целым числам из диапазона [0,n). Итак, если n равно 4, то у меня есть следующие пары: (0,1) (0,2) (0,3) (1,2) (1,3) (2,3) У меня уже есть пары. Теперь я должен построить комбинацию, используя n/2пары, чтобы ни одно из...

28
Почему пустой тип C не аналогичен пустому / нижнему типу?

Википедия, а также другие источники, которые я обнаружил в списке voidтипа C как тип единицы, а не пустой тип. Мне кажется, что это сбивает с толку, так как мне кажется, что оно voidлучше подходит под определение пустого / нижнего типа voidНасколько я могу судить, ценности не обитают . Функция с...

28
Существует ли структура данных «стек строк», которая поддерживает эти строковые операции?

Я ищу структуру данных , которая хранит множество строк над набором символов , способных выполнять следующие операции. Обозначим через D ( S ) в качестве структуры данных , хранящей множество строк S .ΣΣ\SigmaD(S)D(S)\mathcal{D}(S)SSS Add-Prefix-Setна : для некоторого множества T (возможно, пустых)...

26
Два определения сбалансированных бинарных деревьев

Я видел два определения сбалансированных бинарных деревьев, которые выглядят по-другому для меня. Бинарное дерево сбалансировано, если для каждого узла установлено, что количество внутренних узлов в левом поддереве и количество внутренних узлов в правом поддереве отличаются не более чем на 1....

25
Эффективная структура картографических данных, поддерживающая приблизительный поиск

Я ищу структуру данных, которая поддерживает эффективный приблизительный поиск ключей (например, расстояние Левенштейна для строк), возвращая максимально возможное совпадение для клавиши ввода. Наилучшей структурой данных, которую я нашел до сих пор, являются деревья Буркхарда-Келлера , но мне было...

25
Есть ли фильтр против Блума?

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

25
Почему алгоритм вращения Splay Tree учитывает как родительский, так и родительский узел?

Я не совсем понимаю, почему при ротации в структуре данных Splay Tree учитывается не только родительский узел рейтингового узла, но и прародитель (операция zig-zag и zig-zig). Почему следующее не работает: Когда мы вставляем, например, новый узел в дерево, мы проверяем, вставляем ли мы в левое или...